aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTed Gould <ted@gould.cx>2013-08-20 21:03:18 -0500
committerTed Gould <ted@gould.cx>2013-08-20 21:03:18 -0500
commit046f655a8859e2e3eaa6015fc2ecd226c8b46b1f (patch)
treebe808298ec80ca3dc6d73309ac9e1e7024ee7950 /src
parentb526ee7d9de53067a295f9cdb9bc23fa1054492f (diff)
downloadayatana-indicator-messages-046f655a8859e2e3eaa6015fc2ecd226c8b46b1f.tar.gz
ayatana-indicator-messages-046f655a8859e2e3eaa6015fc2ecd226c8b46b1f.tar.bz2
ayatana-indicator-messages-046f655a8859e2e3eaa6015fc2ecd226c8b46b1f.zip
Make it so that we sort based on application name to make the menu more sane
Diffstat (limited to 'src')
-rw-r--r--src/im-desktop-menu.c2
-rw-r--r--src/im-menu.c15
-rw-r--r--src/im-menu.h2
3 files changed, 13 insertions, 6 deletions
diff --git a/src/im-desktop-menu.c b/src/im-desktop-menu.c
index 3309dad..834a8c9 100644
--- a/src/im-desktop-menu.c
+++ b/src/im-desktop-menu.c
@@ -97,7 +97,7 @@ im_desktop_menu_app_added (ImApplicationList *applist,
g_menu_append_section (section, NULL, G_MENU_MODEL (source_section));
namespace = g_strconcat ("indicator.", app_id, NULL);
- im_menu_insert_section (IM_MENU (menu), -1, namespace, G_MENU_MODEL (section));
+ im_menu_insert_section (IM_MENU (menu), g_app_info_get_name(G_APP_INFO(app_info)), namespace, G_MENU_MODEL (section));
g_hash_table_insert (menu->source_sections, g_strdup (app_id), source_section);
g_free (namespace);
diff --git a/src/im-menu.c b/src/im-menu.c
index ac23a29..1aaffe3 100644
--- a/src/im-menu.c
+++ b/src/im-menu.c
@@ -164,10 +164,11 @@ im_menu_append_section (ImMenu *menu,
void
im_menu_insert_section (ImMenu *menu,
- gint position,
+ const gchar *sort_string,
const gchar *namespace,
GMenuModel *section)
{
+ int position;
ImMenuPrivate *priv;
GMenuItem *item;
@@ -176,11 +177,17 @@ im_menu_insert_section (ImMenu *menu,
priv = im_menu_get_instance_private (menu);
- /* count from the back if position is < 0 */
- if (position < 0)
- position = g_menu_model_get_n_items (G_MENU_MODEL (priv->menu)) + position;
+ for (position = 1; position < g_menu_model_get_n_items(G_MENU_MODEL (priv->menu)) - 1; position++)
+ {
+ gchar * item_sort = NULL;
+ if (g_menu_model_get_item_attribute(G_MENU_MODEL(priv->menu), position, "x-messaging-menu-sort-string", "s", &item_sort))
+ if (g_utf8_collate(sort_string, item_sort) < 0)
+ break;
+ g_free(item_sort);
+ }
item = g_menu_item_new_section (NULL, section);
+ g_menu_item_set_attribute (item, "x-messaging-menu-sort-string", "s", sort_string);
if (namespace)
g_menu_item_set_attribute (item, "action-namespace", "s", namespace);
diff --git a/src/im-menu.h b/src/im-menu.h
index d3775ad..7c15eb7 100644
--- a/src/im-menu.h
+++ b/src/im-menu.h
@@ -57,7 +57,7 @@ void im_menu_append_section (ImMenu
GMenuModel *section);
void im_menu_insert_section (ImMenu *menu,
- gint position,
+ const gchar *sort_string,
const gchar *namespace,
GMenuModel *section);