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

Proposed by Ted Gould
Status: Merged
Merged at revision: not available
Proposed branch: lp:~ted/indicator-session/user-item
Merge into: lp:indicator-session/0.1
Diff against target: 498 lines (+360/-8)
15 files modified
configure.ac (+5/-0)
data/icons/16x16/Makefile.am (+1/-1)
data/icons/16x16/status/Makefile.am (+7/-0)
data/icons/22x22/Makefile.am (+1/-1)
data/icons/22x22/status/Makefile.am (+7/-0)
data/icons/24x24/Makefile.am (+1/-1)
data/icons/24x24/status/Makefile.am (+7/-0)
data/icons/32x32/Makefile.am (+1/-1)
data/icons/32x32/status/Makefile.am (+7/-0)
data/icons/scalable/Makefile.am (+1/-1)
data/icons/scalable/status/Makefile.am (+7/-0)
data/icons/scalable/status/account-logged-in.svg (+270/-0)
src/dbus-shared-names.h (+4/-0)
src/indicator-session.c (+35/-1)
src/session-service.c (+6/-2)
To merge this branch: bzr merge lp:~ted/indicator-session/user-item
Reviewer Review Type Date Requested Status
David Barth Approve
Neil J. Patel (community) Approve
Review via email: mp+19577@code.launchpad.net
To post a comment you must log in.
Revision history for this message
Ted Gould (ted) wrote :

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

Revision history for this message
Neil J. Patel (njpatel) wrote :

Looks good. Approved.

review: Approve
Revision history for this message
David Barth (dbarth) wrote :

