Page 1 of 2

Немодальный вьюер на часть экрана

Posted: Sun 16 Dec, 2018 02:28
by buniak_a_h
Господа, посмотрите, пожалуйста, что я делаю не так.
Пишу команду:
lua:viewer.Viewer([[DirInfo.txt]], nil, 0,0,-1,-1, far.Flags.VF_NONMODAL+far.Flags.VF_IMMEDIATERETURN)
Всё нормально, файл открывается на просмотр.
Теперь заменяю любую координату на не-умолчательную, например так:
lua:viewer.Viewer([[DirInfo.txt]], nil, 0,1,-1,-1, far.Flags.VF_NONMODAL+far.Flags.VF_IMMEDIATERETURN)
(здесь Y1 заменена с 0 на 1)
В результате строка с подсказкой по функциональным клавишам появляется на верхней строке. И при обновлении экрана (например, при прокручивании текста) она на секунду появляется опять, а потом пропадает.
Это глюк, баг или так и должно быть, просто я чего-то не понимаю?

Немодальный вьюер на часть экрана

Posted: Sun 16 Dec, 2018 03:12
by 2useven10
параметр 3/4 = -1 -- ширина/высота экрана, независимо от начальной координаты.
если начало не 0, надо задавать конечную позицию, -1 не годится.

ps: это imho - код не смотрел


update: а вообще, скорее баг

Немодальный вьюер на часть экрана

Posted: Sun 16 Dec, 2018 03:59
by 2useven10
-1, как описано в документации, заменяется на высоту/ширину.
если при этом отсчёт от 0, вторая координата будет за пределами окна.

Немодальный вьюер на часть экрана

Posted: Sun 16 Dec, 2018 05:38
by buniak_a_h
2useven10 wrote: Sun 16 Dec, 2018 03:59 -1, как описано в документации, заменяется на высоту/ширину.
если при этом отсчёт от 0, вторая координата будет за пределами окна.
На самом деле я заменил только одну координату для простоты воспроизведения. В реалии я получаю координаты панели и вывожу вьюер в них:
  1. local PPanel_Rect=panel.GetPanelInfo(nil, 0).PanelRect
  2.  
  3. local vx1,vy1,vx2,vy2 = PPanel_Rect.left+1, PPanel_Rect.top+2, PPanel_Rect.right-1, PPanel_Rect.bottom-2
  4.  
  5. viewer.Viewer([[Dirinfo.txt]], '', vx1, vy1, vx2, vy2,{VF_DISABLEHISTORY=1; VF_NONMODAL=1, VF_IMMEDIATERETURN=1})
Я проверял. Все координаты вполне положительные и нормальные (я имею в виду, что X2>x1 и Y2>Y1) Так что дело, видимо, не в этом...

Немодальный вьюер на часть экрана

Posted: Sun 16 Dec, 2018 08:03
by 2useven10
Тем не менее это баг.
4303 (самый старый из собранных у меня) работает нормально.
Скорее всего последствия спрямления работы с координатами (введением point, rectangle ...)

Немодальный вьюер на часть экрана

Posted: Sun 16 Dec, 2018 08:18
by 2useven10
Промахнулся - 5268, первое предположение было верным
5267 - ok
5268 - bingo (я ставлю на пункт 1)
drkns 15.09.2018 15:13:24 +0100 - build 5268
1. Рефакторинг. Паттерны типа "int X1, int X2, int Y1, int Y2" заменены на rectangle, "int X, int Y" - на point.
2. Экспериментально: Ctrl+U не меняет размеры панелей.
3. tag_build.bat должен корректно работать в локалях, отличных от 866.

Немодальный вьюер на часть экрана

Posted: Sun 16 Dec, 2018 11:47
by buniak_a_h
2useven10 wrote: Sun 16 Dec, 2018 08:03 Тем не менее это баг.
На самом деле я так и думал. На мантис Вы запишите?

Немодальный вьюер на часть экрана

Posted: Sun 16 Dec, 2018 20:19
by DrKnS
5343

Немодальный вьюер на часть экрана

Posted: Mon 17 Dec, 2018 07:49
by buniak_a_h
DrKnS wrote: Sun 16 Dec, 2018 20:195343
Как-то неправильно получилось...
Image

Немодальный вьюер на часть экрана

Posted: Mon 17 Dec, 2018 08:59
by DrKnS
buniak_a_h wrote: Mon 17 Dec, 2018 07:49Как-то неправильно получилось...
Вы хотите сказать, что 5268 было иначе?

Немодальный вьюер на часть экрана

Posted: Mon 17 Dec, 2018 09:17
by John Doe
DrKnS, понятно что целью последнего исправления было другое.

Но разве единая строка функциональных клавиш на все окна не была бы лучше?
(очвидно что это требует более существенных переделок)

Немодальный вьюер на часть экрана

Posted: Mon 17 Dec, 2018 10:19
by buniak_a_h
DrKnS wrote: Mon 17 Dec, 2018 08:59 Вы хотите сказать, что 5268 было иначе?
Конкретно про 5268 сказать не могу. На версии до обновления на 5343 эта строка была сверху; теперь стала снизу. Но не снизу окна ФАРа, а снизу окна вьюера. Согласитесь, это странно... Она, вроде как, одна на весь ФАР должна быть...
John Doe wrote: Mon 17 Dec, 2018 09:17 Но разве единая строка функциональных клавиш на все окна не была бы лучше?
John Doe wrote: Mon 17 Dec, 2018 09:54 Лично вам как кажется лучше?
Лично я считаю, что строка должна быть единая. Аналогично QView. А если кому-то потребуется сделать свою строку кейбара, то на это, вроде, свой интерфейс есть... Типа viewer.SetKeybar.
Хотя, возможно, спрашивали не меня...

Немодальный вьюер на часть экрана

Posted: Mon 17 Dec, 2018 10:25
by buniak_a_h
2useven10 wrote: Mon 17 Dec, 2018 10:04 Мне не нравится, что два кейбара высвечены одновременно.
Ну да, мне тоже...
2useven10 wrote: Mon 17 Dec, 2018 10:04 Но с другой стороны на активном кейбаре будут надписи относящиееся именно к редакторы/просмотру.
Может быть лучше (и проще) гасить панельный кейбар.
Не, не лучше. Если кому-то надо, можно вызывать viewer.SetKeyBar . В крайнем случае не гасить, а очищать (пустые лайбы для ключей). Но местоположение (точнее, строка на экране) должно (а) быть постоянно и (б) зависеть от состояния переключателя CtrlB (раз уж есть такая фича) И, кстати, я проверил: выключение кейбара по CtrlB не влияет на кейбар вьюера.

Немодальный вьюер на часть экрана

Posted: Mon 17 Dec, 2018 17:39
by 2useven10
buniak_a_h, кейбар вьювера у меня не пустой и CtrlB на него влияет.

Немодальный вьюер на часть экрана

Posted: Mon 17 Dec, 2018 20:52
by buniak_a_h
2useven10 wrote: Mon 17 Dec, 2018 17:39 buniak_a_h, кейбар вьювера у меня не пустой и CtrlB на него влияет.
По тому примеру, что я сделал в первом посте темы у меня тоже непустой. НО! Независимо от CtrlB кейбар показывается.
Windows 10 x64
Far 3.0.5343 x64.