diff options
| author | Marco Trevisan (Treviño) <mail@3v1n0.net> | 2012-01-30 13:00:49 +0100 |
|---|---|---|
| committer | Marco Trevisan (Treviño) <mail@3v1n0.net> | 2012-01-30 13:00:49 +0100 |
| commit | b9786e55a264e25ca7c2d59c666289e8a5f04fb1 (patch) | |
| tree | 34210a89c96e927acde5a33aa567b3e7c0e7bcfb /services | |
| parent | e7d15f8ae2e7c9a578c6739cd67d21cd5733e6d5 (diff) | |
PanelService: go back to use gtk_window_set_attached_to
(bzr r1874.1.4)
Diffstat (limited to 'services')
| -rw-r--r-- | services/CMakeLists.txt | 2 | ||||
| -rw-r--r-- | services/panel-service.c | 23 |
2 files changed, 17 insertions, 8 deletions
diff --git a/services/CMakeLists.txt b/services/CMakeLists.txt index 2e5153c1a..286b9cc1f 100644 --- a/services/CMakeLists.txt +++ b/services/CMakeLists.txt @@ -2,7 +2,7 @@ # Panel Service # find_package(PkgConfig) -pkg_check_modules(SERVICE_DEPS REQUIRED gtk+-3.0 gobject-2.0 gio-2.0 gthread-2.0 indicator3-0.4 x11 gconf-2.0) +pkg_check_modules(SERVICE_DEPS REQUIRED gtk+-3.0>=3.3 gobject-2.0 gio-2.0 gthread-2.0 indicator3-0.4 x11 gconf-2.0) execute_process (COMMAND ${PKG_CONFIG_EXECUTABLE} indicator3-0.4 --variable indicatordir OUTPUT_VARIABLE _indicatordir OUTPUT_STRIP_TRAILING_WHITESPACE) execute_process (COMMAND ${PKG_CONFIG_EXECUTABLE} indicator3-0.4 --variable iconsdir OUTPUT_VARIABLE _iconsdir OUTPUT_STRIP_TRAILING_WHITESPACE) diff --git a/services/panel-service.c b/services/panel-service.c index d4ba6c792..d3a0e59b4 100644 --- a/services/panel-service.c +++ b/services/panel-service.c @@ -139,8 +139,7 @@ panel_service_class_dispose (GObject *object) g_hash_table_destroy (priv->entry2indicator_hash); g_hash_table_destroy (priv->panel2entries_hash); - GdkWindow *filter_window = gtk_widget_get_window (priv->offscreen_window); - gdk_window_remove_filter (filter_window, (GdkFilterFunc)event_filter, object); + gdk_window_remove_filter (NULL, (GdkFilterFunc)event_filter, object); if (G_IS_OBJECT (priv->menubar)) { @@ -440,8 +439,7 @@ panel_service_init (PanelService *self) priv->menubar = gtk_menu_bar_new (); gtk_container_add (GTK_CONTAINER (priv->offscreen_window), priv->menubar); - GdkWindow *filter_window = gtk_widget_get_window (priv->offscreen_window); - gdk_window_add_filter (filter_window, (GdkFilterFunc)event_filter, self); + gdk_window_add_filter (NULL, (GdkFilterFunc)event_filter, self); priv->entry2indicator_hash = g_hash_table_new (g_direct_hash, g_direct_equal); priv->panel2entries_hash = g_hash_table_new_full (g_str_hash, g_str_equal, @@ -1131,7 +1129,11 @@ on_active_menu_hidden (GtkMenu *menu, PanelService *self) g_signal_handler_disconnect (priv->last_menu, priv->last_menu_id); g_signal_handler_disconnect (priv->last_menu, priv->last_menu_move_id); - gtk_menu_detach (priv->last_menu); + + GtkWidget *top_win = gtk_widget_get_toplevel (GTK_WIDGET (priv->last_menu)); + if (GTK_IS_WINDOW (top_win)) + gtk_window_set_attached_to (GTK_WINDOW (top_win), NULL); + priv->last_menu = NULL; priv->last_menu_id = 0; priv->last_menu_move_id = 0; @@ -1504,8 +1506,15 @@ panel_service_show_entry (PanelService *self, G_CALLBACK (gtk_widget_destroyed), &priv->last_menu); } - if (gtk_menu_get_attach_widget (priv->last_menu) != priv->menubar) - gtk_menu_attach_to_widget (priv->last_menu, priv->menubar, NULL); + GtkWidget *top_widget = gtk_widget_get_toplevel (GTK_WIDGET (priv->last_menu)); + + if (GTK_IS_WINDOW (top_widget)) + { + GtkWindow *top_win = GTK_WINDOW (top_widget); + + if (gtk_window_get_attached_to (top_win) != priv->menubar) + gtk_window_set_attached_to (top_win, priv->menubar); + } priv->last_entry = entry; priv->last_x = x; |