+1

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'configure.ac'
2--- configure.ac 2010-02-11 16:47:17 +0000
3+++ configure.ac 2010-02-18 05:50:25 +0000
4@@ -132,14 +132,19 @@
5 data/icons/Makefile
6 data/icons/16x16/Makefile
7 data/icons/16x16/actions/Makefile
8+data/icons/16x16/status/Makefile
9 data/icons/22x22/Makefile
10 data/icons/22x22/actions/Makefile
11+data/icons/22x22/status/Makefile
12 data/icons/24x24/Makefile
13 data/icons/24x24/actions/Makefile
14+data/icons/24x24/status/Makefile
15 data/icons/32x32/Makefile
16 data/icons/32x32/actions/Makefile
17+data/icons/32x32/status/Makefile
18 data/icons/scalable/Makefile
19 data/icons/scalable/actions/Makefile
20+data/icons/scalable/status/Makefile
21 po/Makefile.in
22 ])
23
24
25=== modified file 'data/icons/16x16/Makefile.am'
26--- data/icons/16x16/Makefile.am 2009-12-24 19:31:30 +0000
27+++ data/icons/16x16/Makefile.am 2010-02-18 05:50:25 +0000
28@@ -1,1 +1,1 @@
29-SUBDIRS = actions
30+SUBDIRS = actions status
31
32=== added directory 'data/icons/16x16/status'
33=== added file 'data/icons/16x16/status/Makefile.am'
34--- data/icons/16x16/status/Makefile.am 1970-01-01 00:00:00 +0000
35+++ data/icons/16x16/status/Makefile.am 2010-02-18 05:50:25 +0000
36@@ -0,0 +1,7 @@
37+
38+iconsdir = $(INDICATORICONSDIR)/hicolor/16x16/status
39+
40+icons_DATA = \
41+ account-logged-in.png
42+
43+EXTRA_DIST = $(icons_DATA)
44
45=== added file 'data/icons/16x16/status/account-logged-in.png'
46Binary 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
47=== modified file 'data/icons/22x22/Makefile.am'
48--- data/icons/22x22/Makefile.am 2009-12-24 19:31:30 +0000
49+++ data/icons/22x22/Makefile.am 2010-02-18 05:50:25 +0000
50@@ -1,1 +1,1 @@
51-SUBDIRS = actions
52+SUBDIRS = actions status
53
54=== added directory 'data/icons/22x22/status'
55=== added file 'data/icons/22x22/status/Makefile.am'
56--- data/icons/22x22/status/Makefile.am 1970-01-01 00:00:00 +0000
57+++ data/icons/22x22/status/Makefile.am 2010-02-18 05:50:25 +0000
58@@ -0,0 +1,7 @@
59+
60+iconsdir = $(INDICATORICONSDIR)/hicolor/22x22/status
61+
62+icons_DATA = \
63+ account-logged-in.png
64+
65+EXTRA_DIST = $(icons_DATA)
66
67=== added file 'data/icons/22x22/status/account-logged-in.png'
68Binary 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
69=== modified file 'data/icons/24x24/Makefile.am'
70--- data/icons/24x24/Makefile.am 2009-12-24 19:31:30 +0000
71+++ data/icons/24x24/Makefile.am 2010-02-18 05:50:25 +0000
72@@ -1,1 +1,1 @@
73-SUBDIRS = actions
74+SUBDIRS = actions status
75
76=== added directory 'data/icons/24x24/status'
77=== added file 'data/icons/24x24/status/Makefile.am'
78--- data/icons/24x24/status/Makefile.am 1970-01-01 00:00:00 +0000
79+++ data/icons/24x24/status/Makefile.am 2010-02-18 05:50:25 +0000
80@@ -0,0 +1,7 @@
81+
82+iconsdir = $(INDICATORICONSDIR)/hicolor/24x24/status
83+
84+icons_DATA = \
85+ account-logged-in.png
86+
87+EXTRA_DIST = $(icons_DATA)
88
89=== added file 'data/icons/24x24/status/account-logged-in.png'
90Binary 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
91=== modified file 'data/icons/32x32/Makefile.am'
92--- data/icons/32x32/Makefile.am 2009-12-24 19:31:30 +0000
93+++ data/icons/32x32/Makefile.am 2010-02-18 05:50:25 +0000
94@@ -1,1 +1,1 @@
95-SUBDIRS = actions
96+SUBDIRS = actions status
97
98=== added directory 'data/icons/32x32/status'
99=== added file 'data/icons/32x32/status/Makefile.am'
100--- data/icons/32x32/status/Makefile.am 1970-01-01 00:00:00 +0000
101+++ data/icons/32x32/status/Makefile.am 2010-02-18 05:50:25 +0000
102@@ -0,0 +1,7 @@
103+
104+iconsdir = $(INDICATORICONSDIR)/hicolor/32x32/status
105+
106+icons_DATA = \
107+ account-logged-in.png
108+
109+EXTRA_DIST = $(icons_DATA)
110
111=== added file 'data/icons/32x32/status/account-logged-in.png'
112Binary 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
113=== modified file 'data/icons/scalable/Makefile.am'
114--- data/icons/scalable/Makefile.am 2009-12-24 19:31:30 +0000
115+++ data/icons/scalable/Makefile.am 2010-02-18 05:50:25 +0000
116@@ -1,1 +1,1 @@
117-SUBDIRS = actions
118+SUBDIRS = actions status
119
120=== added directory 'data/icons/scalable/status'
121=== added file 'data/icons/scalable/status/Makefile.am'
122--- data/icons/scalable/status/Makefile.am 1970-01-01 00:00:00 +0000
123+++ data/icons/scalable/status/Makefile.am 2010-02-18 05:50:25 +0000
124@@ -0,0 +1,7 @@
125+
126+iconsdir = $(INDICATORICONSDIR)/hicolor/scalable/status
127+
128+icons_DATA = \
129+ account-logged-in.svg
130+
131+EXTRA_DIST = $(icons_DATA)
132
133=== added file 'data/icons/scalable/status/account-logged-in.svg'
134--- data/icons/scalable/status/account-logged-in.svg 1970-01-01 00:00:00 +0000
135+++ data/icons/scalable/status/account-logged-in.svg 2010-02-18 05:50:25 +0000
136@@ -0,0 +1,270 @@
137+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
138+<!-- Created with Inkscape (http://www.inkscape.org/) -->
139+<svg
140+ xmlns:dc="http://purl.org/dc/elements/1.1/"
141+ xmlns:cc="http://web.resource.org/cc/"
142+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
143+ xmlns:svg="http://www.w3.org/2000/svg"
144+ xmlns="http://www.w3.org/2000/svg"
145+ xmlns:xlink="http://www.w3.org/1999/xlink"
146+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
147+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
148+ id="svg1"
149+ sodipodi:version="0.32"
150+ inkscape:version="0.45"
151+ width="48"
152+ height="48"
153+ sodipodi:docbase="/home/dobey/Projects/gnome-icon-theme/scalable/emblems"
154+ sodipodi:docname="emblem-default.svg"
155+ inkscape:output_extension="org.inkscape.output.svg.inkscape"
156+ version="1.0">
157+ <defs
158+ id="defs3">
159+ <linearGradient
160+ id="linearGradient5237">
161+ <stop
162+ style="stop-color:#ffffff;stop-opacity:1;"
163+ offset="0"
164+ id="stop5239" />
165+ <stop
166+ id="stop5247"
167+ offset="0.5"
168+ style="stop-color:#ffffff;stop-opacity:1;" />
169+ <stop
170+ style="stop-color:#9c9c9c;stop-opacity:1"
171+ offset="1"
172+ id="stop5241" />
173+ </linearGradient>
174+ <linearGradient
175+ id="linearGradient5226">
176+ <stop
177+ style="stop-color:#63b512;stop-opacity:1;"
178+ offset="0"
179+ id="stop5229" />
180+ <stop
181+ id="stop5245"
182+ offset="0.16030352"
183+ style="stop-color:#58a30e;stop-opacity:1;" />
184+ <stop
185+ id="stop5235"
186+ offset="0.66008514"
187+ style="stop-color:#366b04;stop-opacity:1" />
188+ <stop
189+ style="stop-color:#87ea25;stop-opacity:1"
190+ offset="1"
191+ id="stop5231" />
192+ </linearGradient>
193+ <linearGradient
194+ inkscape:collect="always"
195+ id="linearGradient5300">
196+ <stop
197+ style="stop-color:#ffffff;stop-opacity:1;"
198+ offset="0"
199+ id="stop5302" />
200+ <stop
201+ style="stop-color:#ffffff;stop-opacity:0;"
202+ offset="1"
203+ id="stop5304" />
204+ </linearGradient>
205+ <linearGradient
206+ inkscape:collect="always"
207+ id="linearGradient5224">
208+ <stop
209+ style="stop-color:#000000;stop-opacity:1;"
210+ offset="0"
211+ id="stop5226" />
212+ <stop
213+ style="stop-color:#000000;stop-opacity:0;"
214+ offset="1"
215+ id="stop5228" />
216+ </linearGradient>
217+ <radialGradient
218+ inkscape:collect="always"
219+ xlink:href="#linearGradient5224"
220+ id="radialGradient5230"
221+ cx="14.5"
222+ cy="26.6875"
223+ fx="14.5"
224+ fy="26.6875"
225+ r="10"
226+ gradientTransform="matrix(1,0,0,0.29375,0,18.848047)"
227+ gradientUnits="userSpaceOnUse" />
228+ <filter
229+ inkscape:collect="always"
230+ id="filter5296"
231+ x="-0.09814655"
232+ width="1.1962931"
233+ y="-0.33411592"
234+ height="1.6682318">
235+ <feGaussianBlur
236+ inkscape:collect="always"
237+ stdDeviation="0.81788793"
238+ id="feGaussianBlur5298" />
239+ </filter>
240+ <radialGradient
241+ inkscape:collect="always"
242+ xlink:href="#linearGradient5300"
243+ id="radialGradient5306"
244+ cx="29.77438"
245+ cy="7.0922189"
246+ fx="29.77438"
247+ fy="7.0922189"
248+ r="25.380436"
249+ gradientUnits="userSpaceOnUse"
250+ gradientTransform="matrix(2.2469896,0,0,2.2469896,-37.128341,-8.8439229)" />
251+ <radialGradient
252+ inkscape:collect="always"
253+ xlink:href="#linearGradient5224"
254+ id="radialGradient5330"
255+ gradientUnits="userSpaceOnUse"
256+ gradientTransform="matrix(1,0,0,0.29375,0,18.848047)"
257+ cx="14.5"
258+ cy="26.6875"
259+ fx="14.5"
260+ fy="26.6875"
261+ r="10" />
262+ <radialGradient
263+ inkscape:collect="always"
264+ xlink:href="#linearGradient5226"
265+ id="radialGradient5233"
266+ cx="29.392656"
267+ cy="18.898249"
268+ fx="29.392656"
269+ fy="18.898249"
270+ r="29.699959"
271+ gradientUnits="userSpaceOnUse"
272+ gradientTransform="matrix(1.5354369,0,0,1.5485894,-15.737913,-10.36738)" />
273+ <radialGradient
274+ inkscape:collect="always"
275+ xlink:href="#linearGradient5237"
276+ id="radialGradient5243"
277+ cx="22.9375"
278+ cy="16.305218"
279+ fx="22.9375"
280+ fy="16.305218"
281+ r="15.5625"
282+ gradientTransform="matrix(1.5301205,0,0,1.6745294,-12.159639,-11.709817)"
283+ gradientUnits="userSpaceOnUse" />
284+ </defs>
285+ <sodipodi:namedview
286+ id="base"
287+ pagecolor="#ffffff"
288+ bordercolor="#ededed"
289+ borderopacity="1"
290+ inkscape:pageopacity="0.0"
291+ inkscape:pageshadow="2"
292+ inkscape:zoom="1"
293+ inkscape:cx="39.269655"
294+ inkscape:cy="17.441445"
295+ inkscape:window-width="826"
296+ inkscape:window-height="790"
297+ gridspacingx="0.50000000mm"
298+ gridspacingy="0.50000000mm"
299+ showgrid="false"
300+ inkscape:grid-bbox="false"
301+ inkscape:window-x="461"
302+ inkscape:window-y="278"
303+ inkscape:current-layer="svg1"
304+ borderlayer="true"
305+ inkscape:showpageshadow="false"
306+ width="744.09449px"
307+ height="1052.3622px">
308+ <inkscape:grid
309+ type="xygrid"
310+ id="grid5308" />
311+ </sodipodi:namedview>
312+ <metadata
313+ id="metadata4">
314+ <rdf:RDF>
315+ <cc:Work
316+ rdf:about="">
317+ <dc:format>image/svg+xml</dc:format>
318+ <dc:type
319+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
320+ <dc:title>Emblem Urgent</dc:title>
321+ <dc:creator>
322+ <cc:Agent>
323+ <dc:title>Jakub Steiner</dc:title>
324+ </cc:Agent>
325+ </dc:creator>
326+ <dc:contributor>
327+ <cc:Agent>
328+ <dc:title>Andreas Nilsson</dc:title>
329+ </cc:Agent>
330+ </dc:contributor>
331+ <cc:license
332+ rdf:resource="http://creativecommons.org/licenses/GPL/2.0/" />
333+ <dc:subject>
334+ <rdf:Bag>
335+ <rdf:li>generic</rdf:li>
336+ </rdf:Bag>
337+ </dc:subject>
338+ </cc:Work>
339+ <cc:License
340+ rdf:about="http://creativecommons.org/licenses/GPL/2.0/">
341+ <cc:permits
342+ rdf:resource="http://web.resource.org/cc/Reproduction" />
343+ <cc:permits
344+ rdf:resource="http://web.resource.org/cc/Distribution" />
345+ <cc:requires
346+ rdf:resource="http://web.resource.org/cc/Notice" />
347+ <cc:permits
348+ rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
349+ <cc:requires
350+ rdf:resource="http://web.resource.org/cc/ShareAlike" />
351+ <cc:requires
352+ rdf:resource="http://web.resource.org/cc/SourceCode" />
353+ </cc:License>
354+ </rdf:RDF>
355+ </metadata>
356+ <path
357+ sodipodi:type="arc"
358+ 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"
359+ id="path4645"
360+ sodipodi:cx="14.5"
361+ sodipodi:cy="26.6875"
362+ sodipodi:rx="10"
363+ sodipodi:ry="2.9375"
364+ 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"
365+ transform="matrix(2.1570145,0,0,2.155398,-7.8468552,-16.33814)" />
366+ <path
367+ transform="matrix(1.3478975,0,0,1.3468874,3.8853414,6.4889877)"
368+ 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"
369+ sodipodi:ry="2.9375"
370+ sodipodi:rx="10"
371+ sodipodi:cy="26.6875"
372+ sodipodi:cx="14.5"
373+ id="path5328"
374+ 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"
375+ sodipodi:type="arc" />
376+ <path
377+ sodipodi:type="arc"
378+ 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"
379+ id="path907"
380+ sodipodi:cx="29.392656"
381+ sodipodi:cy="29.207693"
382+ sodipodi:rx="29.010935"
383+ sodipodi:ry="29.010935"
384+ 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"
385+ transform="matrix(0.7238447,0,0,0.7274883,2.1828126,2.3568607)" />
386+ <path
387+ sodipodi:type="arc"
388+ 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"
389+ id="path1552"
390+ sodipodi:cx="29.77438"
391+ sodipodi:cy="30.352861"
392+ sodipodi:rx="24.175779"
393+ sodipodi:ry="24.175779"
394+ 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"
395+ transform="matrix(0.8254302,0,0,0.8252681,-1.1457884,-1.4441229)" />
396+ <path
397+ 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"
398+ 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"
399+ id="path5222"
400+ sodipodi:nodetypes="ccccccc" />
401+ <path
402+ 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"
403+ d="M 40.21875,10.8125 C 41.930961,13.346411 43.59334,15.979986 44.40625,20.3125"
404+ id="path5224"
405+ sodipodi:nodetypes="cc" />
406+</svg>
407
408=== modified file 'src/dbus-shared-names.h'
409--- src/dbus-shared-names.h 2009-12-24 20:36:35 +0000
410+++ src/dbus-shared-names.h 2010-02-18 05:50:25 +0000
411@@ -38,4 +38,8 @@
412 #define INDICATOR_SESSION_DBUS_OBJECT "/org/ayatana/indicator/session/menu"
413 #define INDICATOR_SESSION_DBUS_VERSION 0
414
415+#define USER_ITEM_TYPE "x-canonical-user-item"
416+#define USER_ITEM_PROP_NAME "user-item-name"
417+#define USER_ITEM_PROP_LOGGED_IN "user-item-logged-in"
418+
419 #endif /* __DBUS_SHARED_NAMES_H__ */
420
421=== modified file 'src/indicator-session.c'
422--- src/indicator-session.c 2009-12-24 20:36:35 +0000
423+++ src/indicator-session.c 2010-02-18 05:50:25 +0000
424@@ -135,13 +135,47 @@
425 return status_image;
426 }
427
428+/* Builds an item with a hip little logged in icon. */
429+static gboolean
430+new_user_item (DbusmenuMenuitem * newitem, DbusmenuMenuitem * parent, DbusmenuClient * client)
431+{
432+ GtkMenuItem * gmi = GTK_MENU_ITEM(gtk_menu_item_new());
433+ GtkWidget * hbox = gtk_hbox_new(FALSE, 0);
434+
435+ GtkWidget * label = gtk_label_new(dbusmenu_menuitem_property_get(newitem, USER_ITEM_PROP_NAME));
436+ gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5);
437+ gtk_box_pack_start(GTK_BOX(hbox), label, TRUE, TRUE, 0);
438+ gtk_widget_show(label);
439+
440+ GtkWidget * icon = gtk_image_new_from_icon_name("account-logged-in", GTK_ICON_SIZE_MENU);
441+ gtk_misc_set_alignment(GTK_MISC(icon), 1.0, 0.5);
442+ gtk_box_pack_start(GTK_BOX(hbox), icon, FALSE, FALSE, 0);
443+ if (dbusmenu_menuitem_property_get_bool(newitem, USER_ITEM_PROP_LOGGED_IN)) {
444+ gtk_widget_show(icon);
445+ } else {
446+ gtk_widget_hide(icon);
447+ }
448+
449+ gtk_container_add(GTK_CONTAINER(gmi), hbox);
450+ gtk_widget_show(hbox);
451+
452+ dbusmenu_gtkclient_newitem_base(DBUSMENU_GTKCLIENT(client), newitem, gmi, parent);
453+
454+ return TRUE;
455+}
456+
457 /* Indicator based function to get the menu for the whole
458 applet. This starts up asking for the parts of the menu
459 from the various services. */
460 static GtkMenu *
461 get_menu (IndicatorObject * io)
462 {
463- return GTK_MENU(dbusmenu_gtkmenu_new(INDICATOR_SESSION_DBUS_NAME, INDICATOR_SESSION_DBUS_OBJECT));
464+ DbusmenuGtkMenu * menu = dbusmenu_gtkmenu_new(INDICATOR_SESSION_DBUS_NAME, INDICATOR_SESSION_DBUS_OBJECT);
465+ DbusmenuGtkClient * client = dbusmenu_gtkmenu_get_client(menu);
466+
467+ dbusmenu_client_add_type_handler(DBUSMENU_CLIENT(client), USER_ITEM_TYPE, new_user_item);
468+
469+ return GTK_MENU(menu);
470 }
471
472
473
474=== modified file 'src/session-service.c'
475--- src/session-service.c 2010-02-18 04:43:36 +0000
476+++ src/session-service.c 2010-02-18 05:50:25 +0000
477@@ -444,7 +444,9 @@
478 if (check_guest_session ())
479 {
480 mi = dbusmenu_menuitem_new ();
481- dbusmenu_menuitem_property_set (mi, DBUSMENU_MENUITEM_PROP_LABEL, _("Guest Session"));
482+ dbusmenu_menuitem_property_set (mi, DBUSMENU_MENUITEM_PROP_TYPE, USER_ITEM_TYPE);
483+ dbusmenu_menuitem_property_set (mi, USER_ITEM_PROP_NAME, _("Guest Session"));
484+ dbusmenu_menuitem_property_set_bool (mi, USER_ITEM_PROP_LOGGED_IN, FALSE);
485 dbusmenu_menuitem_child_append (root, mi);
486 g_signal_connect (G_OBJECT (mi), DBUSMENU_MENUITEM_SIGNAL_ITEM_ACTIVATED, G_CALLBACK (activate_guest_session), NULL);
487 }
488@@ -493,7 +495,9 @@
489 user->service = service;
490
491 mi = dbusmenu_menuitem_new ();
492- dbusmenu_menuitem_property_set (mi, DBUSMENU_MENUITEM_PROP_LABEL, user->real_name);
493+ dbusmenu_menuitem_property_set (mi, DBUSMENU_MENUITEM_PROP_TYPE, USER_ITEM_TYPE);
494+ dbusmenu_menuitem_property_set (mi, USER_ITEM_PROP_NAME, user->real_name);
495+ dbusmenu_menuitem_property_set_bool (mi, USER_ITEM_PROP_LOGGED_IN, user->sessions != NULL);
496 dbusmenu_menuitem_child_append (root, mi);
497 g_signal_connect (G_OBJECT (mi), DBUSMENU_MENUITEM_SIGNAL_ITEM_ACTIVATED, G_CALLBACK (activate_user_session), user);
498 }

Subscribers

People subscribed via source and target branches