Снегопат
https://snegopat.ru/forum/

Хоткеи отрабатывают независимо от наличия модального окна
https://snegopat.ru/forum/viewtopic.php?f=1&t=273
Страница 1 из 1

Автор:  kuntashov [ 04 ноя 2012, 22:45 ]
Заголовок сообщения:  Хоткеи отрабатывают независимо от наличия модального окна

Обнаружил следующее не очень приятное поведение: при нажатии горячей клавиши макрос срабатывает не зависимо от того, открыто ли какое-либо модальное окно.

Как воспроизвести:

0. Убедиться, что загружен скрипт textEditorExt.js (как наиболее показательный пример).
1. Отрыть любой модуль и установить курсор внутри комментария.
2. Вызвать окно макросов Снегопата (Ctrl+M)
3. Попытаться вызвать какой-либо макрос, установив на него курсор и нажав Enter.

Что произойдет: отработает макрос textEditorExt::macrosOnPressEnterInComment (для него назначен хоткей - Enter).
Ожидалось: будет выполнен макрос, на котором был установлен курсор.

Если попробовать аналогичным образом выполнить любой другой макрос - он вызовется, независимо от наличия модального окна.

Получается, что события в первую очередь перехватываются макросами. В модальное окно событие нажатия хоткея попадает уже после.
При этом также snegopat.activeTextWindow() возвращает текстовое окно под модальным, что тоже не желательно.

Это задуманное поведение или ошибка?

Автор:  orefkov [ 05 ноя 2012, 07:56 ]
Заголовок сообщения:  Re: Хоткеи отрабатывают независимо от наличия модального окн

Так задумано. Снегопат отлавливает хоткеи и вызывает макросы независимо от текущего модального режима.
Макрос может проверить текущий модальный режим:
Код:
if(windows.modalMode != msNone)
    return false

Например, macrosПерейтиКОпределению() в snegopat.js работает так:
Код:
if(snegopat.activeTextWindow() && windows.modalMode == msNone)

Автор:  Magister [ 05 ноя 2012, 11:12 ]
Заголовок сообщения:  Re: Хоткеи отрабатывают независимо от наличия модального окн

Я так понимаю, отлов идет через хуки Windows? SetWindowsHookEx & co?
К чему это я спрашиваю. Хоткеи типа Ctrl-1, который в SynEdit по-умолчанию - переход к закладке №1 - не отрабатывает вообще. В то время, как Ctrl-Shift-1 (установка закладки №1) - отрабатывает отлично.

Автор:  kuntashov [ 05 ноя 2012, 12:32 ]
Заголовок сообщения:  Re: Хоткеи отрабатывают независимо от наличия модального окн

orefkov писал(а):
Так задумано. Снегопат отлавливает хоткеи и вызывает макросы независимо от текущего модального режима.
Макрос может проверить текущий модальный режим:
Код:
if(windows.modalMode != msNone)
    return false

Например, macrosПерейтиКОпределению() в snegopat.js работает так:
Код:
if(snegopat.activeTextWindow() && windows.modalMode == msNone)


Ок, спасибо. В большей части случаев не существенно, но вот как минимум в textEditorExt.js надо сделать правки.

Автор:  kuntashov [ 05 ноя 2012, 13:16 ]
Заголовок сообщения:  Re: Хоткеи отрабатывают независимо от наличия модального окн

Продолжаю изыскания:

Если открыть текстовый документ, затем вызывать окно открытия файла (Ctrl+O), а потом вызывать какой-либо макрос, то в это макросе условие windows.modalMode != msNone ложно, windows.modalMode == 0.

С окном - списком макросов все ок.

Автор:  artbear [ 21 ноя 2012, 10:27 ]
Заголовок сообщения:  Re: Хоткеи отрабатывают независимо от наличия модального окн

kuntashov писал(а):
orefkov писал(а):
Так задумано. Снегопат отлавливает хоткеи и вызывает макросы независимо от текущего модального режима.
Макрос может проверить текущий модальный режим:
Код:
if(windows.modalMode != msNone)
    return false

Например, macrosПерейтиКОпределению() в snegopat.js работает так:
Код:
if(snegopat.activeTextWindow() && windows.modalMode == msNone)


Ок, спасибо. В большей части случаев не существенно, но вот как минимум в textEditorExt.js надо сделать правки.

Ага, нужно эту инфу куда-нибудь в Вики закинуть!
Фактически многие скрипты нужно проверить.
(kuntashov) Саш, ты textEditorExt.js поправишь, верно?

Автор:  sosnae [ 21 ноя 2012, 10:49 ]
Заголовок сообщения:  Re: Хоткеи отрабатывают независимо от наличия модального окн

artbear писал(а):
(kuntashov) Саш, ты textEditorExt.js поправишь, верно?
Уже исправил, просто потерялось во множестве коммитов

Автор:  artbear [ 21 ноя 2012, 11:16 ]
Заголовок сообщения:  Re: Хоткеи отрабатывают независимо от наличия модального окн

А для конструктора запросов, точнее, для окна редактирования текста запроса или редактирования выражения запроса, как все обстоит?
ведь эти текстовые окна открываются в модальном режиме.

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/