Merge lp:~dbusmenu-team/libdbusmenu/ubuntu into lp:~ubuntu-desktop/libdbusmenu/ubuntu

Proposed by Ted Gould
Status: Merged
Merged at revision: not available
Proposed branch: lp:~dbusmenu-team/libdbusmenu/ubuntu
Merge into: lp:~ubuntu-desktop/libdbusmenu/ubuntu
Diff against target: 842 lines
11 files modified
.bzrignore (+6/-0)
configure.ac (+14/-3)
debian/changelog (+45/-0)
libdbusmenu-glib/client.c (+45/-1)
libdbusmenu-glib/menuitem.c (+38/-0)
libdbusmenu-gtk/Makefile.am (+1/-1)
libdbusmenu-gtk/client.c (+28/-6)
libdbusmenu-gtk/menu.c (+46/-0)
tests/Makefile.am (+61/-10)
tests/test-glib-simple-items.c (+9/-0)
tests/test-gtk-reorder-server.c (+119/-0)
To merge this branch: bzr merge lp:~dbusmenu-team/libdbusmenu/ubuntu
Reviewer Review Type Date Requested Status
Ken VanDine Approve
Review via email: mp+12808@code.launchpad.net
To post a comment you must log in.
Revision history for this message
Ted Gould (ted) wrote :

0.1.6

Revision history for this message
Ken VanDine (ken-vandine) :
review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file '.bzrignore'
--- .bzrignore 2009-09-03 19:26:18 +0000
+++ .bzrignore 2009-10-02 22:05:19 +0000
@@ -43,3 +43,9 @@
43mago.results43mago.results
44test-glib-simple-items44test-glib-simple-items
45libdbusmenu-gtk/libdbusmenu_gtk_la-menuitem.lo45libdbusmenu-gtk/libdbusmenu_gtk_la-menuitem.lo
46tests/test-glib-layout
47tests/test-glib-properties
48tests/test-gtk-label
49tests/test-gtk-reorder-server.c
50tests/test-gtk-reorder-server
51tests/test-gtk-reorder
4652
=== modified file 'configure.ac'
--- configure.ac 2009-09-24 21:07:24 +0000
+++ configure.ac 2009-10-02 22:05:19 +0000
@@ -1,11 +1,11 @@
11
2AC_INIT(libdbusmenu, 0.1.5, ted@canonical.com)2AC_INIT(libdbusmenu, 0.1.6, ted@canonical.com)
3AC_COPYRIGHT([Copyright 2009 Canonical])3AC_COPYRIGHT([Copyright 2009 Canonical])
44
5AC_PREREQ(2.53)5AC_PREREQ(2.53)
66
7AM_CONFIG_HEADER(config.h)7AM_CONFIG_HEADER(config.h)
8AM_INIT_AUTOMAKE(libdbusmenu, 0.1.5)8AM_INIT_AUTOMAKE(libdbusmenu, 0.1.6)
99
10AM_MAINTAINER_MODE10AM_MAINTAINER_MODE
1111
@@ -66,7 +66,7 @@
66###########################66###########################
6767
68LIBDBUSMENU_CURRENT=068LIBDBUSMENU_CURRENT=0
69LIBDBUSMENU_REVISION=569LIBDBUSMENU_REVISION=6
70LIBDBUSMENU_AGE=070LIBDBUSMENU_AGE=0
7171
72AC_SUBST(LIBDBUSMENU_CURRENT)72AC_SUBST(LIBDBUSMENU_CURRENT)
@@ -84,6 +84,16 @@
84AM_GLIB_GNU_GETTEXT84AM_GLIB_GNU_GETTEXT
8585
86###########################86###########################
87# Massive Debugging
88###########################
89
90with_massivedebugging="no"
91AC_ARG_ENABLE(massivedebugging, AS_HELP_STRING([--enable-massivedebugging], [Print out so much information your brain will hurt]), with_massivedebugging=$enableval, with_massivedebugging=no)
92if test "x$with_massivedebugging" = "xyes"; then
93 AC_DEFINE([MASSIVEDEBUGGING], [1], [Print everyting])
94fi
95
96###########################
87# Files97# Files
88###########################98###########################
8999
@@ -109,5 +119,6 @@
109libdbusmenu Configuration:119libdbusmenu Configuration:
110120
111 Prefix: $prefix121 Prefix: $prefix
122 Massive Debugging: $with_massivedebugging
112])123])
113124
114125
=== modified file 'debian/changelog'
--- debian/changelog 2009-09-24 22:22:47 +0000
+++ debian/changelog 2009-10-02 22:05:19 +0000
@@ -1,3 +1,4 @@
1<<<<<<< TREE
1libdbusmenu (0.1.5-0ubuntu1) karmic; urgency=low2libdbusmenu (0.1.5-0ubuntu1) karmic; urgency=low
23
3 * New upstream release (LP: #436185) 4 * New upstream release (LP: #436185)
@@ -5,6 +6,50 @@
5 -- Ken VanDine <ken.vandine@canonical.com> Thu, 24 Sep 2009 17:12:25 -04006 -- Ken VanDine <ken.vandine@canonical.com> Thu, 24 Sep 2009 17:12:25 -0400
67
7libdbusmenu (0.1.4-0ubuntu1) karmic; urgency=low8libdbusmenu (0.1.4-0ubuntu1) karmic; urgency=low
9=======
10libdbusmenu (0.1.6-0ubuntu1~ppa1) karmic; urgency=low
11
12 * Upstream release 0.1.6
13 * Managing the life-cycle of the GTK Menu item better to
14 ensure that it is positioned correctly and dies
15 appropriately. (LP: #430904 and LP: #419953)
16 * Checking returned properties to ensure that there wasn't
17 DBus errors. (LP: #433719)
18
19 -- Ted Gould <ted@ubuntu.com> Fri, 02 Oct 2009 17:00:45 -0500
20
21libdbusmenu (0.1.5-0ubuntu1~ppa1) karmic; urgency=low
22
23 * Upstream release 0.1.5
24
25 -- Ted Gould <ted@ubuntu.com> Thu, 24 Sep 2009 16:11:42 -0500
26
27libdbusmenu (0.1.4-0ubuntu2~ppa4) karmic; urgency=low
28
29 * Hooking up with trunk.
30
31 -- Ted Gould <ted@ubuntu.com> Thu, 24 Sep 2009 15:57:34 -0500
32
33libdbusmenu (0.1.4-0ubuntu2~ppa3) karmic; urgency=low
34
35 * Trying a revision ID
36
37 -- Ted Gould <ted@ubuntu.com> Mon, 21 Sep 2009 15:40:48 -0500
38
39libdbusmenu (0.1.4-0ubuntu2~ppa2) karmic; urgency=low
40
41 * Trying to double check the layout
42
43 -- Ted Gould <ted@ubuntu.com> Thu, 17 Sep 2009 16:14:16 -0500
44
45libdbusmenu (0.1.4-0ubuntu2~ppa1) karmic; urgency=low
46
47 * Signaling layout update on child moved
48
49 -- Ted Gould <ted@ubuntu.com> Thu, 17 Sep 2009 13:52:13 -0500
50
51libdbusmenu (0.1.4-0ubuntu1) UNRELEASED; urgency=low
52>>>>>>> MERGE-SOURCE
853
9 * Upstream release (LP: #432003)54 * Upstream release (LP: #432003)
10 - Applying a fix by not blocking if we're calling for the root. Everyone 55 - Applying a fix by not blocking if we're calling for the root. Everyone
1156
=== modified file 'libdbusmenu-glib/client.c'
--- libdbusmenu-glib/client.c 2009-09-21 20:38:02 +0000
+++ libdbusmenu-glib/client.c 2009-10-02 22:05:19 +0000
@@ -322,6 +322,10 @@
322static void322static void
323id_prop_update (DBusGProxy * proxy, guint id, gchar * property, gchar * value, DbusmenuClient * client)323id_prop_update (DBusGProxy * proxy, guint id, gchar * property, gchar * value, DbusmenuClient * client)
324{324{
325 #ifdef MASSIVEDEBUGGING
326 g_debug("Property change sent to client for item %d property %s value %s", id, property, g_utf8_strlen(value, 50) < 25 ? value : "<too long>");
327 #endif
328
325 DbusmenuClientPrivate * priv = DBUSMENU_CLIENT_GET_PRIVATE(client);329 DbusmenuClientPrivate * priv = DBUSMENU_CLIENT_GET_PRIVATE(client);
326 g_return_if_fail(priv->root != NULL);330 g_return_if_fail(priv->root != NULL);
327331
@@ -337,6 +341,10 @@
337static void341static void
338id_update (DBusGProxy * proxy, guint id, DbusmenuClient * client)342id_update (DBusGProxy * proxy, guint id, DbusmenuClient * client)
339{343{
344 #ifdef MASSIVEDEBUGGING
345 g_debug("Client side ID update: %d", id);
346 #endif
347
340 DbusmenuClientPrivate * priv = DBUSMENU_CLIENT_GET_PRIVATE(client);348 DbusmenuClientPrivate * priv = DBUSMENU_CLIENT_GET_PRIVATE(client);
341 g_return_if_fail(priv->root != NULL);349 g_return_if_fail(priv->root != NULL);
342350
@@ -414,6 +422,9 @@
414 if (priv->root != NULL) {422 if (priv->root != NULL) {
415 g_object_unref(G_OBJECT(priv->root));423 g_object_unref(G_OBJECT(priv->root));
416 priv->root = NULL;424 priv->root = NULL;
425 #ifdef MASSIVEDEBUGGING
426 g_debug("Proxies destroyed, signaling a root change and a layout update.");
427 #endif
417 g_signal_emit(G_OBJECT(userdata), signals[ROOT_CHANGED], 0, NULL, TRUE);428 g_signal_emit(G_OBJECT(userdata), signals[ROOT_CHANGED], 0, NULL, TRUE);
418 g_signal_emit(G_OBJECT(userdata), signals[LAYOUT_UPDATED], 0, TRUE);429 g_signal_emit(G_OBJECT(userdata), signals[LAYOUT_UPDATED], 0, TRUE);
419 }430 }
@@ -565,6 +576,10 @@
565static void576static void
566menuitem_get_properties_cb (DBusGProxy * proxy, GHashTable * properties, GError * error, gpointer data)577menuitem_get_properties_cb (DBusGProxy * proxy, GHashTable * properties, GError * error, gpointer data)
567{578{
579 if (error != NULL) {
580 g_warning("Error getting properties on a menuitem: %s", error->message);
581 return;
582 }
568 g_hash_table_foreach(properties, get_properties_helper, data);583 g_hash_table_foreach(properties, get_properties_helper, data);
569 g_hash_table_destroy(properties);584 g_hash_table_destroy(properties);
570 return;585 return;
@@ -575,6 +590,10 @@
575static void590static void
576menuitem_get_properties_new_cb (DBusGProxy * proxy, GHashTable * properties, GError * error, gpointer data)591menuitem_get_properties_new_cb (DBusGProxy * proxy, GHashTable * properties, GError * error, gpointer data)
577{592{
593 if (error != NULL) {
594 g_warning("Error getting properties on a new menuitem: %s", error->message);
595 return;
596 }
578 g_return_if_fail(data != NULL);597 g_return_if_fail(data != NULL);
579598
580 newItemPropData * propdata = (newItemPropData *)data;599 newItemPropData * propdata = (newItemPropData *)data;
@@ -598,6 +617,9 @@
598 handled = newfunc(propdata->item, propdata->parent, propdata->client);617 handled = newfunc(propdata->item, propdata->parent, propdata->client);
599 }618 }
600619
620 #ifdef MASSIVEDEBUGGING
621 g_debug("Client has realized a menuitem: %d", dbusmenu_menuitem_get_id(propdata->item));
622 #endif
601 g_signal_emit(G_OBJECT(propdata->item), DBUSMENU_MENUITEM_SIGNAL_REALIZED_ID, 0, TRUE);623 g_signal_emit(G_OBJECT(propdata->item), DBUSMENU_MENUITEM_SIGNAL_REALIZED_ID, 0, TRUE);
602624
603 if (!handled) {625 if (!handled) {
@@ -635,7 +657,9 @@
635parse_layout_xml(DbusmenuClient * client, xmlNodePtr node, DbusmenuMenuitem * item, DbusmenuMenuitem * parent, DBusGProxy * proxy)657parse_layout_xml(DbusmenuClient * client, xmlNodePtr node, DbusmenuMenuitem * item, DbusmenuMenuitem * parent, DBusGProxy * proxy)
636{658{
637 guint id = parse_node_get_id(node);659 guint id = parse_node_get_id(node);
638 /* g_debug("Looking at node with id: %d", id); */660 #ifdef MASSIVEDEBUGGING
661 g_debug("Client looking at node with id: %d", id);
662 #endif
639 if (item == NULL || dbusmenu_menuitem_get_id(item) != id || id == 0) {663 if (item == NULL || dbusmenu_menuitem_get_id(item) != id || id == 0) {
640 if (item != NULL) {664 if (item != NULL) {
641 if (parent != NULL) {665 if (parent != NULL) {
@@ -699,7 +723,9 @@
699 GList * oldchildleft = NULL;723 GList * oldchildleft = NULL;
700 for (oldchildleft = oldchildren; oldchildleft != NULL; oldchildleft = g_list_next(oldchildleft)) {724 for (oldchildleft = oldchildren; oldchildleft != NULL; oldchildleft = g_list_next(oldchildleft)) {
701 DbusmenuMenuitem * oldmi = DBUSMENU_MENUITEM(oldchildleft->data);725 DbusmenuMenuitem * oldmi = DBUSMENU_MENUITEM(oldchildleft->data);
726 #ifdef MASSIVEDEBUGGING
702 g_debug("Unref'ing menu item with layout update. ID: %d", dbusmenu_menuitem_get_id(oldmi));727 g_debug("Unref'ing menu item with layout update. ID: %d", dbusmenu_menuitem_get_id(oldmi));
728 #endif
703 g_object_unref(G_OBJECT(oldmi));729 g_object_unref(G_OBJECT(oldmi));
704 }730 }
705 g_list_free(oldchildren);731 g_list_free(oldchildren);
@@ -712,6 +738,10 @@
712static gint738static gint
713parse_layout (DbusmenuClient * client, const gchar * layout)739parse_layout (DbusmenuClient * client, const gchar * layout)
714{740{
741 #ifdef MASSIVEDEBUGGING
742 g_debug("Client Parsing a new layout");
743 #endif
744
715 DbusmenuClientPrivate * priv = DBUSMENU_CLIENT_GET_PRIVATE(client);745 DbusmenuClientPrivate * priv = DBUSMENU_CLIENT_GET_PRIVATE(client);
716746
717 xmlDocPtr xmldoc;747 xmlDocPtr xmldoc;
@@ -730,6 +760,9 @@
730 }760 }
731761
732 if (priv->root != oldroot) {762 if (priv->root != oldroot) {
763 #ifdef MASSIVEDEBUGGING
764 g_debug("Client signaling root changed.");
765 #endif
733 g_signal_emit(G_OBJECT(client), signals[ROOT_CHANGED], 0, priv->root, TRUE);766 g_signal_emit(G_OBJECT(client), signals[ROOT_CHANGED], 0, priv->root, TRUE);
734 }767 }
735768
@@ -764,6 +797,9 @@
764797
765 priv->my_revision = rev;798 priv->my_revision = rev;
766 /* g_debug("Root is now: 0x%X", (unsigned int)priv->root); */799 /* g_debug("Root is now: 0x%X", (unsigned int)priv->root); */
800 #ifdef MASSIVEDEBUGGING
801 g_debug("Client signaling layout has changed.");
802 #endif
767 g_signal_emit(G_OBJECT(client), signals[LAYOUT_UPDATED], 0, TRUE);803 g_signal_emit(G_OBJECT(client), signals[LAYOUT_UPDATED], 0, TRUE);
768804
769 if (priv->my_revision < priv->current_revision) {805 if (priv->my_revision < priv->current_revision) {
@@ -852,6 +888,10 @@
852 return NULL;888 return NULL;
853 }889 }
854890
891 #ifdef MASSIVEDEBUGGING
892 g_debug("Client get root: %X", (guint)priv->root);
893 #endif
894
855 return priv->root;895 return priv->root;
856}896}
857897
@@ -884,6 +924,10 @@
884924
885 DbusmenuClientPrivate * priv = DBUSMENU_CLIENT_GET_PRIVATE(client);925 DbusmenuClientPrivate * priv = DBUSMENU_CLIENT_GET_PRIVATE(client);
886926
927 #ifdef MASSIVEDEBUGGING
928 g_debug("Adding a type handler for '%s'", type);
929 #endif
930
887 if (priv->type_handlers == NULL) {931 if (priv->type_handlers == NULL) {
888 g_warning("Type handlers hashtable not built");932 g_warning("Type handlers hashtable not built");
889 return FALSE;933 return FALSE;
890934
=== modified file 'libdbusmenu-glib/menuitem.c'
--- libdbusmenu-glib/menuitem.c 2009-09-21 20:01:40 +0000
+++ libdbusmenu-glib/menuitem.c 2009-10-02 22:05:19 +0000
@@ -32,6 +32,11 @@
32#include "menuitem.h"32#include "menuitem.h"
33#include "menuitem-marshal.h"33#include "menuitem-marshal.h"
3434
35#ifdef MASSIVEDEBUGGING
36#define LABEL(x) dbusmenu_menuitem_property_get(DBUSMENU_MENUITEM(x), DBUSMENU_MENUITEM_PROP_LABEL)
37#define ID(x) dbusmenu_menuitem_get_id(DBUSMENU_MENUITEM(x))
38#endif
39
35/* Private */40/* Private */
36/**41/**
37 DbusmenuMenuitemPrivate:42 DbusmenuMenuitemPrivate:
@@ -362,6 +367,9 @@
362static void367static void
363take_children_signal (gpointer data, gpointer user_data)368take_children_signal (gpointer data, gpointer user_data)
364{369{
370 #ifdef MASSIVEDEBUGGING
371 g_debug("Menuitem %d (%s) signalling child removed %d (%s)", ID(user_data), LABEL(user_data), ID(data), LABEL(data));
372 #endif
365 g_signal_emit(G_OBJECT(user_data), signals[CHILD_REMOVED], 0, DBUSMENU_MENUITEM(data), TRUE);373 g_signal_emit(G_OBJECT(user_data), signals[CHILD_REMOVED], 0, DBUSMENU_MENUITEM(data), TRUE);
366 return;374 return;
367}375}
@@ -404,6 +412,11 @@
404guint412guint
405dbusmenu_menuitem_get_position (DbusmenuMenuitem * mi, DbusmenuMenuitem * parent)413dbusmenu_menuitem_get_position (DbusmenuMenuitem * mi, DbusmenuMenuitem * parent)
406{414{
415 #ifdef MASSIVEDEBUGGING
416 if (!DBUSMENU_IS_MENUITEM(mi)) g_warning("Getting position of %d (%s), it's at: %d (mi fail)", ID(mi), LABEL(mi), 0);
417 if (!DBUSMENU_IS_MENUITEM(parent)) g_warning("Getting position of %d (%s), it's at: %d (parent fail)", ID(mi), LABEL(mi), 0);
418 #endif
419
407 /* TODO: I'm not too happy returning zeros here. But that's all I've got */420 /* TODO: I'm not too happy returning zeros here. But that's all I've got */
408 g_return_val_if_fail(DBUSMENU_IS_MENUITEM(mi), 0);421 g_return_val_if_fail(DBUSMENU_IS_MENUITEM(mi), 0);
409 g_return_val_if_fail(DBUSMENU_IS_MENUITEM(parent), 0);422 g_return_val_if_fail(DBUSMENU_IS_MENUITEM(parent), 0);
@@ -417,6 +430,10 @@
417430
418 if (childs == NULL) return 0;431 if (childs == NULL) return 0;
419432
433 #ifdef MASSIVEDEBUGGING
434 g_debug("Getting position of %d (%s), it's at: %d", ID(mi), LABEL(mi), count);
435 #endif
436
420 return count;437 return count;
421}438}
422439
@@ -438,6 +455,9 @@
438455
439 DbusmenuMenuitemPrivate * priv = DBUSMENU_MENUITEM_GET_PRIVATE(mi);456 DbusmenuMenuitemPrivate * priv = DBUSMENU_MENUITEM_GET_PRIVATE(mi);
440 priv->children = g_list_append(priv->children, child);457 priv->children = g_list_append(priv->children, child);
458 #ifdef MASSIVEDEBUGGING
459 g_debug("Menuitem %d (%s) signalling child added %d (%s) at %d", ID(mi), LABEL(mi), ID(child), LABEL(child), g_list_length(priv->children) - 1);
460 #endif
441 g_signal_emit(G_OBJECT(mi), signals[CHILD_ADDED], 0, child, g_list_length(priv->children) - 1, TRUE);461 g_signal_emit(G_OBJECT(mi), signals[CHILD_ADDED], 0, child, g_list_length(priv->children) - 1, TRUE);
442 return TRUE;462 return TRUE;
443}463}
@@ -460,6 +480,9 @@
460480
461 DbusmenuMenuitemPrivate * priv = DBUSMENU_MENUITEM_GET_PRIVATE(mi);481 DbusmenuMenuitemPrivate * priv = DBUSMENU_MENUITEM_GET_PRIVATE(mi);
462 priv->children = g_list_prepend(priv->children, child);482 priv->children = g_list_prepend(priv->children, child);
483 #ifdef MASSIVEDEBUGGING
484 g_debug("Menuitem %d (%s) signalling child added %d (%s) at %d", ID(mi), LABEL(mi), ID(child), LABEL(child), 0);
485 #endif
463 g_signal_emit(G_OBJECT(mi), signals[CHILD_ADDED], 0, child, 0, TRUE);486 g_signal_emit(G_OBJECT(mi), signals[CHILD_ADDED], 0, child, 0, TRUE);
464 return TRUE;487 return TRUE;
465}488}
@@ -483,6 +506,9 @@
483506
484 DbusmenuMenuitemPrivate * priv = DBUSMENU_MENUITEM_GET_PRIVATE(mi);507 DbusmenuMenuitemPrivate * priv = DBUSMENU_MENUITEM_GET_PRIVATE(mi);
485 priv->children = g_list_remove(priv->children, child);508 priv->children = g_list_remove(priv->children, child);
509 #ifdef MASSIVEDEBUGGING
510 g_debug("Menuitem %d (%s) signalling child removed %d (%s)", ID(mi), LABEL(mi), ID(child), LABEL(child));
511 #endif
486 g_signal_emit(G_OBJECT(mi), signals[CHILD_REMOVED], 0, child, TRUE);512 g_signal_emit(G_OBJECT(mi), signals[CHILD_REMOVED], 0, child, TRUE);
487 return TRUE;513 return TRUE;
488}514}
@@ -507,6 +533,9 @@
507533
508 DbusmenuMenuitemPrivate * priv = DBUSMENU_MENUITEM_GET_PRIVATE(mi);534 DbusmenuMenuitemPrivate * priv = DBUSMENU_MENUITEM_GET_PRIVATE(mi);
509 priv->children = g_list_insert(priv->children, child, position);535 priv->children = g_list_insert(priv->children, child, position);
536 #ifdef MASSIVEDEBUGGING
537 g_debug("Menuitem %d (%s) signalling child added %d (%s) at %d", ID(mi), LABEL(mi), ID(child), LABEL(child), position);
538 #endif
510 g_signal_emit(G_OBJECT(mi), signals[CHILD_ADDED], 0, child, position, TRUE);539 g_signal_emit(G_OBJECT(mi), signals[CHILD_ADDED], 0, child, position, TRUE);
511 return TRUE;540 return TRUE;
512}541}
@@ -543,6 +572,9 @@
543 priv->children = g_list_remove(priv->children, child);572 priv->children = g_list_remove(priv->children, child);
544 priv->children = g_list_insert(priv->children, child, position);573 priv->children = g_list_insert(priv->children, child, position);
545574
575 #ifdef MASSIVEDEBUGGING
576 g_debug("Menuitem %d (%s) signalling child %d (%s) moved from %d to %d", ID(mi), LABEL(mi), ID(child), LABEL(child), oldpos, position);
577 #endif
546 g_signal_emit(G_OBJECT(mi), signals[CHILD_MOVED], 0, child, position, oldpos, TRUE);578 g_signal_emit(G_OBJECT(mi), signals[CHILD_MOVED], 0, child, position, oldpos, TRUE);
547579
548 return TRUE;580 return TRUE;
@@ -658,6 +690,9 @@
658 gchar * lval = g_strdup(value);690 gchar * lval = g_strdup(value);
659691
660 g_hash_table_insert(priv->properties, lprop, lval);692 g_hash_table_insert(priv->properties, lprop, lval);
693 #ifdef MASSIVEDEBUGGING
694 g_debug("Menuitem %d (%s) signalling property '%s' changed to '%s'", ID(mi), LABEL(mi), property, g_utf8_strlen(value, 50) < 25 ? value : "<too long>");
695 #endif
661 g_signal_emit(G_OBJECT(mi), signals[PROPERTY_CHANGED], 0, property, value, TRUE);696 g_signal_emit(G_OBJECT(mi), signals[PROPERTY_CHANGED], 0, property, value, TRUE);
662697
663 return TRUE;698 return TRUE;
@@ -882,6 +917,9 @@
882dbusmenu_menuitem_activate (DbusmenuMenuitem * mi)917dbusmenu_menuitem_activate (DbusmenuMenuitem * mi)
883{918{
884 g_return_if_fail(DBUSMENU_IS_MENUITEM(mi));919 g_return_if_fail(DBUSMENU_IS_MENUITEM(mi));
920 #ifdef MASSIVEDEBUGGING
921 g_debug("Menuitem %d (%s) activated", ID(mi), LABEL(mi));
922 #endif
885 g_signal_emit(G_OBJECT(mi), signals[ITEM_ACTIVATED], 0, TRUE);923 g_signal_emit(G_OBJECT(mi), signals[ITEM_ACTIVATED], 0, TRUE);
886 return;924 return;
887}925}
888926
=== modified file 'libdbusmenu-gtk/Makefile.am'
--- libdbusmenu-gtk/Makefile.am 2009-09-02 18:29:01 +0000
+++ libdbusmenu-gtk/Makefile.am 2009-10-02 22:05:19 +0000
@@ -26,7 +26,7 @@
26 -export-symbols-regex "^[^_].*"26 -export-symbols-regex "^[^_].*"
2727
28libdbusmenu_gtk_la_CFLAGS = \28libdbusmenu_gtk_la_CFLAGS = \
29 $(DBUSMENUGTK_CFLAGS) -I$(srcdir)/.. -Wall -Werror29 $(DBUSMENUGTK_CFLAGS) -I$(srcdir)/.. -Wall -Werror -DG_DISABLE_DEPRECATED -DG_LOG_DOMAIN="\"LIBDBUSMENU-GTK\""
3030
31libdbusmenu_gtk_la_LIBADD = \31libdbusmenu_gtk_la_LIBADD = \
32 ../libdbusmenu-glib/libdbusmenu-glib.la \32 ../libdbusmenu-glib/libdbusmenu-glib.la \
3333
=== modified file 'libdbusmenu-gtk/client.c'
--- libdbusmenu-gtk/client.c 2009-09-09 21:50:48 +0000
+++ libdbusmenu-gtk/client.c 2009-10-02 22:05:19 +0000
@@ -159,7 +159,9 @@
159static void159static void
160destoryed_dbusmenuitem_cb (gpointer udata, GObject * dbusmenuitem)160destoryed_dbusmenuitem_cb (gpointer udata, GObject * dbusmenuitem)
161{161{
162 /* g_debug("DbusmenuMenuitem was destroyed"); */162 #ifdef MASSIVEDEBUGGING
163 g_debug("DbusmenuMenuitem was destroyed");
164 #endif
163 gtk_widget_destroy(GTK_WIDGET(udata));165 gtk_widget_destroy(GTK_WIDGET(udata));
164 return;166 return;
165}167}
@@ -176,6 +178,15 @@
176 return;178 return;
177}179}
178180
181#ifdef MASSIVEDEBUGGING
182static void
183destroy_gmi (GtkMenuItem * gmi, DbusmenuMenuitem * mi)
184{
185 g_debug("Destorying GTK Menuitem for %d", dbusmenu_menuitem_get_id(mi));
186 return;
187}
188#endif
189
179/**190/**
180 dbusmenu_gtkclient_newitem_base:191 dbusmenu_gtkclient_newitem_base:
181 @client: The client handling everything on this connection192 @client: The client handling everything on this connection
@@ -195,8 +206,16 @@
195void206void
196dbusmenu_gtkclient_newitem_base (DbusmenuGtkClient * client, DbusmenuMenuitem * item, GtkMenuItem * gmi, DbusmenuMenuitem * parent)207dbusmenu_gtkclient_newitem_base (DbusmenuGtkClient * client, DbusmenuMenuitem * item, GtkMenuItem * gmi, DbusmenuMenuitem * parent)
197{208{
209 #ifdef MASSIVEDEBUGGING
210 g_debug("GTK Client new item base for %d", dbusmenu_menuitem_get_id(item));
211 #endif
212
198 /* Attach these two */213 /* Attach these two */
199 g_object_set_data(G_OBJECT(item), data_menuitem, gmi);214 g_object_set_data(G_OBJECT(item), data_menuitem, gmi);
215 g_object_ref(G_OBJECT(gmi));
216 #ifdef MASSIVEDEBUGGING
217 g_signal_connect(G_OBJECT(gmi), "destroy", G_CALLBACK(destroy_gmi), item);
218 #endif
200219
201 /* DbusmenuMenuitem signals */220 /* DbusmenuMenuitem signals */
202 g_signal_connect(G_OBJECT(item), DBUSMENU_MENUITEM_SIGNAL_PROPERTY_CHANGED, G_CALLBACK(menu_prop_change_cb), gmi);221 g_signal_connect(G_OBJECT(item), DBUSMENU_MENUITEM_SIGNAL_PROPERTY_CHANGED, G_CALLBACK(menu_prop_change_cb), gmi);
@@ -222,6 +241,10 @@
222static void241static void
223new_child (DbusmenuMenuitem * mi, DbusmenuMenuitem * child, guint position, DbusmenuGtkClient * gtkclient)242new_child (DbusmenuMenuitem * mi, DbusmenuMenuitem * child, guint position, DbusmenuGtkClient * gtkclient)
224{243{
244 #ifdef MASSIVEDEBUGGING
245 g_debug("GTK Client new child for %d on %d at %d", dbusmenu_menuitem_get_id(mi), dbusmenu_menuitem_get_id(child), position);
246 #endif
247
225 if (dbusmenu_menuitem_get_root(mi)) { return; }248 if (dbusmenu_menuitem_get_root(mi)) { return; }
226249
227 gpointer ann_menu = g_object_get_data(G_OBJECT(mi), data_menu);250 gpointer ann_menu = g_object_get_data(G_OBJECT(mi), data_menu);
@@ -316,14 +339,13 @@
316 g_return_val_if_fail(DBUSMENU_IS_GTKCLIENT(client), NULL);339 g_return_val_if_fail(DBUSMENU_IS_GTKCLIENT(client), NULL);
317 g_return_val_if_fail(DBUSMENU_IS_MENUITEM(item), NULL);340 g_return_val_if_fail(DBUSMENU_IS_MENUITEM(item), NULL);
318341
319 GtkMenuItem * mi = GTK_MENU_ITEM(g_object_get_data(G_OBJECT(item), data_menuitem));342 gpointer data = g_object_get_data(G_OBJECT(item), data_menuitem);
320 if (mi == NULL) {343 if (data == NULL) {
321 // new_menuitem(DBUSMENU_CLIENT(client), item, NULL);
322 g_warning("GTK not updated");344 g_warning("GTK not updated");
323 mi = GTK_MENU_ITEM(g_object_get_data(G_OBJECT(item), data_menuitem));345 return NULL;
324 }346 }
325347
326 return mi;348 return GTK_MENU_ITEM(data);
327}349}
328350
329/* The base type handler that builds a plain ol'351/* The base type handler that builds a plain ol'
330352
=== modified file 'libdbusmenu-gtk/menu.c'
--- libdbusmenu-gtk/menu.c 2009-09-09 22:09:10 +0000
+++ libdbusmenu-gtk/menu.c 2009-10-02 22:05:19 +0000
@@ -185,6 +185,28 @@
185185
186/* Internal Functions */186/* Internal Functions */
187187
188#ifdef MASSIVEDEBUGGING
189typedef struct {
190 GtkMenuItem * mi;
191 gint finalpos;
192 gboolean found;
193} menu_pos_t;
194
195static void
196find_pos (GtkWidget * widget, gpointer data)
197{
198 menu_pos_t * menu_pos = (menu_pos_t *)data;
199 if (menu_pos->found) return;
200 if ((gpointer)(menu_pos->mi) == (gpointer)widget) {
201 menu_pos->found = TRUE;
202 } else {
203 menu_pos->finalpos++;
204 }
205 return;
206}
207#endif
208
209
188/* Called when a new child of the root item is210/* Called when a new child of the root item is
189 added. Sets up a signal for when it's actually211 added. Sets up a signal for when it's actually
190 realized. */212 realized. */
@@ -192,7 +214,24 @@
192root_child_added (DbusmenuMenuitem * root, DbusmenuMenuitem * child, guint position, DbusmenuGtkMenu * menu)214root_child_added (DbusmenuMenuitem * root, DbusmenuMenuitem * child, guint position, DbusmenuGtkMenu * menu)
193{215{
194 g_debug("Root new child");216 g_debug("Root new child");
217 DbusmenuGtkMenuPrivate * priv = DBUSMENU_GTKMENU_GET_PRIVATE(menu);
218
195 g_signal_connect(G_OBJECT(child), DBUSMENU_MENUITEM_SIGNAL_REALIZED, G_CALLBACK(child_realized), menu);219 g_signal_connect(G_OBJECT(child), DBUSMENU_MENUITEM_SIGNAL_REALIZED, G_CALLBACK(child_realized), menu);
220
221 GtkMenuItem * mi = dbusmenu_gtkclient_menuitem_get(priv->client, child);
222 if (mi != NULL) {
223 GtkWidget * item = GTK_WIDGET(mi);
224 gtk_menu_insert(GTK_MENU(menu), item, position);
225 #ifdef MASSIVEDEBUGGING
226 menu_pos_t menu_pos;
227 menu_pos.mi = mi;
228 menu_pos.finalpos = 0;
229 menu_pos.found = FALSE;
230
231 gtk_container_foreach(GTK_CONTAINER(menu), find_pos, &menu_pos);
232 g_debug("Menu position requested was %d but got %d", position, menu_pos.finalpos);
233 #endif
234 }
196 return;235 return;
197}236}
198237
@@ -212,6 +251,12 @@
212root_child_delete (DbusmenuMenuitem * root, DbusmenuMenuitem * child, DbusmenuGtkMenu * menu)251root_child_delete (DbusmenuMenuitem * root, DbusmenuMenuitem * child, DbusmenuGtkMenu * menu)
213{252{
214 g_debug("Root child deleted");253 g_debug("Root child deleted");
254 DbusmenuGtkMenuPrivate * priv = DBUSMENU_GTKMENU_GET_PRIVATE(menu);
255 GtkWidget * item = GTK_WIDGET(dbusmenu_gtkclient_menuitem_get(priv->client, child));
256 if (item != NULL) {
257 gtk_container_remove(GTK_CONTAINER(menu), item);
258 }
259
215 if (g_list_length(dbusmenu_menuitem_get_children(root)) == 0) {260 if (g_list_length(dbusmenu_menuitem_get_children(root)) == 0) {
216 gtk_widget_hide(GTK_WIDGET(menu));261 gtk_widget_hide(GTK_WIDGET(menu));
217 }262 }
@@ -223,6 +268,7 @@
223static void268static void
224child_realized (DbusmenuMenuitem * child, gpointer userdata)269child_realized (DbusmenuMenuitem * child, gpointer userdata)
225{270{
271 g_debug("Root child realized");
226 g_return_if_fail(DBUSMENU_IS_GTKMENU(userdata));272 g_return_if_fail(DBUSMENU_IS_GTKMENU(userdata));
227273
228 DbusmenuGtkMenu * menu = DBUSMENU_GTKMENU(userdata);274 DbusmenuGtkMenu * menu = DBUSMENU_GTKMENU(userdata);
229275
=== modified file 'tests/Makefile.am'
--- tests/Makefile.am 2009-07-01 05:34:05 +0000
+++ tests/Makefile.am 2009-10-02 22:05:19 +0000
@@ -1,12 +1,15 @@
1SUBDIRS = dbusmenu-gtk1SUBDIRS = dbusmenu-gtk
22
3check: tests
4
5DBUS_RUNNER=dbus-test-runner --dbus-config /usr/share/dbus-test-runner/session.conf3DBUS_RUNNER=dbus-test-runner --dbus-config /usr/share/dbus-test-runner/session.conf
64
7tests: test-glib-layout test-glib-properties test-gtk-label test-glib-simple-items5TESTS = \
6 test-glib-layout \
7 test-glib-properties \
8 test-gtk-label \
9 test-glib-simple-items \
10 test-gtk-reorder
811
9libexec_PROGRAMS = \12check_PROGRAMS = \
10 glib-server-nomenu \13 glib-server-nomenu \
11 test-glib-layout-client \14 test-glib-layout-client \
12 test-glib-layout-server \15 test-glib-layout-server \
@@ -14,7 +17,8 @@
14 test-glib-properties-server \17 test-glib-properties-server \
15 test-gtk-label-client \18 test-gtk-label-client \
16 test-gtk-label-server \19 test-gtk-label-server \
17 test-glib-simple-items20 test-glib-simple-items \
21 test-gtk-reorder-server
1822
19glib_server_nomenu_SOURCES = \23glib_server_nomenu_SOURCES = \
20 glib-server-nomenu.c24 glib-server-nomenu.c
@@ -27,10 +31,14 @@
27 ../libdbusmenu-glib/libdbusmenu-glib.la \31 ../libdbusmenu-glib/libdbusmenu-glib.la \
28 $(DBUSMENUGLIB_LIBS)32 $(DBUSMENUGLIB_LIBS)
2933
3034######################
35# Test Glib Layout
36######################
3137
32test-glib-layout: test-glib-layout-client test-glib-layout-server38test-glib-layout: test-glib-layout-client test-glib-layout-server
33 $(DBUS_RUNNER) --task ./test-glib-layout-client --task-name Client --task ./test-glib-layout-server --task-name Server --ignore-return39 @echo "#!/bin/sh" > test-glib-layout
40 @echo $(DBUS_RUNNER) --task ./test-glib-layout-client --task-name Client --task ./test-glib-layout-server --task-name Server --ignore-return >> test-glib-layout
41 @chmod +x test-glib-layout
3442
35test_glib_layout_server_SOURCES = \43test_glib_layout_server_SOURCES = \
36 test-glib-layout.h \44 test-glib-layout.h \
@@ -57,9 +65,14 @@
57 $(DBUSMENUGLIB_LIBS)65 $(DBUSMENUGLIB_LIBS)
5866
5967
68######################
69# Test Glib Properties
70######################
6071
61test-glib-properties: test-glib-properties-client test-glib-properties-server72test-glib-properties: test-glib-properties-client test-glib-properties-server
62 $(DBUS_RUNNER) --task ./test-glib-properties-client --task-name Client --task ./test-glib-properties-server --task-name Server --ignore-return73 @echo "#!/bin/sh" > test-glib-properties
74 @echo $(DBUS_RUNNER) --task ./test-glib-properties-client --task-name Client --task ./test-glib-properties-server --task-name Server --ignore-return >> test-glib-properties
75 @chmod +x test-glib-properties
6376
64test_glib_properties_server_SOURCES = \77test_glib_properties_server_SOURCES = \
65 test-glib-properties.h \78 test-glib-properties.h \
@@ -85,6 +98,9 @@
85 ../libdbusmenu-glib/libdbusmenu-glib.la \98 ../libdbusmenu-glib/libdbusmenu-glib.la \
86 $(DBUSMENUGLIB_LIBS)99 $(DBUSMENUGLIB_LIBS)
87100
101#########################
102# Test Glib Simple Items
103#########################
88104
89test_glib_simple_items_SOURCES = \105test_glib_simple_items_SOURCES = \
90 test-glib-simple-items.c106 test-glib-simple-items.c
@@ -97,9 +113,14 @@
97 ../libdbusmenu-glib/libdbusmenu-glib.la \113 ../libdbusmenu-glib/libdbusmenu-glib.la \
98 $(DBUSMENUGLIB_LIBS)114 $(DBUSMENUGLIB_LIBS)
99115
116#########################
117# Test GTK Label
118#########################
100119
101test-gtk-label: test-gtk-label-client test-gtk-label-server test-gtk-label.json120test-gtk-label: test-gtk-label-client test-gtk-label-server test-gtk-label.json
102 $(DBUS_RUNNER) --task ./test-gtk-label-client --task-name Client --task ./test-gtk-label-server --parameter $(srcdir)/test-gtk-label.json --task-name Server --ignore-return121 @echo "#!/bin/sh" > test-gtk-label
122 @echo $(DBUS_RUNNER) --task ./test-gtk-label-client --task-name Client --task ./test-gtk-label-server --parameter $(srcdir)/test-gtk-label.json --task-name Server --ignore-return >> test-gtk-label
123 @chmod +x test-gtk-label
103124
104test_gtk_label_server_SOURCES = \125test_gtk_label_server_SOURCES = \
105 test-gtk-label-server.c126 test-gtk-label-server.c
@@ -131,7 +152,34 @@
131 $(DBUSMENUGTK_LIBS) \152 $(DBUSMENUGTK_LIBS) \
132 $(DBUSMENUTESTS_LIBS)153 $(DBUSMENUTESTS_LIBS)
133154
134155#########################
156# Test GTK Reorder
157#########################
158
159test-gtk-reorder: test-gtk-label-client test-gtk-reorder-server
160 @echo "#!/bin/sh" > test-gtk-reorder
161 @echo $(DBUS_RUNNER) --task ./test-gtk-label-client --task-name Client --task ./test-gtk-reorder-server --parameter $(srcdir)/test-gtk-label.json --task-name Server --ignore-return >> test-gtk-reorder
162 @chmod +x test-gtk-reorder
163
164test_gtk_reorder_server_SOURCES = \
165 test-gtk-reorder-server.c
166
167test_gtk_reorder_server_CFLAGS = \
168 -I $(srcdir)/.. \
169 $(DBUSMENUGTK_CFLAGS) \
170 $(DBUSMENUTESTS_CFLAGS) \
171 $(DBUSMENUGLIB_CFLAGS) -Wall -Werror
172
173test_gtk_reorder_server_LDADD = \
174 ../libdbusmenu-glib/libdbusmenu-glib.la \
175 ../libdbusmenu-gtk/libdbusmenu-gtk.la \
176 $(DBUSMENUGTK_LIBS) \
177 $(DBUSMENUTESTS_LIBS)
178
179
180#########################
181# Other
182#########################
135183
136examplesdir = $(docdir)/examples/184examplesdir = $(docdir)/examples/
137185
@@ -141,3 +189,6 @@
141EXTRA_DIST = \189EXTRA_DIST = \
142 $(examples_DATA) \190 $(examples_DATA) \
143 test-gtk-label.json191 test-gtk-label.json
192
193DISTCLEANFILES = \
194 $(TESTS)
144195
=== modified file 'tests/test-glib-simple-items.c'
--- tests/test-glib-simple-items.c 2009-07-01 05:34:05 +0000
+++ tests/test-glib-simple-items.c 2009-10-02 22:05:19 +0000
@@ -25,6 +25,13 @@
25 return;25 return;
26}26}
2727
28static gboolean
29quititall (gpointer data)
30{
31 g_main_quit(mainloop);
32 return FALSE;
33}
34
28int35int
29main (int argc, char ** argv)36main (int argc, char ** argv)
30{37{
@@ -37,6 +44,8 @@
3744
38 dummy_users(root_menuitem);45 dummy_users(root_menuitem);
3946
47 g_timeout_add_seconds(1, quititall, NULL);
48
40 mainloop = g_main_loop_new(NULL, FALSE);49 mainloop = g_main_loop_new(NULL, FALSE);
41 g_main_loop_run(mainloop);50 g_main_loop_run(mainloop);
4251
4352
=== added file 'tests/test-gtk-reorder-server.c'
--- tests/test-gtk-reorder-server.c 1970-01-01 00:00:00 +0000
+++ tests/test-gtk-reorder-server.c 2009-10-02 22:05:19 +0000
@@ -0,0 +1,119 @@
1/*
2A test for libdbusmenu to ensure its quality.
3
4Copyright 2009 Canonical Ltd.
5
6Authors:
7 Ted Gould <ted@canonical.com>
8
9This program is free software: you can redistribute it and/or modify it
10under the terms of the GNU General Public License version 3, as published
11by the Free Software Foundation.
12
13This program is distributed in the hope that it will be useful, but
14WITHOUT ANY WARRANTY; without even the implied warranties of
15MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR
16PURPOSE. See the GNU General Public License for more details.
17
18You should have received a copy of the GNU General Public License along
19with this program. If not, see <http://www.gnu.org/licenses/>.
20*/
21
22#include <glib.h>
23
24#include <dbus/dbus.h>
25#include <dbus/dbus-glib.h>
26#include <dbus/dbus-glib-lowlevel.h>
27#include <dbus/dbus-glib-bindings.h>
28
29#include <libdbusmenu-glib/menuitem.h>
30#include <libdbusmenu-glib/server.h>
31
32#define NUMBER_TESTS 5
33#define NUMBER_ENTRIES 5
34
35guint ordering [NUMBER_TESTS][NUMBER_ENTRIES] = {
36 {0, 1, 2, 3, 4},
37 {1, 2, 3, 4, 0},
38 {3, 1, 4, 2, 0},
39 {4, 3, 2, 1, 0},
40 {0, 1, 2, 3, 4}
41};
42
43gchar * names [NUMBER_ENTRIES] = {
44 "One", "Two", "Three", "Four", "Five"
45};
46
47DbusmenuMenuitem * entries[NUMBER_ENTRIES] = {0};
48DbusmenuMenuitem * root = NULL;
49
50gint test = 0;
51
52static DbusmenuServer * server = NULL;
53static GMainLoop * mainloop = NULL;
54
55static gboolean
56timer_func (gpointer data)
57{
58 if (test == NUMBER_TESTS) {
59 g_main_quit(mainloop);
60 return FALSE;
61 }
62
63 g_debug("Testing pattern %d", test);
64
65 int i;
66 for (i = 0; i < NUMBER_ENTRIES; i++) {
67 g_debug("Putting entry '%d' at position '%d'", i, ordering[test][i]);
68 dbusmenu_menuitem_child_reorder(root, entries[i], ordering[test][i]);
69 dbusmenu_menuitem_property_set(entries[i], "label", names[i]);
70 }
71
72 test++;
73 return TRUE;
74}
75
76int
77main (int argc, char ** argv)
78{
79 GError * error = NULL;
80
81 g_type_init();
82
83 DBusGConnection * connection = dbus_g_bus_get(DBUS_BUS_SESSION, NULL);
84 g_debug("DBus ID: %s", dbus_connection_get_server_id(dbus_g_connection_get_connection(dbus_g_bus_get(DBUS_BUS_SESSION, NULL))));
85
86 DBusGProxy * bus_proxy = dbus_g_proxy_new_for_name(connection, DBUS_SERVICE_DBUS, DBUS_PATH_DBUS, DBUS_INTERFACE_DBUS);
87 guint nameret = 0;
88
89 if (!org_freedesktop_DBus_request_name(bus_proxy, "glib.label.test", 0, &nameret, &error)) {
90 g_error("Unable to call to request name");
91 return 1;
92 }
93
94 if (nameret != DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER) {
95 g_error("Unable to get name");
96 return 1;
97 }
98
99 server = dbusmenu_server_new("/org/test");
100 root = dbusmenu_menuitem_new();
101 dbusmenu_server_set_root(server, root);
102
103 int i;
104 for (i = 0; i < NUMBER_ENTRIES; i++) {
105 entries[i] = dbusmenu_menuitem_new();
106 dbusmenu_menuitem_child_append(root, entries[i]);
107 }
108
109 timer_func(NULL);
110 g_timeout_add_seconds(5, timer_func, NULL);
111
112 mainloop = g_main_loop_new(NULL, FALSE);
113 g_main_loop_run(mainloop);
114
115 g_debug("Quiting");
116
117 return 0;
118}
119

Subscribers

People subscribed via source and target branches

to all changes: