← Back to team overview

ayatana-commits team mailing list archive

[Merge] lp:~ted/indicator-session/user-item into lp:indicator-session

 

Ted Gould has proposed merging lp:~ted/indicator-session/user-item into lp:indicator-session.

    Requested reviews:
    Indicator Applet Developers (indicator-applet-developers)


Creates a custom menuitem for users that has an icon that shows whether
they are logged in or not with an icon.

-- 
https://code.launchpad.net/~ted/indicator-session/user-item/+merge/19577
Your team ayatana-commits is subscribed to branch lp:indicator-session.
=== modified file 'configure.ac'
--- configure.ac	2010-02-11 16:47:17 +0000
+++ configure.ac	2010-02-18 05:50:25 +0000
@@ -132,14 +132,19 @@
 data/icons/Makefile
 data/icons/16x16/Makefile
 data/icons/16x16/actions/Makefile
+data/icons/16x16/status/Makefile
 data/icons/22x22/Makefile
 data/icons/22x22/actions/Makefile
+data/icons/22x22/status/Makefile
 data/icons/24x24/Makefile
 data/icons/24x24/actions/Makefile
+data/icons/24x24/status/Makefile
 data/icons/32x32/Makefile
 data/icons/32x32/actions/Makefile
+data/icons/32x32/status/Makefile
 data/icons/scalable/Makefile
 data/icons/scalable/actions/Makefile
+data/icons/scalable/status/Makefile
 po/Makefile.in
 ])
 

=== modified file 'data/icons/16x16/Makefile.am'
--- data/icons/16x16/Makefile.am	2009-12-24 19:31:30 +0000
+++ data/icons/16x16/Makefile.am	2010-02-18 05:50:25 +0000
@@ -1,1 +1,1 @@
-SUBDIRS = actions
+SUBDIRS = actions status

=== added directory 'data/icons/16x16/status'
=== added file 'data/icons/16x16/status/Makefile.am'
--- data/icons/16x16/status/Makefile.am	1970-01-01 00:00:00 +0000
+++ data/icons/16x16/status/Makefile.am	2010-02-18 05:50:25 +0000
@@ -0,0 +1,7 @@
+
+iconsdir = $(INDICATORICONSDIR)/hicolor/16x16/status
+
+icons_DATA =  \
+	account-logged-in.png
+
+EXTRA_DIST = $(icons_DATA)

=== added file 'data/icons/16x16/status/account-logged-in.png'
Binary files data/icons/16x16/status/account-logged-in.png	1970-01-01 00:00:00 +0000 and data/icons/16x16/status/account-logged-in.png	2010-02-18 05:50:25 +0000 differ
=== modified file 'data/icons/22x22/Makefile.am'
--- data/icons/22x22/Makefile.am	2009-12-24 19:31:30 +0000
+++ data/icons/22x22/Makefile.am	2010-02-18 05:50:25 +0000
@@ -1,1 +1,1 @@
-SUBDIRS = actions
+SUBDIRS = actions status

=== added directory 'data/icons/22x22/status'
=== added file 'data/icons/22x22/status/Makefile.am'
--- data/icons/22x22/status/Makefile.am	1970-01-01 00:00:00 +0000
+++ data/icons/22x22/status/Makefile.am	2010-02-18 05:50:25 +0000
@@ -0,0 +1,7 @@
+
+iconsdir = $(INDICATORICONSDIR)/hicolor/22x22/status
+
+icons_DATA =  \
+	account-logged-in.png
+
+EXTRA_DIST = $(icons_DATA)

=== added file 'data/icons/22x22/status/account-logged-in.png'
Binary files data/icons/22x22/status/account-logged-in.png	1970-01-01 00:00:00 +0000 and data/icons/22x22/status/account-logged-in.png	2010-02-18 05:50:25 +0000 differ
=== modified file 'data/icons/24x24/Makefile.am'
--- data/icons/24x24/Makefile.am	2009-12-24 19:31:30 +0000
+++ data/icons/24x24/Makefile.am	2010-02-18 05:50:25 +0000
@@ -1,1 +1,1 @@
-SUBDIRS = actions
+SUBDIRS = actions status

=== added directory 'data/icons/24x24/status'
=== added file 'data/icons/24x24/status/Makefile.am'
--- data/icons/24x24/status/Makefile.am	1970-01-01 00:00:00 +0000
+++ data/icons/24x24/status/Makefile.am	2010-02-18 05:50:25 +0000
@@ -0,0 +1,7 @@
+
+iconsdir = $(INDICATORICONSDIR)/hicolor/24x24/status
+
+icons_DATA =  \
+	account-logged-in.png
+
+EXTRA_DIST = $(icons_DATA)

=== added file 'data/icons/24x24/status/account-logged-in.png'
Binary files data/icons/24x24/status/account-logged-in.png	1970-01-01 00:00:00 +0000 and data/icons/24x24/status/account-logged-in.png	2010-02-18 05:50:25 +0000 differ
=== modified file 'data/icons/32x32/Makefile.am'
--- data/icons/32x32/Makefile.am	2009-12-24 19:31:30 +0000
+++ data/icons/32x32/Makefile.am	2010-02-18 05:50:25 +0000
@@ -1,1 +1,1 @@
-SUBDIRS = actions
+SUBDIRS = actions status

=== added directory 'data/icons/32x32/status'
=== added file 'data/icons/32x32/status/Makefile.am'
--- data/icons/32x32/status/Makefile.am	1970-01-01 00:00:00 +0000
+++ data/icons/32x32/status/Makefile.am	2010-02-18 05:50:25 +0000
@@ -0,0 +1,7 @@
+
+iconsdir = $(INDICATORICONSDIR)/hicolor/32x32/status
+
+icons_DATA =  \
+	account-logged-in.png
+
+EXTRA_DIST = $(icons_DATA)

=== added file 'data/icons/32x32/status/account-logged-in.png'
Binary files data/icons/32x32/status/account-logged-in.png	1970-01-01 00:00:00 +0000 and data/icons/32x32/status/account-logged-in.png	2010-02-18 05:50:25 +0000 differ
=== modified file 'data/icons/scalable/Makefile.am'
--- data/icons/scalable/Makefile.am	2009-12-24 19:31:30 +0000
+++ data/icons/scalable/Makefile.am	2010-02-18 05:50:25 +0000
@@ -1,1 +1,1 @@
-SUBDIRS = actions
+SUBDIRS = actions status

=== added directory 'data/icons/scalable/status'
=== added file 'data/icons/scalable/status/Makefile.am'
--- data/icons/scalable/status/Makefile.am	1970-01-01 00:00:00 +0000
+++ data/icons/scalable/status/Makefile.am	2010-02-18 05:50:25 +0000
@@ -0,0 +1,7 @@
+
+iconsdir = $(INDICATORICONSDIR)/hicolor/scalable/status
+
+icons_DATA =  \
+	account-logged-in.svg
+
+EXTRA_DIST = $(icons_DATA)

=== added file 'data/icons/scalable/status/account-logged-in.svg'
--- data/icons/scalable/status/account-logged-in.svg	1970-01-01 00:00:00 +0000
+++ data/icons/scalable/status/account-logged-in.svg	2010-02-18 05:50:25 +0000
@@ -0,0 +1,270 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/";
+   xmlns:cc="http://web.resource.org/cc/";
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
+   xmlns:svg="http://www.w3.org/2000/svg";
+   xmlns="http://www.w3.org/2000/svg";
+   xmlns:xlink="http://www.w3.org/1999/xlink";
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd";
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape";
+   id="svg1"
+   sodipodi:version="0.32"
+   inkscape:version="0.45"
+   width="48"
+   height="48"
+   sodipodi:docbase="/home/dobey/Projects/gnome-icon-theme/scalable/emblems"
+   sodipodi:docname="emblem-default.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   version="1.0">
+  <defs
+     id="defs3">
+    <linearGradient
+       id="linearGradient5237">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="0"
+         id="stop5239" />
+      <stop
+         id="stop5247"
+         offset="0.5"
+         style="stop-color:#ffffff;stop-opacity:1;" />
+      <stop
+         style="stop-color:#9c9c9c;stop-opacity:1"
+         offset="1"
+         id="stop5241" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient5226">
+      <stop
+         style="stop-color:#63b512;stop-opacity:1;"
+         offset="0"
+         id="stop5229" />
+      <stop
+         id="stop5245"
+         offset="0.16030352"
+         style="stop-color:#58a30e;stop-opacity:1;" />
+      <stop
+         id="stop5235"
+         offset="0.66008514"
+         style="stop-color:#366b04;stop-opacity:1" />
+      <stop
+         style="stop-color:#87ea25;stop-opacity:1"
+         offset="1"
+         id="stop5231" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient5300">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="0"
+         id="stop5302" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:0;"
+         offset="1"
+         id="stop5304" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient5224">
+      <stop
+         style="stop-color:#000000;stop-opacity:1;"
+         offset="0"
+         id="stop5226" />
+      <stop
+         style="stop-color:#000000;stop-opacity:0;"
+         offset="1"
+         id="stop5228" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5224"
+       id="radialGradient5230"
+       cx="14.5"
+       cy="26.6875"
+       fx="14.5"
+       fy="26.6875"
+       r="10"
+       gradientTransform="matrix(1,0,0,0.29375,0,18.848047)"
+       gradientUnits="userSpaceOnUse" />
+    <filter
+       inkscape:collect="always"
+       id="filter5296"
+       x="-0.09814655"
+       width="1.1962931"
+       y="-0.33411592"
+       height="1.6682318">
+      <feGaussianBlur
+         inkscape:collect="always"
+         stdDeviation="0.81788793"
+         id="feGaussianBlur5298" />
+    </filter>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5300"
+       id="radialGradient5306"
+       cx="29.77438"
+       cy="7.0922189"
+       fx="29.77438"
+       fy="7.0922189"
+       r="25.380436"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.2469896,0,0,2.2469896,-37.128341,-8.8439229)" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5224"
+       id="radialGradient5330"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,0.29375,0,18.848047)"
+       cx="14.5"
+       cy="26.6875"
+       fx="14.5"
+       fy="26.6875"
+       r="10" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5226"
+       id="radialGradient5233"
+       cx="29.392656"
+       cy="18.898249"
+       fx="29.392656"
+       fy="18.898249"
+       r="29.699959"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.5354369,0,0,1.5485894,-15.737913,-10.36738)" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5237"
+       id="radialGradient5243"
+       cx="22.9375"
+       cy="16.305218"
+       fx="22.9375"
+       fy="16.305218"
+       r="15.5625"
+       gradientTransform="matrix(1.5301205,0,0,1.6745294,-12.159639,-11.709817)"
+       gradientUnits="userSpaceOnUse" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#ededed"
+     borderopacity="1"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1"
+     inkscape:cx="39.269655"
+     inkscape:cy="17.441445"
+     inkscape:window-width="826"
+     inkscape:window-height="790"
+     gridspacingx="0.50000000mm"
+     gridspacingy="0.50000000mm"
+     showgrid="false"
+     inkscape:grid-bbox="false"
+     inkscape:window-x="461"
+     inkscape:window-y="278"
+     inkscape:current-layer="svg1"
+     borderlayer="true"
+     inkscape:showpageshadow="false"
+     width="744.09449px"
+     height="1052.3622px">
+    <inkscape:grid
+       type="xygrid"
+       id="grid5308" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage"; />
+        <dc:title>Emblem Urgent</dc:title>
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>Jakub Steiner</dc:title>
+          </cc:Agent>
+        </dc:creator>
+        <dc:contributor>
+          <cc:Agent>
+            <dc:title>Andreas Nilsson</dc:title>
+          </cc:Agent>
+        </dc:contributor>
+        <cc:license
+           rdf:resource="http://creativecommons.org/licenses/GPL/2.0/"; />
+        <dc:subject>
+          <rdf:Bag>
+            <rdf:li>generic</rdf:li>
+          </rdf:Bag>
+        </dc:subject>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/licenses/GPL/2.0/";>
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction"; />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution"; />
+        <cc:requires
+           rdf:resource="http://web.resource.org/cc/Notice"; />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks"; />
+        <cc:requires
+           rdf:resource="http://web.resource.org/cc/ShareAlike"; />
+        <cc:requires
+           rdf:resource="http://web.resource.org/cc/SourceCode"; />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <path
+     sodipodi:type="arc"
+     style="opacity:0.53012048;color:#000000;fill:url(#radialGradient5230);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;filter:url(#filter5296);enable-background:accumulate"
+     id="path4645"
+     sodipodi:cx="14.5"
+     sodipodi:cy="26.6875"
+     sodipodi:rx="10"
+     sodipodi:ry="2.9375"
+     d="M 24.5,26.6875 A 10,2.9375 0 1 1 4.5,26.6875 A 10,2.9375 0 1 1 24.5,26.6875 z"
+     transform="matrix(2.1570145,0,0,2.155398,-7.8468552,-16.33814)" />
+  <path
+     transform="matrix(1.3478975,0,0,1.3468874,3.8853414,6.4889877)"
+     d="M 24.5,26.6875 A 10,2.9375 0 1 1 4.5,26.6875 A 10,2.9375 0 1 1 24.5,26.6875 z"
+     sodipodi:ry="2.9375"
+     sodipodi:rx="10"
+     sodipodi:cy="26.6875"
+     sodipodi:cx="14.5"
+     id="path5328"
+     style="opacity:0.80120482;color:#000000;fill:url(#radialGradient5330);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;filter:url(#filter5296);enable-background:accumulate"
+     sodipodi:type="arc" />
+  <path
+     sodipodi:type="arc"
+     style="fill:url(#radialGradient5233);fill-opacity:1;fill-rule:evenodd;stroke:#316203;stroke-width:1.37804781999999992;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path907"
+     sodipodi:cx="29.392656"
+     sodipodi:cy="29.207693"
+     sodipodi:rx="29.010935"
+     sodipodi:ry="29.010935"
+     d="M 58.403591,29.207693 A 29.010935,29.010935 0 1 1 0.3817215,29.207693 A 29.010935,29.010935 0 1 1 58.403591,29.207693 z"
+     transform="matrix(0.7238447,0,0,0.7274883,2.1828126,2.3568607)" />
+  <path
+     sodipodi:type="arc"
+     style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#radialGradient5306);stroke-width:1.21160841;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+     id="path1552"
+     sodipodi:cx="29.77438"
+     sodipodi:cy="30.352861"
+     sodipodi:rx="24.175779"
+     sodipodi:ry="24.175779"
+     d="M 53.950159,30.352861 A 24.175779,24.175779 0 1 1 5.5986004,30.352861 A 24.175779,24.175779 0 1 1 53.950159,30.352861 z"
+     transform="matrix(0.8254302,0,0,0.8252681,-1.1457884,-1.4441229)" />
+  <path
+     style="opacity:1;color:#000000;fill:url(#radialGradient5243);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+     d="M 12.875,24.625 L 25.375,36.625 L 44,20.625 C 43.253602,16.729371 41.57038,13.679873 39.8125,11.0625 L 25.125,23.75 L 20.375,18.5 L 12.875,24.625 z"
+     id="path5222"
+     sodipodi:nodetypes="ccccccc" />
+  <path
+     style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#549910;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+     d="M 40.21875,10.8125 C 41.930961,13.346411 43.59334,15.979986 44.40625,20.3125"
+     id="path5224"
+     sodipodi:nodetypes="cc" />
+</svg>

=== modified file 'src/dbus-shared-names.h'
--- src/dbus-shared-names.h	2009-12-24 20:36:35 +0000
+++ src/dbus-shared-names.h	2010-02-18 05:50:25 +0000
@@ -38,4 +38,8 @@
 #define INDICATOR_SESSION_DBUS_OBJECT "/org/ayatana/indicator/session/menu"
 #define INDICATOR_SESSION_DBUS_VERSION  0
 
+#define USER_ITEM_TYPE            "x-canonical-user-item"
+#define USER_ITEM_PROP_NAME       "user-item-name"
+#define USER_ITEM_PROP_LOGGED_IN  "user-item-logged-in"
+
 #endif /* __DBUS_SHARED_NAMES_H__ */

=== modified file 'src/indicator-session.c'
--- src/indicator-session.c	2009-12-24 20:36:35 +0000
+++ src/indicator-session.c	2010-02-18 05:50:25 +0000
@@ -135,13 +135,47 @@
 	return status_image;
 }
 
+/* Builds an item with a hip little logged in icon. */
+static gboolean
+new_user_item (DbusmenuMenuitem * newitem, DbusmenuMenuitem * parent, DbusmenuClient * client)
+{
+	GtkMenuItem * gmi = GTK_MENU_ITEM(gtk_menu_item_new());
+	GtkWidget * hbox = gtk_hbox_new(FALSE, 0);
+
+	GtkWidget * label = gtk_label_new(dbusmenu_menuitem_property_get(newitem, USER_ITEM_PROP_NAME));
+	gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5);
+	gtk_box_pack_start(GTK_BOX(hbox), label, TRUE, TRUE, 0);
+	gtk_widget_show(label);
+
+	GtkWidget * icon = gtk_image_new_from_icon_name("account-logged-in", GTK_ICON_SIZE_MENU);
+	gtk_misc_set_alignment(GTK_MISC(icon), 1.0, 0.5);
+	gtk_box_pack_start(GTK_BOX(hbox), icon, FALSE, FALSE, 0);
+	if (dbusmenu_menuitem_property_get_bool(newitem, USER_ITEM_PROP_LOGGED_IN)) {
+		gtk_widget_show(icon);
+	} else {
+		gtk_widget_hide(icon);
+	}
+
+	gtk_container_add(GTK_CONTAINER(gmi), hbox);
+	gtk_widget_show(hbox);
+
+	dbusmenu_gtkclient_newitem_base(DBUSMENU_GTKCLIENT(client), newitem, gmi, parent);
+
+	return TRUE;
+}
+
 /* Indicator based function to get the menu for the whole
    applet.  This starts up asking for the parts of the menu
    from the various services. */
 static GtkMenu *
 get_menu (IndicatorObject * io)
 {
-	return GTK_MENU(dbusmenu_gtkmenu_new(INDICATOR_SESSION_DBUS_NAME, INDICATOR_SESSION_DBUS_OBJECT));
+	DbusmenuGtkMenu * menu = dbusmenu_gtkmenu_new(INDICATOR_SESSION_DBUS_NAME, INDICATOR_SESSION_DBUS_OBJECT);
+	DbusmenuGtkClient * client = dbusmenu_gtkmenu_get_client(menu);
+
+	dbusmenu_client_add_type_handler(DBUSMENU_CLIENT(client), USER_ITEM_TYPE, new_user_item);
+
+	return GTK_MENU(menu);
 }
 
 

