Не-обновление информационной панели при движении по плагиновой Topic is solved

Столкнулись с проблемой в использовании макросов? Здесь можно получить помощь.
Post Reply
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

Не-обновление информационной панели при движении по плагиновой

Post by buniak_a_h »

Вопрос родился из скрипта "древесной" панели.
Добавил в функцию GetOpenPanelInfo формирование InfoLines, которые должны выводиться на информационной панели. И тут выяснилось, что при "движении" по панели с деревом содержимое информационной панели не перерисовывается (хотя тот кусок кода, который переформировывает информационные строки, выполняется). Это специально так сделано, или я что-то не сделал (например, надо запустить panel.RedrawPanel)?
----
Пример кода - по ссылке, в конце функции mod.GetOpenPanelInfo добавить строчки:

Code: Select all

  local aCurr = panel.GetCurrentPanelItem(handle)
  if aCurr and aCurr.FileName ~= '..' then
   local InfoLines = {{Text=aCurr.FileName; Data=tostring(aCurr.FileSize); }}
   OpenPanelInfo.InfoLines = InfoLines
   OpenPanelInfo.InfoLinesNumber = 1
  else
   OpenPanelInfo.InfoLines = {}
   OpenPanelInfo.InfoLinesNumber = 0
  end
Чтобы эффект проявился, надо на пассивной панели открыть информационную; а если она открыта - погасить и показать её.
Shmuel
Posts: 6819
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

Не-обновление информационной панели при движении по плагиновой

Post by Shmuel »

GetOpenPanelInfo, как и отражено в её названии, запрашивает информацию о панели, безотносительно текущего элемента.
При перемещении курсора по панели она, как мне кажется, не вызывается (впрочем, вы можете проверить).

P.S. Проверил - вызывается 4 раза на каждое перемещение курсора.
Но это, по-видимому, вопрос, который относится к Фар API, а не к макросам.
Last edited by Shmuel on Fri 26 Mar, 2021 23:48, edited 1 time in total.
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

Не-обновление информационной панели при движении по плагиновой

Post by buniak_a_h »

Shmuel wrote: Fri 26 Mar, 2021 22:47
P.S. Проверил - вызывается 4 раза на каждое перемещение курсора.
Но это, по-видимому, вопрос, который относится к Фар API, а не к макросам.
1. Вызывается постоянно, даже без перемещения курсора. Как проверил: вставил win.OutputDebugString - струячит непрерывно.
2. Из-за (1) для уменьшения нагрузки пришлось сделать запоминание текущего элемента и вызывать только при изменении его.
3. Проблема "поборота" вызовом panel.RedrawPanel(nil, panel.IsActivePanel(handle) and 0 or 1) .
Shmuel
Posts: 6819
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

Не-обновление информационной панели при движении по плагиновой

Post by Shmuel »

buniak_a_h wrote: Sat 27 Mar, 2021 03:31 1. Вызывается постоянно, даже без перемещения курсора. Как проверил: вставил win.OutputDebugString - струячит непрерывно.
У меня такое не наблюдается.
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

Не-обновление информационной панели при движении по плагиновой

Post by buniak_a_h »

Shmuel wrote: Sat 27 Mar, 2021 10:14
buniak_a_h wrote: Sat 27 Mar, 2021 03:31 1. Вызывается постоянно, даже без перемещения курсора. Как проверил: вставил win.OutputDebugString - струячит непрерывно.
У меня такое не наблюдается.
Ну, возможно, я что-то такое делаю, из-за чего эта функция вызывается. Я, к сожалению, не нашёл описания взаимодействия функций (которые из export) в панельном модуле. Возможно, дело в том, что у меня там таймер стоит для отлавливания смещения по панели. Повесить на ивент группы PanelEvent мне не удалось; вот и молотит по таймеру.
Вопрос на самом деле был не в этом. Я формирую InfoLines, но они не отображаются, пока не вызовешь panel.RedrawPanel. Вот я и хотел узнать - это так и задумано? Я думаю, что проблема родственна не-обновлению QView из временной панели.
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

Не-обновление информационной панели при движении по плагиновой

Post by buniak_a_h »

Shmuel, поправочка. Таймер тут ни при чём. Я не знаю, что непрерывно вызывает mod.GetOpenPanelInfo.
Shmuel
Posts: 6819
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

Не-обновление информационной панели при движении по плагиновой

Post by Shmuel »

buniak_a_h wrote: Sat 27 Mar, 2021 11:41 Таймер тут ни при чём. Я не знаю, что непрерывно вызывает mod.GetOpenPanelInfo.
Метод известен - убирать всё лишнее, контролировать (не)изменение поведения.
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

Не-обновление информационной панели при движении по плагиновой

Post by buniak_a_h »

Shmuel wrote: Sat 27 Mar, 2021 12:02 Метод известен - убирать всё лишнее, контролировать (не)изменение поведения.
Убирать всё лишнее - именно так я и вычислил, что таймер ни при чём. Возможно, дело в том, что для обновления панели я использую
Контролировать неизменность - стараюсь, но, видимо, где-то упустил.
----
Там ещё странность: постоянно вызывается ProcessPanelInput с Rec={EventType=F.MENU_EVENT;CommandId=0}. Вызывается намного реже, чем GetOpenPanelInfo, но я вообще не понимаю, при чём тут Меню …
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

Не-обновление информационной панели при движении по плагиновой

Post by buniak_a_h »

Shmuel, уфф! На "чистом" ФАРе (с минимумом плагинов и макросов) GetOpenPanelInfo вызывается, как Вы и писали, 4 раза на каждое перемещение. Гадит нечто вне скрипта. Спасибо. Буду искать.
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

Не-обновление информационной панели при движении по плагиновой

Post by buniak_a_h »

Я нашёл виновника непрерывного вызова GetOpenPanelInfo. Это - плагин Drag_n_Drop. У меня версия 3.0.84.4700. Вроде, последняя. Жаль…
Last edited by buniak_a_h on Sun 28 Mar, 2021 19:34, edited 2 times in total.
Post Reply

Return to “Нужна помощь”