1616#include <gio/gio.h>
1717
1818#include <libpanel-util/panel-show.h>
19+ #include <libpanel-util/panel-gtk.h>
1920
2021#include "button-widget.h"
2122#include "drawer.h"
@@ -41,6 +42,8 @@ static GSList *registered_applets = NULL;
4142static GSList * queued_position_saves = NULL ;
4243static guint queued_position_source = 0 ;
4344
45+ static GtkCheckMenuItem * checkbox_id = NULL ;
46+
4447static void applet_menu_show (GtkWidget * w , AppletInfo * info );
4548static void applet_menu_deactivate (GtkWidget * w , AppletInfo * info );
4649
@@ -98,14 +101,21 @@ mate_panel_applet_toggle_locked (AppletInfo *info)
98101}
99102
100103static void
101- mate_panel_applet_lock (GtkCheckMenuItem * menuitem ,
102- AppletInfo * info )
104+ checkbox_status (GtkCheckMenuItem * menuitem ,
105+ AppletInfo * info )
106+ {
107+ checkbox_id = GTK_CHECK_MENU_ITEM (menuitem );
108+ }
109+
110+ static void
111+ mate_panel_applet_lock (GtkMenuItem * menuitem ,
112+ AppletInfo * info )
103113{
104114 gboolean locked ;
105115
106116 locked = mate_panel_applet_toggle_locked (info );
107117
108- gtk_check_menu_item_set_active (menuitem , locked );
118+ gtk_check_menu_item_set_active (checkbox_id , locked );
109119
110120 if (info -> move_item )
111121 gtk_widget_set_sensitive (info -> move_item , !locked );
@@ -382,15 +392,8 @@ setup_an_item (AppletUserMenu *menu,
382392 GtkWidget * submenu ,
383393 int is_submenu )
384394{
385- GtkWidget * image = NULL ;
386-
387- menu -> menuitem = gtk_image_menu_item_new_with_mnemonic (menu -> text );
388- if (menu -> gicon ) {
389- image = gtk_image_new_from_gicon (menu -> gicon ,
390- GTK_ICON_SIZE_MENU );
391- gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu -> menuitem ),
392- image );
393- }
395+ menu -> menuitem = panel_image_menu_item_new_from_gicon (menu -> gicon , menu -> text );
396+
394397 gtk_widget_show (menu -> menuitem );
395398
396399 g_signal_connect (G_OBJECT (menu -> menuitem ), "destroy" ,
@@ -503,6 +506,8 @@ mate_panel_applet_create_menu (AppletInfo *info)
503506
504507 menu = g_object_ref_sink (gtk_menu_new ());
505508
509+ gtk_menu_set_reserve_toggle_size (GTK_MENU (menu ), FALSE);
510+
506511 /* connect the show & deactivate signal, so that we can "disallow" and
507512 * "re-allow" autohide when the menu is shown/deactivated.
508513 */
@@ -524,7 +529,6 @@ mate_panel_applet_create_menu (AppletInfo *info)
524529 }
525530
526531 if (!panel_lockdown_get_locked_down ()) {
527- GtkWidget * image ;
528532 gboolean locked ;
529533 gboolean lockable ;
530534 gboolean movable ;
@@ -542,18 +546,16 @@ mate_panel_applet_create_menu (AppletInfo *info)
542546 gtk_widget_show (menuitem );
543547 }
544548
545- menuitem = gtk_image_menu_item_new_with_mnemonic (_ ("_Remove From Panel" ));
546- image = gtk_image_new_from_icon_name ("list-remove" ,
547- GTK_ICON_SIZE_MENU );
548- gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menuitem ),
549- image );
549+ menuitem = panel_image_menu_item_new_from_icon ("list-remove" , _ ("_Remove From Panel" ));
550+
550551 g_signal_connect (menuitem , "activate" ,
551552 G_CALLBACK (applet_remove_callback ), info );
552553 gtk_widget_show (menuitem );
553554 gtk_menu_shell_append (GTK_MENU_SHELL (menu ), menuitem );
554555 gtk_widget_set_sensitive (menuitem , (!locked || lockable ) && removable );
555556
556- menuitem = gtk_menu_item_new_with_mnemonic (_ ("_Move" ));
557+ menuitem = panel_image_menu_item_new_from_icon (NULL , _ ("_Move" ));
558+
557559 g_signal_connect (menuitem , "activate" ,
558560 G_CALLBACK (move_applet_callback ), info );
559561 gtk_widget_show (menuitem );
@@ -571,11 +573,20 @@ mate_panel_applet_create_menu (AppletInfo *info)
571573 gtk_widget_show (menuitem );
572574
573575 menuitem = gtk_check_menu_item_new_with_mnemonic (_ ("Loc_k To Panel" ));
576+
574577 gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (menuitem ),
575578 locked );
576- g_signal_connect (menuitem , "toggled" ,
579+
580+ g_signal_connect (menuitem , "map" ,
581+ G_CALLBACK (checkbox_status ), info );
582+
583+ menuitem = panel_check_menu_item_new (menuitem );
584+
585+ g_signal_connect (menuitem , "activate" ,
577586 G_CALLBACK (mate_panel_applet_lock ), info );
587+
578588 gtk_widget_show (menuitem );
589+
579590 gtk_menu_shell_append (GTK_MENU_SHELL (menu ), menuitem );
580591 gtk_widget_set_sensitive (menuitem , lockable );
581592
0 commit comments