2

パネルのように実行する必要がある小さなプログラムを作成しています。今、私は問題を抱えています。ウィンドウが最大化されている場合でも、ウィンドウが代わりに表示されます。(実はその裏)

私のトップレベルウィンドウは、「常に一番上」のウィンドウになりました。使った

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);
}

アンドレイ・シドロフの助けに感謝します!

4

1 に答える 1

2

_NET_WM_STRUT / _NET_WM_STRUT_PARTIALヒントを設定する必要があります

于 2012-08-04T22:46:45.823 に答える