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: 358 lines (+139/-7)
9 files modified
debian/changelog (+13/-0)
libdbusmenu-glib/client.c (+4/-1)
libdbusmenu-glib/dbus-menu.xml (+6/-0)
libdbusmenu-glib/menuitem-private.h (+2/-0)
libdbusmenu-glib/menuitem.c (+97/-0)
libdbusmenu-glib/menuitem.h (+1/-0)
libdbusmenu-glib/server.c (+10/-0)
libdbusmenu-gtk/client.c (+3/-3)
libdbusmenu-gtk/menu.c (+3/-3)
To merge this branch: bzr merge lp:~dbusmenu-team/libdbusmenu/ubuntu
Reviewer Review Type Date Requested Status
Sebastien Bacher Pending
Review via email: mp+23455@code.launchpad.net

Description of the change

Bug fix for reordering issues.

To post a comment you must log in.
lp:~dbusmenu-team/libdbusmenu/ubuntu updated
73. By Sebastien Bacher

releasing version 0.2.9-0ubuntu2

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'debian/changelog'
--- debian/changelog 2010-04-01 17:13:27 +0000
+++ debian/changelog 2010-04-15 06:35:40 +0000
@@ -1,3 +1,16 @@
1libdbusmenu (0.2.9-0ubuntu2~ppa1) lucid; urgency=low
2
3 * Upstream Merge
4 * Changing GTK layer to look at position in realized
5 children to avoid realization races. (LP: #555816)
6 * Don't allow setting children twice
7 * Ref children of a menuitem
8 * Return error when parent ID of getlayout can't be found
9 * Adding in visible property to docs
10 * Helpful comments in the code
11
12 -- Ted Gould <ted@ubuntu.com> Thu, 15 Apr 2010 01:25:42 -0500
13
1libdbusmenu (0.2.9-0ubuntu1) lucid; urgency=low14libdbusmenu (0.2.9-0ubuntu1) lucid; urgency=low
215
3 * New upstream release.16 * New upstream release.
417
=== modified file 'libdbusmenu-glib/client.c'
--- libdbusmenu-glib/client.c 2010-03-31 19:48:26 +0000
+++ libdbusmenu-glib/client.c 2010-04-15 06:35:40 +0000
@@ -35,6 +35,7 @@
3535
36#include "client.h"36#include "client.h"
37#include "menuitem.h"37#include "menuitem.h"
38#include "menuitem-private.h"
38#include "client-menuitem.h"39#include "client-menuitem.h"
39#include "dbusmenu-client.h"40#include "dbusmenu-client.h"
40#include "server-marshal.h"41#include "server-marshal.h"
@@ -645,7 +646,7 @@
645 #ifdef MASSIVEDEBUGGING646 #ifdef MASSIVEDEBUGGING
646 g_debug("Client has realized a menuitem: %d", dbusmenu_menuitem_get_id(propdata->item));647 g_debug("Client has realized a menuitem: %d", dbusmenu_menuitem_get_id(propdata->item));
647 #endif648 #endif
648 g_signal_emit(G_OBJECT(propdata->item), DBUSMENU_MENUITEM_SIGNAL_REALIZED_ID, 0, TRUE);649 dbusmenu_menuitem_set_realized(propdata->item);
649650
650 if (!handled) {651 if (!handled) {
651 g_signal_emit(G_OBJECT(propdata->client), signals[NEW_MENUITEM], 0, propdata->item, TRUE);652 g_signal_emit(G_OBJECT(propdata->client), signals[NEW_MENUITEM], 0, propdata->item, TRUE);
@@ -748,6 +749,7 @@
748 if (parent != NULL) {749 if (parent != NULL) {
749 dbusmenu_menuitem_child_delete(parent, item);750 dbusmenu_menuitem_child_delete(parent, item);
750 }751 }
752 /* XXX: Should this be an unref? Who's reffing this that it exists without a parent? */
751 g_object_unref(G_OBJECT(item));753 g_object_unref(G_OBJECT(item));
752 item = NULL;754 item = NULL;
753 }755 }
@@ -773,6 +775,7 @@
773 }775 }
774 } else {776 } else {
775 /* Refresh the properties */777 /* Refresh the properties */
778 /* XXX: We shouldn't need to get the properties everytime we reuse an entry */
776 gchar * properties[1] = {NULL}; /* This gets them all */779 gchar * properties[1] = {NULL}; /* This gets them all */
777 org_ayatana_dbusmenu_get_properties_async(proxy, id, (const gchar **)properties, menuitem_get_properties_replace_cb, item);780 org_ayatana_dbusmenu_get_properties_async(proxy, id, (const gchar **)properties, menuitem_get_properties_replace_cb, item);
778 }781 }
779782
=== modified file 'libdbusmenu-glib/dbus-menu.xml'
--- libdbusmenu-glib/dbus-menu.xml 2010-04-01 13:43:22 +0000
+++ libdbusmenu-glib/dbus-menu.xml 2010-04-15 06:35:40 +0000
@@ -82,6 +82,12 @@
82 <td>true</td>82 <td>true</td>
83 </tr>83 </tr>
84 <tr>84 <tr>
85 <td>visible</td>
86 <td>boolean</td>
87 <td>True if the item is visible in the menu.</td>
88 <td>true</td>
89 </tr>
90 <tr>
85 <td>icon-name</td>91 <td>icon-name</td>
86 <td>string</td>92 <td>string</td>
87 <td>Icon name of the item, following the freedesktop.org icon spec.</td>93 <td>Icon name of the item, following the freedesktop.org icon spec.</td>
8894
=== modified file 'libdbusmenu-glib/menuitem-private.h'
--- libdbusmenu-glib/menuitem-private.h 2010-01-21 23:13:52 +0000
+++ libdbusmenu-glib/menuitem-private.h 2010-04-15 06:35:40 +0000
@@ -34,6 +34,8 @@
34G_BEGIN_DECLS34G_BEGIN_DECLS
3535
36void dbusmenu_menuitem_buildxml (DbusmenuMenuitem * mi, GPtrArray * array);36void dbusmenu_menuitem_buildxml (DbusmenuMenuitem * mi, GPtrArray * array);
37gboolean dbusmenu_menuitem_realized (DbusmenuMenuitem * mi);
38void dbusmenu_menuitem_set_realized (DbusmenuMenuitem * mi);
3739
38G_END_DECLS40G_END_DECLS
3941
4042
=== modified file 'libdbusmenu-glib/menuitem.c'
--- libdbusmenu-glib/menuitem.c 2010-03-31 18:51:48 +0000
+++ libdbusmenu-glib/menuitem.c 2010-04-15 06:35:40 +0000
@@ -59,6 +59,7 @@
59 GList * children;59 GList * children;
60 GHashTable * properties;60 GHashTable * properties;
61 gboolean root;61 gboolean root;
62 gboolean realized;
62};63};
6364
64/* Signals */65/* Signals */
@@ -278,6 +279,7 @@
278 priv->properties = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, _g_value_free);279 priv->properties = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, _g_value_free);
279280
280 priv->root = FALSE;281 priv->root = FALSE;
282 priv->realized = FALSE;
281 283
282 return;284 return;
283}285}
@@ -423,6 +425,46 @@
423}425}
424426
425/**427/**
428 dbusmenu_menuitem_realized:
429 @mi: #DbusmenuMenuitem to check on
430
431 This function returns whether the menuitem has been realized or
432 not. This is significant mostly in client implementations that
433 can use this additional state to see if the second layers of
434 the implementation have been built yet.
435
436 Return value: Returns whether or not the menu item has been realized
437 yet or not.
438*/
439gboolean
440dbusmenu_menuitem_realized (DbusmenuMenuitem * mi)
441{
442 g_return_val_if_fail(DBUSMENU_IS_MENUITEM(mi), FALSE);
443 DbusmenuMenuitemPrivate * priv = DBUSMENU_MENUITEM_GET_PRIVATE(mi);
444 return priv->realized;
445}
446
447/**
448 dbusmenu_menuitem_set_realized:
449 @mi: #DbusmenuMenuitem to realize
450
451 Sets the internal variable tracking whether it's been realized and
452 signals the DbusmenuMenuitem::realized event.
453*/
454void
455dbusmenu_menuitem_set_realized (DbusmenuMenuitem * mi)
456{
457 g_return_if_fail(DBUSMENU_IS_MENUITEM(mi));
458 DbusmenuMenuitemPrivate * priv = DBUSMENU_MENUITEM_GET_PRIVATE(mi);
459 if (priv->realized) {
460 g_warning("Realized entry realized again? ID: %d", dbusmenu_menuitem_get_id(mi));
461 }
462 priv->realized = TRUE;
463 g_signal_emit(G_OBJECT(mi), signals[REALIZED], 0, TRUE);
464 return;
465}
466
467/**
426 dbusmenu_menuitem_get_children:468 dbusmenu_menuitem_get_children:
427 @mi: The #DbusmenuMenuitem to query.469 @mi: The #DbusmenuMenuitem to query.
428470
@@ -449,6 +491,7 @@
449 #ifdef MASSIVEDEBUGGING491 #ifdef MASSIVEDEBUGGING
450 g_debug("Menuitem %d (%s) signalling child removed %d (%s)", ID(user_data), LABEL(user_data), ID(data), LABEL(data));492 g_debug("Menuitem %d (%s) signalling child removed %d (%s)", ID(user_data), LABEL(user_data), ID(data), LABEL(data));
451 #endif493 #endif
494 g_object_unref(G_OBJECT(data));
452 g_signal_emit(G_OBJECT(user_data), signals[CHILD_REMOVED], 0, DBUSMENU_MENUITEM(data), TRUE);495 g_signal_emit(G_OBJECT(user_data), signals[CHILD_REMOVED], 0, DBUSMENU_MENUITEM(data), TRUE);
453 return;496 return;
454}497}
@@ -517,6 +560,50 @@
517}560}
518561
519/**562/**
563 dbusmenu_menuitem_get_position_realized:
564 @mi: The #DbusmenuMenuitem to find the position of
565 @parent: The #DbusmenuMenuitem who's children contain @mi
566
567 This function is very similar to #dbusmenu_menuitem_get_position
568 except that it only counts in the children that have been realized.
569
570 Return value: The position of @mi in the realized children of @parent.
571*/
572guint
573dbusmenu_menuitem_get_position_realized (DbusmenuMenuitem * mi, DbusmenuMenuitem * parent)
574{
575 #ifdef MASSIVEDEBUGGING
576 if (!DBUSMENU_IS_MENUITEM(mi)) g_warning("Getting position of %d (%s), it's at: %d (mi fail)", ID(mi), LABEL(mi), 0);
577 if (!DBUSMENU_IS_MENUITEM(parent)) g_warning("Getting position of %d (%s), it's at: %d (parent fail)", ID(mi), LABEL(mi), 0);
578 #endif
579
580 /* TODO: I'm not too happy returning zeros here. But that's all I've got */
581 g_return_val_if_fail(DBUSMENU_IS_MENUITEM(mi), 0);
582 g_return_val_if_fail(DBUSMENU_IS_MENUITEM(parent), 0);
583
584 GList * childs = dbusmenu_menuitem_get_children(parent);
585 if (childs == NULL) return 0;
586 guint count = 0;
587 for ( ; childs != NULL; childs = childs->next, count++) {
588 if (!dbusmenu_menuitem_realized(DBUSMENU_MENUITEM(childs->data))) {
589 count--;
590 continue;
591 }
592 if (childs->data == mi) {
593 break;
594 }
595 }
596
597 if (childs == NULL) return 0;
598
599 #ifdef MASSIVEDEBUGGING
600 g_debug("Getting position of %d (%s), it's at: %d", ID(mi), LABEL(mi), count);
601 #endif
602
603 return count;
604}
605
606/**
520 dbusmenu_menuitem_child_append:607 dbusmenu_menuitem_child_append:
521 @mi: The #DbusmenuMenuitem which will become a new parent608 @mi: The #DbusmenuMenuitem which will become a new parent
522 @child: The #DbusmenMenuitem that will be a child609 @child: The #DbusmenMenuitem that will be a child
@@ -533,10 +620,13 @@
533 g_return_val_if_fail(DBUSMENU_IS_MENUITEM(child), FALSE);620 g_return_val_if_fail(DBUSMENU_IS_MENUITEM(child), FALSE);
534621
535 DbusmenuMenuitemPrivate * priv = DBUSMENU_MENUITEM_GET_PRIVATE(mi);622 DbusmenuMenuitemPrivate * priv = DBUSMENU_MENUITEM_GET_PRIVATE(mi);
623 g_return_val_if_fail(g_list_find(priv->children, child) == NULL, FALSE);
624
536 priv->children = g_list_append(priv->children, child);625 priv->children = g_list_append(priv->children, child);
537 #ifdef MASSIVEDEBUGGING626 #ifdef MASSIVEDEBUGGING
538 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);627 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);
539 #endif628 #endif
629 g_object_ref(G_OBJECT(child));
540 g_signal_emit(G_OBJECT(mi), signals[CHILD_ADDED], 0, child, g_list_length(priv->children) - 1, TRUE);630 g_signal_emit(G_OBJECT(mi), signals[CHILD_ADDED], 0, child, g_list_length(priv->children) - 1, TRUE);
541 return TRUE;631 return TRUE;
542}632}
@@ -558,10 +648,13 @@
558 g_return_val_if_fail(DBUSMENU_IS_MENUITEM(child), FALSE);648 g_return_val_if_fail(DBUSMENU_IS_MENUITEM(child), FALSE);
559649
560 DbusmenuMenuitemPrivate * priv = DBUSMENU_MENUITEM_GET_PRIVATE(mi);650 DbusmenuMenuitemPrivate * priv = DBUSMENU_MENUITEM_GET_PRIVATE(mi);
651 g_return_val_if_fail(g_list_find(priv->children, child) == NULL, FALSE);
652
561 priv->children = g_list_prepend(priv->children, child);653 priv->children = g_list_prepend(priv->children, child);
562 #ifdef MASSIVEDEBUGGING654 #ifdef MASSIVEDEBUGGING
563 g_debug("Menuitem %d (%s) signalling child added %d (%s) at %d", ID(mi), LABEL(mi), ID(child), LABEL(child), 0);655 g_debug("Menuitem %d (%s) signalling child added %d (%s) at %d", ID(mi), LABEL(mi), ID(child), LABEL(child), 0);
564 #endif656 #endif
657 g_object_ref(G_OBJECT(child));
565 g_signal_emit(G_OBJECT(mi), signals[CHILD_ADDED], 0, child, 0, TRUE);658 g_signal_emit(G_OBJECT(mi), signals[CHILD_ADDED], 0, child, 0, TRUE);
566 return TRUE;659 return TRUE;
567}660}
@@ -588,6 +681,7 @@
588 #ifdef MASSIVEDEBUGGING681 #ifdef MASSIVEDEBUGGING
589 g_debug("Menuitem %d (%s) signalling child removed %d (%s)", ID(mi), LABEL(mi), ID(child), LABEL(child));682 g_debug("Menuitem %d (%s) signalling child removed %d (%s)", ID(mi), LABEL(mi), ID(child), LABEL(child));
590 #endif683 #endif
684 g_object_unref(G_OBJECT(child));
591 g_signal_emit(G_OBJECT(mi), signals[CHILD_REMOVED], 0, child, TRUE);685 g_signal_emit(G_OBJECT(mi), signals[CHILD_REMOVED], 0, child, TRUE);
592 return TRUE;686 return TRUE;
593}687}
@@ -611,10 +705,13 @@
611 g_return_val_if_fail(DBUSMENU_IS_MENUITEM(child), FALSE);705 g_return_val_if_fail(DBUSMENU_IS_MENUITEM(child), FALSE);
612706
613 DbusmenuMenuitemPrivate * priv = DBUSMENU_MENUITEM_GET_PRIVATE(mi);707 DbusmenuMenuitemPrivate * priv = DBUSMENU_MENUITEM_GET_PRIVATE(mi);
708 g_return_val_if_fail(g_list_find(priv->children, child) == NULL, FALSE);
709
614 priv->children = g_list_insert(priv->children, child, position);710 priv->children = g_list_insert(priv->children, child, position);
615 #ifdef MASSIVEDEBUGGING711 #ifdef MASSIVEDEBUGGING
616 g_debug("Menuitem %d (%s) signalling child added %d (%s) at %d", ID(mi), LABEL(mi), ID(child), LABEL(child), position);712 g_debug("Menuitem %d (%s) signalling child added %d (%s) at %d", ID(mi), LABEL(mi), ID(child), LABEL(child), position);
617 #endif713 #endif
714 g_object_ref(G_OBJECT(child));
618 g_signal_emit(G_OBJECT(mi), signals[CHILD_ADDED], 0, child, position, TRUE);715 g_signal_emit(G_OBJECT(mi), signals[CHILD_ADDED], 0, child, position, TRUE);
619 return TRUE;716 return TRUE;
620}717}
621718
=== modified file 'libdbusmenu-glib/menuitem.h'
--- libdbusmenu-glib/menuitem.h 2010-03-31 18:51:48 +0000
+++ libdbusmenu-glib/menuitem.h 2010-04-15 06:35:40 +0000
@@ -148,6 +148,7 @@
148GList * dbusmenu_menuitem_get_children (DbusmenuMenuitem * mi);148GList * dbusmenu_menuitem_get_children (DbusmenuMenuitem * mi);
149GList * dbusmenu_menuitem_take_children (DbusmenuMenuitem * mi) G_GNUC_WARN_UNUSED_RESULT;149GList * dbusmenu_menuitem_take_children (DbusmenuMenuitem * mi) G_GNUC_WARN_UNUSED_RESULT;
150guint dbusmenu_menuitem_get_position (DbusmenuMenuitem * mi, DbusmenuMenuitem * parent);150guint dbusmenu_menuitem_get_position (DbusmenuMenuitem * mi, DbusmenuMenuitem * parent);
151guint dbusmenu_menuitem_get_position_realized (DbusmenuMenuitem * mi, DbusmenuMenuitem * parent);
151152
152gboolean dbusmenu_menuitem_child_append (DbusmenuMenuitem * mi, DbusmenuMenuitem * child);153gboolean dbusmenu_menuitem_child_append (DbusmenuMenuitem * mi, DbusmenuMenuitem * child);
153gboolean dbusmenu_menuitem_child_prepend (DbusmenuMenuitem * mi, DbusmenuMenuitem * child);154gboolean dbusmenu_menuitem_child_prepend (DbusmenuMenuitem * mi, DbusmenuMenuitem * child);
154155
=== modified file 'libdbusmenu-glib/server.c'
--- libdbusmenu-glib/server.c 2010-03-31 19:15:36 +0000
+++ libdbusmenu-glib/server.c 2010-04-15 06:35:40 +0000
@@ -404,6 +404,16 @@
404 }404 }
405 } else {405 } else {
406 DbusmenuMenuitem * item = dbusmenu_menuitem_find_id(priv->root, parent);406 DbusmenuMenuitem * item = dbusmenu_menuitem_find_id(priv->root, parent);
407 if (item == NULL) {
408 if (error != NULL) {
409 g_set_error(error,
410 error_quark(),
411 INVALID_MENUITEM_ID,
412 "The ID supplied %d does not refer to a menu item we have",
413 parent);
414 }
415 return FALSE;
416 }
407 dbusmenu_menuitem_buildxml(item, xmlarray);417 dbusmenu_menuitem_buildxml(item, xmlarray);
408 }418 }
409 g_ptr_array_add(xmlarray, NULL);419 g_ptr_array_add(xmlarray, NULL);
410420
=== modified file 'libdbusmenu-gtk/client.c'
--- libdbusmenu-gtk/client.c 2010-03-31 18:51:48 +0000
+++ libdbusmenu-gtk/client.c 2010-04-15 06:35:40 +0000
@@ -308,7 +308,7 @@
308308
309 /* Oh, we're a child, let's deal with that */309 /* Oh, we're a child, let's deal with that */
310 if (parent != NULL) {310 if (parent != NULL) {
311 new_child(parent, item, dbusmenu_menuitem_get_position(item, parent), DBUSMENU_GTKCLIENT(client));311 new_child(parent, item, dbusmenu_menuitem_get_position_realized(item, parent), DBUSMENU_GTKCLIENT(client));
312 }312 }
313313
314 return;314 return;
@@ -335,7 +335,7 @@
335 } 335 }
336336
337 GtkMenuItem * childmi = dbusmenu_gtkclient_menuitem_get(gtkclient, child);337 GtkMenuItem * childmi = dbusmenu_gtkclient_menuitem_get(gtkclient, child);
338 gtk_menu_shell_insert(GTK_MENU_SHELL(menu), GTK_WIDGET(childmi), position);338 gtk_menu_shell_insert(GTK_MENU_SHELL(menu), GTK_WIDGET(childmi), dbusmenu_menuitem_get_position_realized(child, mi));
339 gtk_widget_show(GTK_WIDGET(menu));339 gtk_widget_show(GTK_WIDGET(menu));
340 340
341 return;341 return;
@@ -373,7 +373,7 @@
373 }373 }
374374
375 GtkMenuItem * childmi = dbusmenu_gtkclient_menuitem_get(gtkclient, child);375 GtkMenuItem * childmi = dbusmenu_gtkclient_menuitem_get(gtkclient, child);
376 gtk_menu_reorder_child(GTK_MENU(ann_menu), GTK_WIDGET(childmi), new);376 gtk_menu_reorder_child(GTK_MENU(ann_menu), GTK_WIDGET(childmi), dbusmenu_menuitem_get_position_realized(child, mi));
377377
378 return;378 return;
379}379}
380380
=== modified file 'libdbusmenu-gtk/menu.c'
--- libdbusmenu-gtk/menu.c 2010-03-31 18:49:32 +0000
+++ libdbusmenu-gtk/menu.c 2010-04-15 06:35:40 +0000
@@ -237,7 +237,7 @@
237 GtkMenuItem * mi = dbusmenu_gtkclient_menuitem_get(priv->client, child);237 GtkMenuItem * mi = dbusmenu_gtkclient_menuitem_get(priv->client, child);
238 if (mi != NULL) {238 if (mi != NULL) {
239 GtkWidget * item = GTK_WIDGET(mi);239 GtkWidget * item = GTK_WIDGET(mi);
240 gtk_menu_insert(GTK_MENU(menu), item, position);240 gtk_menu_insert(GTK_MENU(menu), item, dbusmenu_menuitem_get_position_realized(child, root));
241 #ifdef MASSIVEDEBUGGING241 #ifdef MASSIVEDEBUGGING
242 menu_pos_t menu_pos;242 menu_pos_t menu_pos;
243 menu_pos.mi = mi;243 menu_pos.mi = mi;
@@ -260,7 +260,7 @@
260 g_debug("Root child moved");260 g_debug("Root child moved");
261 #endif261 #endif
262 DbusmenuGtkMenuPrivate * priv = DBUSMENU_GTKMENU_GET_PRIVATE(menu);262 DbusmenuGtkMenuPrivate * priv = DBUSMENU_GTKMENU_GET_PRIVATE(menu);
263 gtk_menu_reorder_child(GTK_MENU(menu), GTK_WIDGET(dbusmenu_gtkclient_menuitem_get(priv->client, child)), newposition);263 gtk_menu_reorder_child(GTK_MENU(menu), GTK_WIDGET(dbusmenu_gtkclient_menuitem_get(priv->client, child)), dbusmenu_menuitem_get_position_realized(child, root));
264 return;264 return;
265}265}
266266
@@ -300,7 +300,7 @@
300300
301 if (child_widget != NULL) {301 if (child_widget != NULL) {
302 gtk_menu_append(menu, child_widget);302 gtk_menu_append(menu, child_widget);
303 gtk_menu_reorder_child(GTK_MENU(menu), child_widget, dbusmenu_menuitem_get_position(child, dbusmenu_client_get_root(DBUSMENU_CLIENT(priv->client))));303 gtk_menu_reorder_child(GTK_MENU(menu), child_widget, dbusmenu_menuitem_get_position_realized(child, dbusmenu_client_get_root(DBUSMENU_CLIENT(priv->client))));
304 } else {304 } else {
305 g_warning("Child is realized, but doesn't have a GTK Widget!");305 g_warning("Child is realized, but doesn't have a GTK Widget!");
306 }306 }

Subscribers

People subscribed via source and target branches

to all changes: