View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0000528 | Far Manager 1.7x | Command Line/Execute | public | 2008-05-06 03:56 | 2009-11-03 10:39 |
Reporter | HaRT | Assigned To | alexy | ||
Priority | normal | Severity | minor | Reproducibility | always |
Status | closed | Resolution | fixed | ||
Product Version | 1.71 | ||||
Fixed in Version | 1.75 | ||||
Summary | 0000528: Неправильное развыделение при применении одной общей команды | ||||
Description | Если по Apply command (CtrlG из файловой панели) используются такие Символы (например, !&, !@!), что выполняется одна общая команда для всех выделенных элементов, то после её окончания выделение снимается только с последнего по порядку элемента, а не со всех. | ||||
Steps To Reproduce | 1. Открыть файловую панель с несколькими элементами 2. Выделить несколько элементов вразбивку 3. Применить команду echo !& или echo !@! 4. Удостовериться, что выделение снялось только с последнего элемента | ||||
Tags | No tags attached. | ||||
Build | 2607 | ||||
|
как это сейчас работате - в строке из !& формируется список файлов, затем этот список скармливается запусатору, цикла как такового нет и в помине. соответственно после обработки делается всего одно ClearLastGetSelection(). Выход - для ApplyCommand() всегда снимать всё! выделение с панелей. |
|
Ы? |
|
> Выход - для ApplyCommand() всегда снимать всё! выделение с панелей. Тут несколько моментов: 1. Если оно будет сниматься так, чтобы могло быть восстановлено по CtrlM, то почему бы и нет? 2. Однако если какие-то запускаемые команды могут управлять Фаром извне (например, через SHPCE или через PowerShellFar --- возможно ли такое?), то более правильно будет сбрасывать только ту часть выделения, которая не была затронута выполнявшимися командами. Однако это кажется очень экзотическим случаем, да и не слишком просто аккуратно реализовать. 3. В любом случае, хорошо бы снимать выделение только с тех элементов, для которых запустить команду удалось. А если для каких-то НЕ удалось (например, имя программы зависело от имени файла, и в результате такой не нашлось), то оставлять их выделенными. |
|
>снимать выделение только с тех элементов, для которых запустить команду удалось сейчас так и сделано - результат ты видишь. |
|
>> снимать выделение только с тех элементов, для которых запустить команду удалось > сейчас так и сделано - результат ты видишь Так ведь в случае применения общей команды ко всему списку успешность запуска определяется тоже для всего выделения сразу, т.ч. и развыделение должно быть для них общим (если получилось запустить). >>> выделение с панелей Кстати, я надеюсь, тут всё же имеется в виду только активная панель? |
|
еще раз, код: \\ работаем в цикле: while (GetSelName(&strSelName,FileAttr,&strSelShortName) && !CheckForEsc()) { string strConvertedCommand; string strListName, strAnotherListName; string strShortListName, strAnotherShortListName; strConvertedCommand = strCommand; { //преобразуем метасимволы в строке из !& в строку имен файлов!! int PreserveLFN=SubstFileName(strConvertedCommand,strSelName,strSelShortName,&strListName,&strAnotherListName,&strShortListName, &strAnotherShortListName); PreserveLongName PreserveName(strSelShortName,PreserveLFN); // запустим, т.е. у нас получается пускаемся ОДИН раз, а не на каждый файл!! Execute(strConvertedCommand,FALSE,FALSE); // снели выделение с последнего обработанного... ClearLastGetSelection(); } } // вышли.. |
|
> еще раз, код Спасибо конечно. Только вот не очень понятно, к чему это. Мне казалось, что мы обсуждаем, какое поведение удобно пользователю. При чём тут этот код? |
|
нет, мы обсуждаем баг "..выделение снимается только с последнего по порядку элемента, а не со всех". |
|
> мы обсуждаем баг По существу вопроса мне нечего добавить к тому, что я высказал в 0000528:0002567 и 0000528:0002570 |
|
в 983 были сделаны изменения обработки Ctrl-G - и развыделяться стало :) |
|
Вроде ж пофикшено? почему бы не закрыть? |
|
Проверено на сборке 2607 x86 |
Date Modified | Username | Field | Change |
---|---|---|---|
2008-05-06 03:56 | HaRT | New Issue | |
2008-05-06 03:56 | HaRT | Status | new => assigned |
2008-05-06 03:56 | HaRT | Assigned To | => alexy |
2008-07-08 08:35 | samlyukov | Note Added: 0001665 | |
2008-11-16 16:19 | alexy | Assigned To | alexy => |
2008-11-16 16:19 | alexy | Status | assigned => new |
2009-02-22 07:53 | samlyukov | Note Edited: 0001665 | |
2009-02-22 07:57 | samlyukov | Note Added: 0002559 | |
2009-02-24 14:09 | HaRT | Note Added: 0002567 | |
2009-02-24 14:35 | samlyukov | Note Added: 0002569 | |
2009-02-24 14:39 | HaRT | Note Added: 0002570 | |
2009-02-24 14:46 | samlyukov | Note Added: 0002572 | |
2009-02-24 14:47 | samlyukov | Note Edited: 0002572 | |
2009-02-24 14:49 | HaRT | Note Added: 0002573 | |
2009-02-24 14:56 | samlyukov | Note Added: 0002574 | |
2009-02-24 14:59 | HaRT | Note Added: 0002575 | |
2009-06-08 19:36 | samlyukov | Note Added: 0003523 | |
2009-11-03 10:22 | JohnDoe | Note Added: 0004471 | |
2009-11-03 10:22 | JohnDoe | Status | new => feedback |
2009-11-03 10:28 | HaRT | Note Added: 0004473 | |
2009-11-03 10:28 | HaRT | Status | feedback => resolved |
2009-11-03 10:39 | alexy | Build | => 2607 |
2009-11-03 10:39 | alexy | Status | resolved => closed |
2009-11-03 10:39 | alexy | Fixed in Version | => 1.75 |
2009-11-03 10:39 | alexy | Resolution | open => fixed |
2009-11-03 10:39 | alexy | Assigned To | => alexy |