TideSDK - установить дочернее окно всегда в верхнюю часть главного окна
У меня есть проект, который состоит в создании приложения, которое работает поверх других приложений. Мое приложение всегда остается на вершине и обеспечивает прозрачность для взаимодействия с приложениями ниже. Все идет хорошо, я применил topMost (true) к приложению, и все в порядке.
Потому что у меня возникают проблемы с получением диалоговых окон (предупреждающих, но не запрашивающих и не подтверждающих), чтобы оставаться на вершине и прекращать взаимодействие с моим главным окном, пока оно не закроется - https://groups.google.com/forum/ - мне пришлось создавать свои собственные диалоговые окна. Мне удалось добиться этого, создав дочернее окно, установив для его свойства topMost значение true и всегда перефокусируя диалоговое окно всякий раз, когда возникала попытка активировать / фокусировать главное окно.
Моя проблема возникает, когда нужно создать другое окно, которое будет действовать как окно плавающих инструментов Photoshop. Это окно теряет фокус и попадает под главное окно во время итерации с основным приложением и диалогами. Мне нужно, чтобы это окно всегда оставалось поверх главного окна и под инструментами диалога, чтобы UX получал правильные значения.
Мне удалось заставить окно оставаться на вершине, но я играю вокруг с фокусом и расфокусировкой для всех окон, и это становится грязным.
У кого-нибудь нет, как я могу установить порядок из главного окна и всех его дочерних окон?
Спасибо,
Питер
2 ответа
Оказывается, предыдущее решение не было правильно протестировано. Основное приложение не имело tiapp.xml, определяющего top-most to true. Так что я думаю, мне нужно глубже изучить эту проблему
:(
Мне удалось быстро решить эту проблему, так что вот оно:
При создании всех окон (главного, инструментов и диалогов) я использую только свойство topMost для метода createWindow ( https://github.com/TideSDK/TideSDK-doc/tree/master/source/guides/getting_started),
В главном окне я использую только свойства tiapp.xml ( https://github.com/TideSDK/TideSDK-doc/tree/master/source/guides/getting_started).
Только с окном инструментов я вызываю метод setTopMost (true) при инициализации окна (однократное выполнение). Таким образом, окно всегда будет оставаться сверху всех.
Наконец, для диалогов я навязываю фокус всякий раз, когда пользователь пытается взаимодействовать с инструментами или главным окном.
так что порядок идет так (сверху вниз)
- диалог (свойство xml topMost и всегда заставляющий фокус)
- инструменты (свойство xml topMost и метод setTopMost для init)
- окно (свойство xml topMost)