![](/img/trans.png)
[英]How can I create an X window/client that is on top of all other windows, not under WM control and has no input? (overlay, OSD)
[英]How do I make a window move to the top of other windows in Gnome when that window already has the focus?
我有一个应用程序将焦点发送到其他窗口,但这些窗口不会自动显示在前台,即在所有其他窗口的顶部。 我在哪里可以配置我的窗口管理器的首选项,以便这是默认行为?
特别是我在 MATLAB IDE 中使用 Ctrl-0 和 Ctrl-Shft-0 快捷方式在命令窗口和编辑器窗口之间移动,尽管焦点似乎已转移,但新窗口不会自动在前景。
不确定是否有一个键绑定可以做到这一点,但是如果您按住 alt 键单击一个窗口(允许您拖动窗口),它应该会出现在前面。
正如 codeDr 所暗示的那样,MATLAB 在重新绘制其窗口方面也有点糟糕。 如果您在代码执行时绘制图形,则图形不会更新,除非您执行drawnow
或在执行drawnow
有一些类似的暂停以允许 GUI 重新绘制。 既然我们说的是MATLAB,那么figure
命令也会使指示的图形出现在前面(实际上,让它不出现在前面更难)。 所以你可以做figure(gcf)
将当前数字带到前面,或者用h = figure;
保存数字编号h = figure;
然后再做figure(h)
。 顺便说一下,如果您想在不切换焦点的情况下切换当前图形,则set(0, 'CurrentFigure', h)
应将h
设置为当前图形。
您的窗口管理器(可能是 Metacity?)实施了焦点窃取预防,以便恶意应用程序不会弹出会干扰您打字的窗口。 Matlab 需要提高它的窗口,并用正确的时间戳给它输入焦点。 如果这是从 KeyPress 事件处理程序完成的,则用于设置输入焦点的时间戳将是来自 KeyPress 事件的时间戳(即导致窗口升高/聚焦的用户生成事件的时间戳)。
为了礼貌地将输入焦点放在一个窗口上,谷歌搜索 _NET_ACTIVE_WINDOW。
通常当窗口没有重新绘制时,这意味着应用程序的主应用程序循环没有运行来刷新窗口。 当您在窗口之间切换时,Matlab 是否正在执行一些计算或磁盘活动?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.