GTK窗口盖整个屏幕

前端之家收集整理的这篇文章主要介绍了GTK窗口盖整个屏幕前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在从事一项小型的教育工作,我创建了一个窗口,它应该覆盖整个显示器.然而,从底部的screnshot看到的“特殊”区域没有被覆盖.我的窗口是一个坚实的红色,没有菜单栏滚动条等,无论如何,有这个覆盖顶部菜单栏和码头.在我的屏幕截图中,我正在测试Ubuntu和Mint,这是Gtk OS上的一致行为我需要设置我的窗口所以它涵盖了所有这些可能吗?

我试过gdk_window_fullscreen,但它没有做任何事情,甚至不是全屏,你认为它是因为我从另一个线程运行这个函数?我怎么知道这个函数是否需要从主线程运行?

Ubuntu的覆盖面不完整:

Mint的覆盖面不完整:

代码尝试

>使用主线程中的Firefox代码打开无框窗口:

var aEditorDOMWindow = Services.ww.openWindow(null,core.addon.path.content + 'panel.xul','_blank','chrome,width=1,height=1,screenX=0,screenY=0',null);

>现在加载完成后,在主线程上获取此窗口的GdkWindow *并作为字符串传递给另一个线程
>线程现在将字符串带到GdkWindow *然后到GtkWindow *

var gdkWinPtr = ostypes.TYPE.GdkWindow.ptr(ctypes.UInt64(aHwndStr));
        var gtkWinPtr = ostypes.HELPER.gdkWinPtrToGtkWinPtr(gdkWinPtr);

>该线程然后执行gtk_window_set_keep_above,因为如果有另一个应用程序被聚焦,它将聚焦这个人,它将使他在现有的全屏窗口上

var rez_topIt = ostypes.API('gtk_window_set_keep_above')(gtkWinPtr,true);

>然后用于运行gtk_window_present的线程,但我删除它,因为我注意到它会使应用程序崩溃,这是代码

var rez_focus = ostypes.API('gtk_window_present')(gtkWinPtr);

>实验性的尝试我试过但它没有工作使窗口覆盖特殊的UI:

> ostypes.API(‘gdk_window_set_type_hint’)(gdkWinPtr,ostypes.CONST.WINDOW_TYPE_HINT_SPLASHSCREEN);
> ostypes.API(‘gtk_window_set_position’)(gtkWinPtr,ostypes.CONST.GTK_WIN_POS_NONE);
>

var geom = ostypes.TYPE.GdkGeometry();
geom.max_width = aOptions.fullWidth;
geom.max_height = aOptions.fullHeight;
var rez_geo = ostypes.API('gtk_window_set_geometry_hints')(gtkWinPtr,null,geom.address(),ostypes.CONST.GDK_HINT_MAX_SIZE);

>现在线程工作已完成,并进入主线程.现在主线程使用firefox javascript将窗口移动到最左上方(我之前使用Gdk调用计算)并且还将此窗口的宽度和高度设置为所有监视器的计算(我之前使用其他gdk执行此操作)呼叫)

aEditorDOMWindow.moveTo(collCanMonInfos[0].xTopLeft,collCanMonInfos[0].yTopLeft);
        aEditorDOMWindow.resizeTo(collCanMonInfos[0].nWidth,collCanMonInfos[0].nHeight);

这导致窗口SOMETIMES覆盖所有监视器,其他时间只覆盖它打开的窗口.它永远不会覆盖像taskbar / dock / menubars这样的特殊UI.

如果你能告诉我如何实现一个完全涵盖所有非常感激的窗口,我试图教一些人一些东西,我遇到了一团糟.

这是我正在制作的插件的YouTube视频:https://www.youtube.com/watch?v=aJM5NQK67N4

我停止使用gdk_fullscreen,因为当它间歇性地工作时,它不允许窗口在一个监视器外扩展.

面板通常用struts实现,窗口管理器可以决定永远不允许窗口覆盖它们;这就是为什么引入“全屏窗口”的整个想法的原因之一:它给窗口管理器一个暗示,要求全屏的窗口应该覆盖所有其他窗口;没有装饰品;并且还涵盖所有最终的“系统”组件,如面板.

猜你在找的Windows相关文章