Skip to content
  • Ragnar Thomsen's avatar
    Fix drag'n'drop extraction of multiple selected archive entries · 2072d0d4
    Ragnar Thomsen authored
    This commit implements multi-selection drag'n'drop extraction. This is
    used when dragging multiple files from Ark to e.g. Dolphin for
    extraction. It's based partially on work done by Raphael in
    the multiple-dnd-selection git branch.
    
    Dragged files are extracted without path. Dragged folders are extracted
    without path, but with all folders/files beneath them
    extracted with relative path (i.e. path beneath the selected folder).
    
    A struct called FileRootNodePair is added to Kerfuffle::Archive, which
    contains two strings (the filename with path and a root node).
    A FileRootNodePair is passed for each entry to be extracted in a
    QVariantList to ArchiveModel::extractFiles(), which creates the
    ExtractJob. All children of folders are added to the QVariantList. The
    QVariantList is in turn passed to CliPlugin::copyFiles and hence
    LibArchiveInterface::copyFiles(). The latter is modified to remove the
    specific rootnode from each file when extracting.
    
    The CLI plugins, e.g. clizip and clirar, still extract with full path,
    due to not supporting individual RootNodes. However, this is a separate
    issue and should be fixed separately.
    
    BUG: 187152
    FIXED-IN: 15.08.1
    REVIEW: 124018
    2072d0d4