Меню

Здесь можно сообщить о найденных багах в Far.
User avatar
John Doe
Бюрократ
Posts: 12457
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 33 times
Been thanked: 188 times

Меню

Post by John Doe » Mon 13 May, 2013 14:48

Есть небольшой дефект с отображением меню, если первые по порядку элементы являются "нефокусируемыми" (например disabled, или разделители).
Самый доступный пример: Macro Browser, первым элементом в его списке идёт разделитель с текстом "Macros".

Перемещаемся в конец списка с помощью End, и возвращаемся обратно с помощью PgUp.
В результате первый элемент (разделитель) не отображается.
Если переходить в начало списка с помощью Home или CtrlPgUp, то описанной проблемы нет.

P.S.
Необходимое условие чтобы в списке было достаточно много элементов, чтобы список не помещался без скроллинга.

Shmuel
Posts: 5897
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 23 times
Been thanked: 218 times

Re: Меню

Post by Shmuel » Mon 13 May, 2013 14:55

John Doe wrote:Есть небольшой дефект с отображением меню, если первые по порядку элементы являются "нефокусируемыми" (например disabled, или разделители).
Та же проблема, если нефокусируемые элементы в конце списка.

User avatar
John Doe
Бюрократ
Posts: 12457
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 33 times
Been thanked: 188 times

Re: Меню

Post by John Doe » Mon 13 May, 2013 14:58

Похоже с последними ещё хуже, их вообще невозможно отобразить, ни End, ни CtrlPgDn не помогают.

Об их существовании можно догадаться только по положению скроллера.

Shmuel
Posts: 5897
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 23 times
Been thanked: 218 times

Re: Меню

Post by Shmuel » Mon 13 May, 2013 15:27

Проверил на Фар 2 - проблема присутствует и там. Но там ситуация с первыми элементами такая же, как в Фар 3 с последними.

Вообще-то не сказал бы, что это "небольшой дефект".

User avatar
HaRT
Moderator
Posts: 9088
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 90 times
Been thanked: 158 times

Re: Меню

Post by HaRT » Mon 13 May, 2013 15:46

Я считаю, что по Home/End должно перемещаться к первому/последнему активному элементу, не стремясь показать начальные/конечные неактивные; а вот по (Ctrl)PgUp/PgDn должно позволять просматривать все значения, будь они хоть вообще все неактивные.
Фар есть инструмент, а не нянька. © 2009 DrKnS

Shmuel
Posts: 5897
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 23 times
Been thanked: 218 times

Re: Меню

Post by Shmuel » Mon 13 May, 2013 16:05

У кого установлен плагин LuaFAR History, может проверить, что данная проблема разрешима.
Нужно создать файл и вызвать командную строку

Code: Select all

lfh: -r test.lua
Данная проблема не наблюдается. Вру, внизу наблюдается при повторных проходах. Надо чинить.

User avatar
John Doe
Бюрократ
Posts: 12457
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 33 times
Been thanked: 188 times

Re: Меню

Post by John Doe » Mon 13 May, 2013 16:20

HaRT wrote:Я считаю, что по Home/End должно перемещаться к первому/последнему активному элементу, не стремясь показать начальные/конечные неактивные; а вот по (Ctrl)PgUp/PgDn должно позволять просматривать все значения, будь они хоть вообще все неактивные.
Под "перемещаться" понимается 2 отдельных действия: во-первых позиционирование курсора, и во-вторых скроллинг списка.
Различать Home/End и CtrlPgUp/Down вряд ли нужно, думаю в обоих случая меню должно переместиться так, чтобы (по-возможности) и нефокусируемые элементы были видны.

А [Pg]Up/Down в идеале должны скроллить меню независимо от фокусируемости элементов.

User avatar
HaRT
Moderator
Posts: 9088
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 90 times
Been thanked: 158 times

Re: Меню

Post by HaRT » Mon 13 May, 2013 16:27

John Doe wrote:в обоих случая меню должно переместиться так, чтобы (по-возможности) и нефокусируемые элементы были видны.
Не могу согласиться — так получится, что положение активного элемента в видимой части списка по выполнении действия станет зависеть от того, сколько там с краю неактивных элементов.
Фар есть инструмент, а не нянька. © 2009 DrKnS

User avatar
John Doe
Бюрократ
Posts: 12457
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 33 times
Been thanked: 188 times

Re: Меню

Post by John Doe » Mon 13 May, 2013 16:35

HaRT wrote:положение активного элемента в видимой части списка по выполнении действия станет зависеть от того, сколько там с краю неактивных элементов.
А с какой стати оно не должно зависеть?

User avatar
HaRT
Moderator
Posts: 9088
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 90 times
Been thanked: 158 times

Re: Меню

Post by HaRT » Mon 13 May, 2013 17:19

John Doe wrote:
HaRT wrote:положение активного элемента в видимой части списка по выполнении действия станет зависеть от того, сколько там с краю неактивных элементов.
А с какой стати оно не должно зависеть?
Чтобы говорить на общем языке, предлагаю представлять, что документ (полный список) сверху-вниз длинный, но смотрим мы на него только через маленькое видимое окошко (меню). Когда пользователь отдаёт команду переместиться к какому-то видимому элементу, обычно подразумевается, что при этом позиция элемента не изменится (исключение — когда элемент виден лишь частично, но это не наш случай). Когда пользователь отдаёт команду переместиться к какому-то НЕвидимому элементу, обычно подразумевается, что список будет прокручен так, чтобы этот элемент попал в поле зрения, но чтобы при этом положение окна в документе изменилось как можно меньше (так человеческому восприятию легче сориентироваться, что куда уехало). Пользователю при таком перемещении совершенно неинтересно, что там следом (исключение — когда важен контекст вокруг элемента, но это не наш случай).
Представьте себе такую картину:

