Skip to content
Commit 2072d0d4 authored by Ragnar Thomsen's avatar Ragnar Thomsen
Browse files

Fix drag'n'drop extraction of multiple selected archive entries

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
parent d3d3e592
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment