KeepEditboxFocus — оставлять фокус в поле ввода текста

Здесь можно обсудить ваш любимый плагин.
Post Reply
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

KeepEditboxFocus — оставлять фокус в поле ввода текста

Post by John Doe »

Данный скрипт реализует в диалогах Far'a функциональность, подобную когда-то существовавшей опции [x] Search dialog auto-focus.

Выдержка из справки:

Code: Select all

    Состояние таких элементов управления диалога как #флажки# и #переключатели# удобно
изменять напрямую: щелчком мыши, или с помощью горячих клавиш.
При этом и фокус ввода перемещается к соответствующему элементу, что не всегда удобно.

    Плагин модифицирует это стандартное поведение следующим образом:
если курсор изначально находился в #поле ввода#, то он остаётся там и после 
выполнения требуемого действия (это никак не мешает перемещаться между элементами
используя Tab и курсорные клавиши).
 
    Работу плагина можно избирательно отключить 
с помощью ~команды~@Dialog@, доступной через ~меню плагинов~@:PluginCommands@ в
соответствующих диалогах.


    См. также другие возможности ~настройки~@Config@.

Примечание: данный скрипт был написан ещё в 2015, но опубликован только сейчас.
Помимо своей основной функции он был задуман для иллюстрации того, как скрипты могут использовать те же средства локализации (HLF и LNG), что и плагины.
Ну и (поскольку скрипты и плагины суть одно и то же) никто не мешает написать скрипт, который можно использовать в качестве плагина, что и демонстрируется.

Установка: распаковать в отдельную директорию, перезапустить Фар. (Либо как скрипт, но тоже в отдельную директорию.)
Attachments
KeepEditboxFocus-v1.7z
(28.09 KiB) Downloaded 58 times
Last edited by HaRT on Sun 02 Apr, 2023 19:13, edited 1 time in total.
Reason: Улучшен заголовок Темы; добавлен абзац про установку.
https://t.me/FarManager — Telegram чат
User avatar
HaRT
Moderator
Posts: 10823
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

Keep editbox focus

Post by HaRT »

John Doe wrote: Sun 02 Apr, 2023 13:54 скрипты могут использовать те же средства локализации (HLF и LNG), что и плагины
Требует ли это помещения файлов скрипта в отдельную директорию? Помнится, подобная проблема всплывала то ли с LuaCheck, то ли с Calendar by dimfish, то ли с ClickToTitleDir…
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Keep editbox focus

Post by John Doe »

Требует. Хотя лично я не вижу тут проблемы.
По крайней мере никто до этого не жаловался, что файлы разных плагинов нельзя сваливать в кучу.
https://t.me/FarManager — Telegram чат
User avatar
HaRT
Moderator
Posts: 10823
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

Keep editbox focus

Post by HaRT »

John Doe wrote: Sun 02 Apr, 2023 14:26 никто до этого не жаловался, что файлы разных плагинов нельзя сваливать в кучу
Я как раз жаловался, когда обнаружил, что файлы конкретного скрипта необходимо положить в отдельную директорию (притом в его документации это оговорено не было). Всё-таки у плагинов несколько другая «модель дистрибуции», чем у макросов.
John Doe wrote: Sun 02 Apr, 2023 14:26 Требует. Хотя лично я не вижу тут проблемы.
Теперь я тоже, если это указано в инструкции по установке скрипта.

P.S.
А, я разобрался. Тут мы имеем дело всё же с плагином, но таким, логика которого реализована скриптом. Меня сбило с толку то, что Тема расположена в разделе «Обсуждение макросов». Может, всё же перенести её в «Обсуждение плагинов»?
Last edited by HaRT on Sun 02 Apr, 2023 15:39, edited 1 time in total.
Reason: Добавлен постскриптум
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

Keep editbox focus

Post by buniak_a_h »

HaRT wrote: Sun 02 Apr, 2023 14:18 подобная проблема всплывала <…> то ли с ClickToTitleDir
Мои скрипты (в частности, ClickToTitleDir) не требуют помещения в отдельную папку; просто они должны быть в той же папке, что и сам скрипт. А наличие в той же папке других файлов (от других скрипов, например. И вообще - любых) не возбраняется.
Last edited by buniak_a_h on Sun 02 Apr, 2023 16:02, edited 1 time in total.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Keep editbox focus

Post by John Doe »

HaRT wrote: Sun 02 Apr, 2023 15:31 Тут мы имеем дело всё же с плагином, но таким, логика которого реализована скриптом. Меня сбило с толку то, что Тема расположена в разделе «Обсуждение макросов».
Это скрипт, будучи помещён в папку плагинов (вместе с комплектными dll) - будет плагином.
Но его можно безо всяких изменений поместить в папку scripts. В этом случае скрипт уже не будет плагином (и dll тогда разумеется не нужны).
https://t.me/FarManager — Telegram чат
User avatar
HaRT
Moderator
Posts: 10823
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

KeepEditboxFocus — оставлять фокус в поле ввода текста

Post by HaRT »

Обнаружилась недоработка: если при переключении флажков горячими клавишами нажатия–отпускания «перемешались» (такое обычно происходит при быстром переключении двух и более флажков), то фокус остаётся на флажке.
Пример для воспроизведения, скажем, в диалоге поиска в редакторе (язык интерфейса — английский): LAlt:Down C:down W:down W:up C:up LAlt:up — фокус остался на флажке Whole words.
Если вдруг важно, это при работе в режиме скрипта (без DLL).
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

KeepEditboxFocus — оставлять фокус в поле ввода текста

Post by John Doe »

HaRT, спасибо, исправил.
https://t.me/FarManager — Telegram чат
User avatar
HaRT
Moderator
Posts: 10823
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

KeepEditboxFocus — оставлять фокус в поле ввода текста

Post by HaRT »

John Doe wrote: Thu 04 May, 2023 23:05исправил
Сложно ли нарастить номер версии в имени файла в заглавном сообщении? А то можно при беглом взгляде и не заметить, что она обновилась…
Где скачать? Архив-то не обновился.
Last edited by HaRT on Thu 04 May, 2023 23:30, edited 1 time in total.
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

KeepEditboxFocus — оставлять фокус в поле ввода текста

Post by John Doe »

Упс, перевыложил.
https://t.me/FarManager — Telegram чат
User avatar
HaRT
Moderator
Posts: 10823
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

KeepEditboxFocus — оставлять фокус в поле ввода текста

Post by HaRT »

KeepEditboxFocus.lua wrote:undoc: use doubletap to allow move focus
Спасибо, работает, но с нюансами:
  1. При двойном нажатии (с Alt) горячей клавиши флажка происходит и его двойное переключение, что оставляет его в неожиданном состоянии (и для трёхпозиционного, и для обычного). А хотелось бы всё-таки однократное переключение.
  2. При двойном щелчке мышью (что на флажке, что на переключателе) фокус на него не переходит (зато переключение однократное). А ведь логично было бы, чтобы переходил, — и актуально это при отсутствии горячей клавиши из-за большого количества элементов в диалоге.
Сложно ли гармонизировать эту функциональность?
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

KeepEditboxFocus — оставлять фокус в поле ввода текста

Post by John Doe »

HaRT wrote: Sat 19 Aug, 2023 18:57 что оставляет его в неожиданном состоянии
Мне кажется что состояние вполне ожидаемое.
С трёхпозиционными не так очевидно, но их наверно раз два и обчёлся, я сходу даже не нашёл.
Но если хотите, то попробуйте (заменить в начале файла).

Но в код я такое не хочу тащить.
Last edited by HaRT on Mon 04 Sep, 2023 20:29, edited 1 time in total.
Reason: [spoiler]
https://t.me/FarManager — Telegram чат
User avatar
HaRT
Moderator
Posts: 10823
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

KeepEditboxFocus — оставлять фокус в поле ввода текста

Post by HaRT »

John Doe wrote: Sun 20 Aug, 2023 22:24 попробуйте так
Спасибо, вроде теперь работает ожидаемо.
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
HaRT
Moderator
Posts: 10823
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

KeepEditboxFocus — оставлять фокус в поле ввода текста

Post by HaRT »

John Doe, наткнулся я в определённом сценарии на (номер строки с учётом кода из предыдущего сообщения) и действительно не смог выяснить, где определена ф-я getItemType. Что имелось в виду?
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

KeepEditboxFocus — оставлять фокус в поле ввода текста

Post by John Doe »

Замените у себя на getItem(hDlg, hDlg:send(F.DM_GETFOCUS), "Type")
https://t.me/FarManager — Telegram чат
Post Reply

Return to “Обсуждение плагинов”