[gtk+] Fix GtkApplicationWindow menubar placement
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+] Fix GtkApplicationWindow menubar placement
- Date: Wed, 27 Mar 2013 04:23:58 +0000 (UTC)
commit 93efaa5ebef602e87cb6d246150ae244e9fd379c
Author: Matthias Clasen <mclasen redhat com>
Date: Wed Mar 27 00:23:19 2013 -0400
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(+), 0 deletions(-)
---
diff --git a/gtk/gtkapplicationwindow.c b/gtk/gtkapplicationwindow.c
index 541baf6..532c1d4 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 59d6542..0f5e46b 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 8891ca4..1dca8c5 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,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]