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/ |