Code: Select all

Active 0 <--
Active 1
Active 2
Active 3
Active 4 ___
Active 5
Inactive 0
Inactive 1
Inactive 2
Inactive 3
(стрелочка указывает текущий элемент, горизонтальная линия показывает, где кончается окно)
Вот что предлагаете Вы: пользователь жмёт End, и текущий контекст уезжает невесть куда из-за наличия этих неактивных элементов.
Я же предлагаю, чтобы в таком случае всё сместилось всего на один элемент вверх.

Во всех этих рассуждениях принципиально, что Home/End — это именно команда перехода к первому/последнему активному элементу, а не что-то другое.
Фар есть инструмент, а не нянька. © 2009 DrKnS

User avatar
John Doe
Бюрократ
Posts: 12457
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 33 times
Been thanked: 188 times

Re: Меню

Post by John Doe » Mon 13 May, 2013 17:24

HaRT wrote:Пользователю при таком перемещении совершенно неинтересно, что там следом (исключение — когда важен контекст вокруг элемента, но это не наш случай).
Пользователю интересно начало/конец списка, включая нефокусируемые элементы.
HaRT wrote:Во всех этих рассуждениях принципиально, что Home/End — это именно команда перехода к первому/последнему активному элементу, а не что-то другое.
Вот с этим я и спорю.

User avatar
HaRT
Moderator
Posts: 9088
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 90 times
Been thanked: 158 times

Re: Меню

Post by HaRT » Mon 13 May, 2013 17:35

John Doe wrote:
HaRT wrote:Во всех этих рассуждениях принципиально, что Home/End — это именно команда перехода к первому/последнему активному элементу, а не что-то другое.
Вот с этим я и спорю.
Хорошо, что быстро выяснилось, т.к. это фундаментальная вещь.
John Doe wrote:Различать Home/End и CtrlPgUp/Down вряд ли нужно, думаю в обоих случая меню должно переместиться так, чтобы (по-возможности) и нефокусируемые элементы были видны.
Вот как раз теперь хорошо бы их разделить: Home/End — переход к первому/последнему активному элементу; CtrlPgUp/CtrlPgDn — переход к началу/концу списка, возможно, с фокусированием первого/последнего активного элемента, если таковой окажется видимым.
Фар есть инструмент, а не нянька. © 2009 DrKnS

User avatar
HaRT
Moderator
Posts: 9088
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 90 times
Been thanked: 158 times

Re: Меню

Post by HaRT » Mon 13 May, 2013 17:45

О, меня посетила гениальная идея!
Можно назначить так: CtrlHome/CtrlEnd — переход к первому/последнему активному элементу, с минимально возможной прокруткой; CtrlPgUp/CtrlPgDn — переход к началу/концу списка, возможно, с фокусированием первого/последнего активного элемента, если таковой окажется видимым.
А на Home/End назначить умное (smart) поведение наподобие того, как Home ведёт себя в программерских редакторах, когда в начале строки есть незначащие (пробельные) символы.
Фар есть инструмент, а не нянька. © 2009 DrKnS

User avatar
HaRT
Moderator
Posts: 9088
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 90 times
Been thanked: 158 times

Меню

Post by HaRT » Mon 16 Sep, 2019 19:37

Оживим тему.
Обнаружился забавный ИИ при рисовании разделителей в меню: Фар пытается «корректно» обрабатывать «пересечения» рамок. В меню результаты получаются курьёзные. Можно воспроизвести, выставив пробел вместо одиночной вертикальной рамки или, например, задав такой фрагмент в «исходнике» User Menu:
--: : 2B│┐2B --:
Мы видим, что разделитель «срастается» с символом вертикальной рамки из предшествующей/последующей строки, но почему-то не срастается с уголком от рамки и почему-то не срастается, если разделитель является первым/последним элементом списка соответственно.
Я не сомневаюсь, что где-то такая эвристика полезна, но предлагаю отключить её при рисовании разделителей в меню.
Фар есть инструмент, а не нянька. © 2009 DrKnS

User avatar
DrKnS
Posts: 5397
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 6 times
Been thanked: 227 times

Меню

Post by DrKnS » Mon 16 Sep, 2019 20:21

HaRT wrote:
Mon 16 Sep, 2019 19:37
отключить её при рисовании разделителей в меню
Она же для них и придумана - см. меню дисков, фильтры и т.п.

User avatar
HaRT
Moderator
Posts: 9088
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 90 times
Been thanked: 158 times

Меню

Post by HaRT » Mon 16 Sep, 2019 20:31

DrKnS wrote:
Mon 16 Sep, 2019 20:21
см. меню дисков, фильтры и т.п.
Так может тогда её и включать только в тех меню, где она нужна? А то, скажем, в User Menu результат явно получается неожиданный в плохом смысле.
Фар есть инструмент, а не нянька. © 2009 DrKnS

Post Reply

Return to “Глюки и баги”