Skip to content

Commit 134d947

Browse files
committed
Fix last menu with gtk_menu_popup and failure to follow panel theme
1 parent dacbd08 commit 134d947

File tree

1 file changed

+16
-15
lines changed

1 file changed

+16
-15
lines changed

‎mate-panel/menu.c‎

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -542,7 +542,7 @@ create_item_context_menu (GtkWidget *item,
542542

543543
static gboolean
544544
show_item_menu (GtkWidget *item,
545-
GdkEventButton *bevent)
545+
GdkEvent *event)
546546
{
547547
PanelWidget *panel_widget;
548548
GtkWidget *menu;
@@ -562,11 +562,18 @@ show_item_menu (GtkWidget *item,
562562

563563
gtk_menu_set_screen (GTK_MENU (menu),
564564
gtk_window_get_screen (GTK_WINDOW (panel_widget->toplevel)));
565-
566-
gtk_menu_popup (GTK_MENU (menu),
567-
NULL, NULL, NULL, NULL,
568-
bevent->button,
569-
bevent->time);
565+
/* Set up theme and transparency support */
566+
GtkWidget *toplevel = gtk_widget_get_toplevel (menu);
567+
/* Fix any failures of compiz/other wm's to communicate with gtk for transparency */
568+
GdkScreen *screen = gtk_widget_get_screen (GTK_WIDGET (toplevel));
569+
GdkVisual *visual = gdk_screen_get_rgba_visual (screen);
570+
gtk_widget_set_visual(GTK_WIDGET (toplevel), visual);
571+
/* Set menu and it's toplevel window to follow panel theme */
572+
GtkStyleContext *context;
573+
context = gtk_widget_get_style_context (GTK_WIDGET (toplevel));
574+
gtk_style_context_add_class(context,"gnome-panel-menu-bar");
575+
gtk_style_context_add_class(context,"mate-panel-menu-bar");
576+
gtk_menu_popup_at_pointer (GTK_MENU (menu), event);
570577

571578
return TRUE;
572579
}
@@ -586,7 +593,7 @@ menuitem_button_press_event (GtkWidget *menuitem,
586593
GdkEventButton *event)
587594
{
588595
if (event->button == 3)
589-
return show_item_menu (menuitem, event);
596+
return show_item_menu (menuitem, (GdkEvent *) event);
590597

591598
return FALSE;
592599
}
@@ -1390,14 +1397,8 @@ panel_menu_key_press_handler (GtkWidget *widget,
13901397
GtkMenuShell *menu_shell = GTK_MENU_SHELL (widget);
13911398

13921399
active_menu_item = gtk_menu_shell_get_selected_item (menu_shell);
1393-
if (active_menu_item && gtk_menu_item_get_submenu (GTK_MENU_ITEM (active_menu_item)) == NULL) {
1394-
GdkEventButton bevent;
1395-
1396-
bevent.button = 3;
1397-
bevent.time = GDK_CURRENT_TIME;
1398-
retval = show_item_menu (active_menu_item, &bevent);
1399-
}
1400-
1400+
if (active_menu_item && gtk_menu_item_get_submenu (GTK_MENU_ITEM (active_menu_item)) == NULL)
1401+
retval = show_item_menu (active_menu_item, (GdkEvent *) event);
14011402
}
14021403
return retval;
14031404
}

0 commit comments

Comments
 (0)