Снегопат

Обсуждение Снегопата
Текущее время: 22 ноя 2024, 18:12

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 8 ] 
Автор Сообщение
СообщениеДобавлено: 04 ноя 2012, 22:45 
Не в сети
Аватара пользователя

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

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

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

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

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

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

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

_________________
С уважением,
Александр Кунташов
Канал про 1С в Телеграме: @kuntashov_devnotes


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 05 ноя 2012, 07:56 
Не в сети
Администратор
Аватара пользователя

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

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 05 ноя 2012, 11:12 
Не в сети

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

_________________
В реальності все не так, як насправді


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 05 ноя 2012, 12:32 
Не в сети
Аватара пользователя

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

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


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

_________________
С уважением,
Александр Кунташов
Канал про 1С в Телеграме: @kuntashov_devnotes


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 05 ноя 2012, 13:16 
Не в сети
Аватара пользователя

Зарегистрирован: 24 авг 2011, 15:53
Сообщения: 448
Откуда: Саратов
Продолжаю изыскания:

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

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

_________________
С уважением,
Александр Кунташов
Канал про 1С в Телеграме: @kuntashov_devnotes


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 21 ноя 2012, 10:27 
Не в сети
Аватара пользователя

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

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


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

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 21 ноя 2012, 10:49 
Не в сети

Зарегистрирован: 20 дек 2011, 10:31
Сообщения: 588
Откуда: Украина, Запорожье
artbear писал(а):
(kuntashov) Саш, ты textEditorExt.js поправишь, верно?
Уже исправил, просто потерялось во множестве коммитов


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 21 ноя 2012, 11:16 
Не в сети
Аватара пользователя

Зарегистрирован: 24 авг 2011, 15:36
Сообщения: 1085
А для конструктора запросов, точнее, для окна редактирования текста запроса или редактирования выражения запроса, как все обстоит?
ведь эти текстовые окна открываются в модальном режиме.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 8 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 88


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB