From 2babf3e334649031a4e8fff308358f6974ceb155 Mon Sep 17 00:00:00 2001 From: Lars Uebernickel Date: Thu, 23 May 2013 18:48:56 -0400 Subject: Set x-canonical-type for user and guest menu items --- README | 4 ++-- src/service.c | 11 ++++++++++- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/README b/README index 420541e..29a135f 100644 --- a/README +++ b/README @@ -12,7 +12,7 @@ As per the https://wiki.ubuntu.com/SystemMenu specification, both need four visual components: (1) an Active Session Mark, the user's (2) icon, (3) name, and (4) a Logged In Mark. -== User menuitems can be recognized by their "indicator.switch-to-user" action. +== User menuitems have "x-canonical-type" set to "indicator.user-menu-item" Their four visual components are determined by: 1. You can test for the Action Session Mark by checking the action's state. @@ -30,7 +30,7 @@ and (4) a Logged In Mark. an array of usernames. If the array contains the username in this menuitem's "target" attribute, show the Logged In Mark. -== The Guest switcher can be recognized by its "indicator.switch-to-guest" +== The Guest switcher has "x-canonical-type" set to "indicator.guest-menu-item" action. Its four visual components are determined by: 1. You can test for the Active Session Mark by checking the action's state. diff --git a/src/service.c b/src/service.c index d912176..59728d1 100644 --- a/src/service.c +++ b/src/service.c @@ -471,7 +471,15 @@ create_switch_section (IndicatorSessionService * self) g_object_unref (item); if (indicator_session_guest_is_allowed (p->backend_guest)) - g_menu_append (menu, _("Guest Session"), "indicator.switch-to-guest"); + { + GMenuItem *item; + + item = g_menu_item_new (_("Guest Session"), "indicator.switch-to-guest"); + g_menu_item_set_attribute (item, "x-canonical-type", "s", "indicator.guest-menu-item"); + g_menu_append_item (menu, item); + + g_object_unref (item); + } /* build an array of all the users we know of */ users = g_ptr_array_new (); @@ -495,6 +503,7 @@ create_switch_section (IndicatorSessionService * self) const IndicatorSessionUser * u = g_ptr_array_index (users, i); item = g_menu_item_new (u->real_name, NULL); g_menu_item_set_action_and_target (item, "indicator.switch-to-user", "s", u->user_name); + g_menu_item_set_attribute (item, "x-canonical-type", "s", "indicator.user-menu-item"); g_menu_append_item (menu, item); g_object_unref (item); } -- cgit v1.2.3