← Back to team overview

ayatana-commits team mailing list archive

[Merge] lp:~bratsche/appmenu-gtk/checkboxes into lp:appmenu-gtk

 

Cody Russell has proposed merging lp:~bratsche/appmenu-gtk/checkboxes into lp:appmenu-gtk.

Requested reviews:
  Canonical Desktop Experience Team (canonical-dx-team)
Related bugs:
  #586907 Checkbox ticks not shown in menus
  https://bugs.launchpad.net/bugs/586907

-- 
https://code.launchpad.net/~bratsche/appmenu-gtk/checkboxes/+merge/27171
Your team ayatana-commits is subscribed to branch lp:appmenu-gtk.
=== modified file 'src/bridge.c'
--- src/bridge.c	2010-06-06 20:07:05 +0000
+++ src/bridge.c	2010-06-09 15:14:31 +0000
@@ -249,6 +249,14 @@
 }
 
 static void
+checkbox_toggled (GtkWidget *widget, DbusmenuMenuitem *mi)
+{
+  dbusmenu_menuitem_property_set_int (mi,
+                                      DBUSMENU_MENUITEM_PROP_TOGGLE_STATE,
+                                      gtk_check_menu_item_get_active (GTK_CHECK_MENU_ITEM (widget)) ? DBUSMENU_MENUITEM_TOGGLE_STATE_CHECKED : DBUSMENU_MENUITEM_TOGGLE_STATE_UNCHECKED);
+}
+
+static void
 app_menu_bridge_insert (GtkMenuProxy *proxy,
                         GtkWidget    *parent,
                         GtkWidget    *child,
@@ -330,6 +338,22 @@
         }
       else
         {
+          if (GTK_IS_CHECK_MENU_ITEM (child))
+            {
+              dbusmenu_menuitem_property_set (item,
+                                              DBUSMENU_MENUITEM_PROP_TOGGLE_TYPE,
+                                              GTK_IS_RADIO_MENU_ITEM (child) ? DBUSMENU_MENUITEM_TOGGLE_RADIO : DBUSMENU_MENUITEM_TOGGLE_CHECK);
+
+              dbusmenu_menuitem_property_set_int (item,
+                                                  DBUSMENU_MENUITEM_PROP_TOGGLE_STATE,
+                                                  gtk_check_menu_item_get_active (GTK_CHECK_MENU_ITEM (child)) ? DBUSMENU_MENUITEM_TOGGLE_STATE_CHECKED : DBUSMENU_MENUITEM_TOGGLE_STATE_UNCHECKED);
+
+              g_signal_connect (child,
+                                "toggled",
+                                G_CALLBACK (checkbox_toggled),
+                                item);
+            }
+
           dbusmenu_menuitem_property_set (item,
                                           "label",
                                           get_menu_label_text (child));


Follow ups