=== modified file 'src/session-service.c'
--- src/session-service.c	2010-02-18 04:43:36 +0000
+++ src/session-service.c	2010-02-18 05:50:25 +0000
@@ -444,7 +444,9 @@
       if (check_guest_session ())
         {
           mi = dbusmenu_menuitem_new ();
-          dbusmenu_menuitem_property_set (mi, DBUSMENU_MENUITEM_PROP_LABEL, _("Guest Session"));
+		  dbusmenu_menuitem_property_set (mi, DBUSMENU_MENUITEM_PROP_TYPE, USER_ITEM_TYPE);
+          dbusmenu_menuitem_property_set (mi, USER_ITEM_PROP_NAME, _("Guest Session"));
+          dbusmenu_menuitem_property_set_bool (mi, USER_ITEM_PROP_LOGGED_IN, FALSE);
           dbusmenu_menuitem_child_append (root, mi);
           g_signal_connect (G_OBJECT (mi), DBUSMENU_MENUITEM_SIGNAL_ITEM_ACTIVATED, G_CALLBACK (activate_guest_session), NULL);
         }
@@ -493,7 +495,9 @@
               user->service = service;
 
               mi = dbusmenu_menuitem_new ();
-              dbusmenu_menuitem_property_set (mi, DBUSMENU_MENUITEM_PROP_LABEL, user->real_name);
+              dbusmenu_menuitem_property_set (mi, DBUSMENU_MENUITEM_PROP_TYPE, USER_ITEM_TYPE);
+              dbusmenu_menuitem_property_set (mi, USER_ITEM_PROP_NAME, user->real_name);
+			  dbusmenu_menuitem_property_set_bool (mi, USER_ITEM_PROP_LOGGED_IN, user->sessions != NULL);
               dbusmenu_menuitem_child_append (root, mi);
               g_signal_connect (G_OBJECT (mi), DBUSMENU_MENUITEM_SIGNAL_ITEM_ACTIVATED, G_CALLBACK (activate_user_session), user);
             }


Follow ups