组件或窗口的“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的正确方法是什么,但其他窗口的行为与预期一致?
答案 0 :(得分:0)
您检查过以下链接吗?我认为我们必须应用这样的其他方法来实现输出。 Always on top
答案 1 :(得分:0)
好的,所以你仍然需要注册你想要的窗户' alwaysOnTop' 但事实证明,窗口不会出现在前面的原因是如果有任何窗口已注册为" alwaysOnTop" ZIndexManager将不会提升窗口。
函数bringToTop()包含以下代码:
if (!comp || zIndexStack.find('alwaysOnTop', true)){
return false;
}
这将使有问题的窗口不会在堆栈中向上移动。 删除alwaysOnTop比较似乎解决了我的问题。当你的组件上执行setActiveCounter时,它会触发一个求助集合的调用,并将窗口置于具有' alwaysOnTop"设置在堆栈的顶部,然后是相关的那个。
这样做的结果是桌面底部的任务栏将始终位于顶部,您的浮动窗口升级/降级将按照应有的方式运行。