Page 1 of 1

Запоминание Path0 для плагиновой панели не из APanel, а из левой/правой (той, на которой открывается панель)

Posted: Wed 15 Jan, 2020 20:19
by buniak_a_h
Из заголовка ясно, но всё же поясню.
Ситуация 1: открываю на активной панели временную панель, встаю на .. и жму Enter или PdUp. Предсказуемо возвращаюсь в папку, которая была открыта до временной. Это -правильно.
Ситуация 2: открываю на пассивной панели временную панель, перехожу на неё, встаю на .. и жму Enter или PdUp. Опа! Перехожу в папку, которая и так открыта на бывшей активной (ныне - пассивной) панели. Это неудобно как минимум по трём соображениям:
1. По логике хочется вернуться в ту папку, которая была открыта на панели ДО открытия плагиновой. Более того, если HostFile не пуст, то позиционироваться на нём. Именно по такой логике работают плагиновые панели, "заходящие" в файл (архивы, например) по Enter-у и CtrlPgDn-у.
2. Бывает особенно обидно, если "зашли" во временную панель просто посмотреть(например, вспомнить имя файла), а потом хотели вернуться и поискать этот файл. А куда вернуться - забыл… Хорошо, если в историю занеслось. А если стоит Alternative history и исходная папка входит в Folders history: exclusions? Бяда...
3. Ну и открывать ту же папку, что на другой панели, есть другие способы (говорят, есть искаробочный плагин SameFolder - не смотрел. Можно также нажать Tab, AltF1 (или AltF2), букву того же диска, ещё раз Tab. Ну или элементарный марос Panel.SetPath(0, PPanel.Path, PPanel.Current))

Запоминание Path0 для плагиновой панели не из APanel, а из левой/правой (той, на которой открывается панель)

Posted: Thu 16 Jan, 2020 10:05
by John Doe
Очень многословно, хотя пожелание можно уместить в одну строку.
"При окрытии временной панели в пассивной панели в стек почему-то сохраняется директория с активной панели".

Edit
Поправка: про стек это фантазия, скорей речь о "текущей папке", которая отображается в командной строке, если стоять на элементе ".."

Запоминание Path0 для плагиновой панели не из APanel, а из левой/правой (той, на которой открывается панель)

Posted: Thu 16 Jan, 2020 10:10
by John Doe
Ещё одна связанная с этим странность: директория, открытая в пассивной панели, не сохраняется в истории, если открыть там же временную панель.

Запоминание Path0 для плагиновой панели не из APanel, а из левой/правой (той, на которой открывается панель)

Posted: Thu 16 Jan, 2020 16:10
by buniak_a_h
John Doe wrote: Thu 16 Jan, 2020 10:05 Очень многословно, хотя пожелание можно уместить в одну строку.
Вообще-то, пожелание сформулировано в заготовке темы. В одну строку. Текст сообщения - это иллюстрация тех странностей, к которым приводит нынешняя ситуация. Ну, как обоснование моей хотелки. Типа Steps To Reproduce
Про стек специально не писал, т.к. не знаю "внутренней кухни". Предположил, что папка, в которую надо возвращаться, хранится не в каком-то отдельном стеке, а прямо в Path0.
Есть перспектива, что идею реализуют? Если Вы согласны - не могли бы Ва написать на мантис?

Запоминание Path0 для плагиновой панели не из APanel, а из левой/правой (той, на которой открывается панель)

Posted: Fri 17 Jan, 2020 10:58
by John Doe
Данная проблема воспроизводится и с другими плагинами.
NetBox, ProcessList, FarDroid, ...

Запоминание Path0 для плагиновой панели не из APanel, а из левой/правой (той, на которой открывается панель)

Posted: Fri 17 Jan, 2020 13:26
by buniak_a_h
John Doe, я в курсе, но всё равно мне это не кажется правильным. Просто остальные я использую реже. Кроме ArcLite и Multiarc, но там эта проблема намного менее актуальна, т.к. плагиновая панель, как правило, открывается на активной панели. Свой панельный модуль, отражающий структуру таблиц _G, я переделал таким образом, чтобы запоминалась та панель, на которой открывается панельный модуль, а при выходе восстанавливается именно то состояние, которое было до открытия панели модуля.
На самом деле, как оказалось, запоминать левую/правую тоже не правильно: в процессе можно менять панели местами (CtrlU). Т.е. в момент открытия плагиновой панели надо определять, на какой (активной или пассивной) панели она будет открыта, и запоминать Path и Current для неё (на самом деле panel.GetPanelDirectory(…) плюс Current).