From be44bb8644730b598fdc1990ab81c1f067dc2353 Mon Sep 17 00:00:00 2001 From: Lars Uebernickel Date: Tue, 26 Jun 2012 00:46:00 +0200 Subject: messages-service: move gmenu utility functions into gmenuutils.[ch] As a neat side-effect, this fixes a memory leak in app-section.c. --- src/gmenuutils.c | 79 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 src/gmenuutils.c (limited to 'src/gmenuutils.c') diff --git a/src/gmenuutils.c b/src/gmenuutils.c new file mode 100644 index 0000000..056e75f --- /dev/null +++ b/src/gmenuutils.c @@ -0,0 +1,79 @@ +/* + * Copyright 2012 Canonical Ltd. + * + * This program is free software: you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 3, as published + * by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranties of + * MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . + * + * Authors: + * Lars Uebernickel + */ + +#include "gmenuutils.h" +#include "dbus-data.h" + +/* g_menu_find_section: + * @menu: a #GMenu + * @section: the section to be found in @menu + * + * @Returns the index of the first menu item that is linked to #section, or -1 + * if there's no such item. + */ +int +g_menu_find_section (GMenu *menu, + GMenuModel *section) +{ + GMenuModel *model = G_MENU_MODEL (menu); + int n_items; + int i; + + g_return_val_if_fail (G_IS_MENU_MODEL (section), -1); + + n_items = g_menu_model_get_n_items (model); + for (i = 0; i < n_items; i++) + { + if (section == g_menu_model_get_item_link (model, i, G_MENU_LINK_SECTION)) + return i; + } + + return -1; +} + + +void +g_menu_append_with_icon (GMenu *menu, + const gchar *label, + GIcon *icon, + const gchar *detailed_action) +{ + gchar *iconstr; + + iconstr = g_icon_to_string (icon); + g_menu_append_with_icon_name (menu, label, iconstr, detailed_action); + + g_free (iconstr); +} + +void +g_menu_append_with_icon_name (GMenu *menu, + const gchar *label, + const gchar *icon_name, + const gchar *detailed_action) +{ + GMenuItem *item; + + item = g_menu_item_new (label, detailed_action); + g_menu_item_set_attribute (item, INDICATOR_MENU_ATTRIBUTE_ICON_NAME, "s", icon_name); + + g_menu_append_item (menu, item); + + g_object_unref (item); +} -- cgit v1.2.3 From 7d036b65aac90b646eb7845cfc8e229464f372f0 Mon Sep 17 00:00:00 2001 From: Lars Uebernickel Date: Tue, 21 Aug 2012 11:40:47 +0200 Subject: Show icons in application and source menu items Everthing goes through GIcon now, using g_icon_{to,new_for}_string to set a string attribute on the menu item. The attribute is prefixed x-canonical- for now. --- src/gmenuutils.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/gmenuutils.c') diff --git a/src/gmenuutils.c b/src/gmenuutils.c index 056e75f..f3ceba7 100644 --- a/src/gmenuutils.c +++ b/src/gmenuutils.c @@ -71,7 +71,7 @@ g_menu_append_with_icon_name (GMenu *menu, GMenuItem *item; item = g_menu_item_new (label, detailed_action); - g_menu_item_set_attribute (item, INDICATOR_MENU_ATTRIBUTE_ICON_NAME, "s", icon_name); + g_menu_item_set_attribute (item, "x-canonical-icon", "s", icon_name); g_menu_append_item (menu, item); -- cgit v1.2.3