繁体   English   中英

当该窗口已经具有焦点时,如何使该窗口移动到 Gnome 中其他窗口的顶部?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM