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 в верхней части стека, за которым следует соответствующий вопрос.

Результатом этого является то, что панель задач в нижней части рабочего стола всегда будет оставаться наверху, а продвижение / понижение ваших плавающих окон будет вести себя так, как должно.

Вы проверили ниже ссылку? Я думаю, что мы должны применить другие методы, как это для достижения результата. Всегда на вершине

Другие вопросы по тегам