Extjs 6 - не может заставить AlwaysOnTop работать правильно
Как правильно нам использовать свойство AlwaysOnTop для компонентов или окон?
Если я определю окно - скажем, панель инструментов - и установить alwaysOnTop: true
разве это не должно мешать другим окнам скрывать это?
Нужно ли регистрировать окна с этим свойством в Ext.WindowManager?
Длинная история, я использую код рабочего стола (см. Здесь: https://examples.sencha.com/extjs/6....top/index.html). Вы заметите, что можете перемещать окна над нижней панелью инструментов - этого не должно быть. Добавление alwaysOnTop: true
на этот код панели задач в одиночку это не влияет, но последующее выполнение этого делает:
Ext.WindowManager.register(taskbar)
Проблема в том, что win.toFront()
кажется, больше не работает для других окон на рабочем столе. Так, что если окно A перекрывает окно B, B.toFront()
не будет иметь никакого эффекта.
Итак, вопрос в том, как правильно использовать AlwaysOnTop для определенных элементов, при этом другие окна ведут себя так, как ожидается?
2 ответа
Итак, вам все еще нужно зарегистрировать окна, которые вы хотите 'AlwaysOnTop', но оказывается, что причина, по которой окно не выходит вперед, заключается в том, что ZIndexManager не будет продвигать окно вверх, если есть какое-либо окно, которое было зарегистрировано как "Всегда на вершине".
Функция yieldToTop() содержит следующий код:
if (!comp || zIndexStack.find('alwaysOnTop', true)){
return false;
}
Это предотвратит перемещение рассматриваемого окна в стеке. удаление сравнения AlwaysOnTop, кажется, решило мою проблему. Когда setActiveCounter выполняется на вашем компоненте, это вызовет вызов, чтобы преобразовать коллекцию и разместить окна с установленным AlwaysOnTop в верхней части стека, за которым следует соответствующий вопрос.
Результатом этого является то, что панель задач в нижней части рабочего стола всегда будет оставаться наверху, а продвижение / понижение ваших плавающих окон будет вести себя так, как должно.
Вы проверили ниже ссылку? Я думаю, что мы должны применить другие методы, как это для достижения результата. Всегда на вершине