diff --git a/plugins/arclite/changelog b/plugins/arclite/changelog index 823572ee20..d88db3ba46 100644 --- a/plugins/arclite/changelog +++ b/plugins/arclite/changelog @@ -1,3 +1,7 @@ +drkns 19.02.2016 10:00:05 +0200 - build 229 + +1. Опция "Extract archive into separate directory" не работала при распаковке по Shift+F2. + w17 17.02.2016 17:17:19 +0300 - build 228 1. С форума: Имеется какой-то баг, связанный с работой с sfx-архивами. diff --git a/plugins/arclite/plugin.cpp b/plugins/arclite/plugin.cpp index 2a363a0c56..3372f75054 100644 --- a/plugins/arclite/plugin.cpp +++ b/plugins/arclite/plugin.cpp @@ -177,6 +177,15 @@ class Plugin { options.overwrite = oaOverwrite; options.separate_dir = triFalse; } + + const auto update_dst_dir = [&] + { + if (options.separate_dir == triTrue || (options.separate_dir == triUndef && !single_item && (op_mode & OPM_TOPLEVEL))) + { + options.dst_dir = get_separate_dir_path(dst_dir, archive->arc_name()); + } + }; + if (show_dialog) { if (!extract_dialog(options)) FAIL(E_ABORT); @@ -185,16 +194,17 @@ class Plugin { if (!is_absolute_path(options.dst_dir)) options.dst_dir = Far::get_absolute_path(options.dst_dir); dst_dir = options.dst_dir; - if (options.separate_dir == triTrue || (options.separate_dir == triUndef && !single_item && (op_mode & OPM_TOPLEVEL))) { - options.dst_dir = get_separate_dir_path(options.dst_dir, archive->arc_name()); - } + update_dst_dir(); if (!options.password.empty()) archive->password = options.password; } if (op_mode & OPM_TOPLEVEL) { if(op_mode & OPM_SILENT) + { options = batch_options; + update_dst_dir(); + } else batch_options = options; } diff --git a/plugins/arclite/project.ini b/plugins/arclite/project.ini index 159ab8cbea..96bb915bbd 100644 --- a/plugins/arclite/project.ini +++ b/plugins/arclite/project.ini @@ -2,4 +2,4 @@ MODULE = arclite VER_MAJOR = 3 VER_MINOR = 0 -VER_BUILD = 228 +VER_BUILD = 229