diff --git a/gtk/gtkwindow.c b/gtk/gtkwindow.c index db8f4d38d6..6c7f4ab0bf 100644 --- a/gtk/gtkwindow.c +++ b/gtk/gtkwindow.c @@ -1505,6 +1505,36 @@ close_button_clicked (GtkWidget *widget, gpointer data) gdk_event_free (event); } +static void +update_window_buttons (GtkWindow *window) +{ + GtkWindowPrivate *priv = GTK_WINDOW_GET_PRIVATE (window); + + if (is_client_side_decorated (window)) + { + // XXX: should this be using GdkWMFunction instead? + if (priv->client_side_decorations & GDK_DECOR_MINIMIZE) + { + gtk_widget_show_all (priv->min_button); + } + else + { + gtk_widget_hide (priv->min_button); + } + + if (priv->client_side_decorations & GDK_DECOR_MAXIMIZE) + { + gtk_widget_show_all (priv->max_button); + } + else + { + gtk_widget_hide (priv->max_button); + } + + // close? + } +} + static void ensure_title_box (GtkWindow *window) { @@ -1552,6 +1582,8 @@ ensure_title_box (GtkWindow *window) priv->button_box = hbox; gtk_widget_show_all (priv->button_box); + + update_window_buttons (window); } } @@ -3250,6 +3282,8 @@ gtk_window_set_client_side_decorations (GtkWindow *window, } } } + + update_window_buttons (window); } GdkWMDecoration