gtk - 如何让顶层像面板一样运行?

标签 gtk panel x11

我正在编写一个小程序,它需要像面板一样执行。现在我有一个问题。如果窗口最大化,窗口仍会取代它。 (其实就在后面)

我的顶层窗口已成为“始终位于顶部”的窗口。我用过

gtk_window_set_type_hint(GTK_WINDOW (self), GDK_WINDOW_TYPE_HINT_DOCK);

但是这个问题仍然困扰着我。

有什么想法吗?谢谢。

PS:我的程序是用GTK+编写的,运行在X11上。


现在这个问题已经通过以下代码解决了,

void
hs_x_set_hint_strut (GdkWindow *window,
                     int        left,
                     int        right,
                     int        top,
                     int        bottom)
{
    GdkAtom atom;

    long vals[4];
    vals[0] = left;
    vals[1] = right;
    vals[2] = top;
    vals[3] = bottom;

    atom = gdk_atom_intern ("_NET_WM_STRUT", FALSE);

    gdk_property_change (window, atom, gdk_x11_xatom_to_atom (XA_CARDINAL), 
                         32, GDK_PROP_MODE_REPLACE, (guchar *)vals, 4);
}

void
hs_x_set_window_strut (GtkWindow *window)
{
    GdkWindow *gdk_win;
    GdkRectangle win_rect;

    g_return_if_fail (GTK_IS_WINDOW (window));
    gdk_win = gtk_widget_get_window (GTK_WIDGET (window));
    gdk_window_get_geometry (gdk_win, NULL, NULL, 
                             NULL, &win_rect.height);
    hs_x_set_hint_strut (gdk_win, 0, 0, win_rect.height, 0);
}

感谢安德烈·西多罗夫的帮助!

最佳答案

关于gtk - 如何让顶层像面板一样运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11806203/

相关文章:

Linux - 创建一个甚至在全屏应用程序上显示的菜单

c++ - 如何全局捕获 X11 中的每一次鼠标点击?

c++ - X11 中的屏幕截图

用于检测特定更新面板的 AsyncPostback 的开始和结束的 Javascript

Extjs:两个面板在窗口调整大小时相应地调整大小

c++ - UTF8 字符数组到 std::wstring

perl - 在Windows中安装GTK2!

c - C 中的 Gtk GLArea 小部件不显示 gl 命令

Python PyGTK。这个组件是什么?

javascript - 如何将自定义内容放入折叠的 ExtJS 面板栏中?