我正在编写一个小程序,它需要像面板一样执行。现在我有一个问题。如果窗口最大化,Windows 仍将取代它。(其实是背后)
我的顶层窗口变成了一个“永远在最上面”的窗口。我用了
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);
}
感谢安德烈西多罗夫的帮助!