From f046dace113d6b3f1b1b094b09374399951c68bd Mon Sep 17 00:00:00 2001 From: lukefromdc Date: Sun, 30 Aug 2015 00:57:30 -0400 Subject: menu.c: robust transparent theme support Ensure any transparent menu theme works even when gtk3.16 or later fails to detect a compositing window manager. This work also present on applet.c and mate-panel-applet.c theme support commits. Main menus already follow .mate-panel-menu-bar .menu so no changes to that --- mate-panel/menu.c | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/mate-panel/menu.c b/mate-panel/menu.c index b2c6caa1..dfffce66 100644 --- a/mate-panel/menu.c +++ b/mate-panel/menu.c @@ -1016,10 +1016,17 @@ create_fake_menu (MateMenuTreeDirectory *directory) g_signal_connect (menu, "button_press_event", G_CALLBACK (menu_dummy_button_press_event), NULL); - + + +/* Fix any failures of compiz/other wm's to communicate with gtk for transparency */ +#if GTK_CHECK_VERSION (3, 0, 0) + GtkWidget *toplevel = gtk_widget_get_toplevel (menu); + GdkScreen *screen = gtk_widget_get_screen(GTK_WIDGET(toplevel)); + GdkVisual *visual = gdk_screen_get_rgba_visual(screen); + gtk_widget_set_visual(GTK_WIDGET(toplevel), visual); +#endif return menu; } - GtkWidget * panel_image_menu_item_new (void) { @@ -1327,7 +1334,14 @@ create_applications_menu (const char *menu_file, G_CALLBACK (remove_matemenu_tree_monitor), tree); matemenu_tree_unref (tree); - + +/*HACK Fix any failures of compiz/other wm's to communicate with gtk for transparency */ +#if GTK_CHECK_VERSION (3, 0, 0) + GtkWidget *toplevel = gtk_widget_get_toplevel (menu); + GdkScreen *screen = gtk_widget_get_screen(GTK_WIDGET(toplevel)); + GdkVisual *visual = gdk_screen_get_rgba_visual(screen); + gtk_widget_set_visual(GTK_WIDGET(toplevel), visual); +#endif return menu; } -- cgit v1.2.1