From 93efaa5ebef602e87cb6d246150ae244e9fd379c Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Wed, 27 Mar 2013 00:23:19 -0400 Subject: [PATCH] Fix GtkApplicationWindow menubar placement Since the menubar is part of the content, we need to give it the content_window as parent window, to make things work again. https://bugzilla.gnome.org/show_bug.cgi?id=696561 --- gtk/gtkapplicationwindow.c | 7 +++++++ gtk/gtkwindow.c | 6 ++++++ gtk/gtkwindowprivate.h | 1 + 3 files changed, 14 insertions(+) diff --git a/gtk/gtkapplicationwindow.c b/gtk/gtkapplicationwindow.c index 541baf6a03..532c1d4717 100644 --- a/gtk/gtkapplicationwindow.c +++ b/gtk/gtkapplicationwindow.c @@ -258,6 +258,9 @@ gtk_application_window_update_menubar (GtkApplicationWindow *window) window->priv->menubar = gtk_menu_bar_new_from_model (G_MENU_MODEL (combined)); gtk_widget_set_parent (window->priv->menubar, GTK_WIDGET (window)); + if (_gtk_window_get_content_window (GTK_WINDOW (window)) != NULL) + gtk_widget_set_parent_window (window->priv->menubar, + _gtk_window_get_content_window (GTK_WINDOW (window))); gtk_widget_show_all (window->priv->menubar); g_object_unref (combined); @@ -760,6 +763,10 @@ gtk_application_window_real_realize (GtkWidget *widget) GTK_WIDGET_CLASS (gtk_application_window_parent_class) ->realize (widget); + if (window->priv->menubar != NULL) + gtk_widget_set_parent_window (window->priv->menubar, + _gtk_window_get_content_window (GTK_WINDOW (window))); + #ifdef GDK_WINDOWING_X11 { GdkWindow *gdkwindow; diff --git a/gtk/gtkwindow.c b/gtk/gtkwindow.c index 59d654279d..0f5e46bd6a 100644 --- a/gtk/gtkwindow.c +++ b/gtk/gtkwindow.c @@ -11271,3 +11271,9 @@ ensure_state_flag_backdrop (GtkWidget *widget) gtk_widget_queue_draw (widget); } + +GdkWindow * +_gtk_window_get_content_window (GtkWindow *window) +{ + return window->priv->content_window; +} diff --git a/gtk/gtkwindowprivate.h b/gtk/gtkwindowprivate.h index 8891ca4c4f..1dca8c5dd0 100644 --- a/gtk/gtkwindowprivate.h +++ b/gtk/gtkwindowprivate.h @@ -69,6 +69,7 @@ void _gtk_window_get_wmclass (GtkWindow *window, void _gtk_window_set_allocation (GtkWindow *window, const GtkAllocation *allocation, GtkAllocation *allocation_out); +GdkWindow * _gtk_window_get_content_window (GtkWindow *window); typedef void (*GtkWindowKeysForeachFunc) (GtkWindow *window, guint keyval,