OberonCore
https://forum.oberoncore.ru/

Похоже, что всё же есть проблема с сообщениями
https://forum.oberoncore.ru/viewtopic.php?f=22&t=6826
Страница 1 из 1

Автор:  budden [ Пятница, 07 Январь, 2022 20:33 ]
Заголовок сообщения:  Похоже, что всё же есть проблема с сообщениями

В продолжение того, что я писал вчера в телеграм. Похоже, в PET всё же есть проблема с диспетчерами сообщений (Sequencer). Их два - один живёт в окне (FormWindow), другой живёт в форме (которая суть VisualComponent).

В норме, если окно не может обработать соощбение, оно вызывает Handle для формы, форма перекладывает сообщение в свой диспетчер и дальше оно обрабатывается "по-человечески", т.е. в активном объекте MsgSequencer, принадлежащем форме (а не окну).

В PET проблемная строчка - вызов currentPage.HandleShortcut после строчки (* relay hot key to current page *).
Здесь вместо вызова Handle идёт прямой вызов метода из PETPanel, т.е. действия формы. Т.е. секвенсер от окна, а действия мы выполняем над формой. Я не знаю, правильно это или нет и всё почему-то работает. Но достаточно сделать вполне невинные доработки, например, сделать, чтобы по кнопке F6 происходило переключение между кадрами в режиме при нажатой кнопке Split, как получаем красный экран из-за того, что действия происходят не в том активном объекте.

Правилен ли такой прямой вызов метода другого активного объекта в данном случае - я до сих пор не знаю, но выглядит достаточно подозрительным, чтобы опубликовать. Я буду раскапывать эту ситуацию дальше и надеюсь, что смогу её разрешить, но вести записи буду на своём форуме, а не тут, во избежание различных эксцессов.

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