176
176
g_menu_append_section (priv->menu, NULL, section);
180
* Inserts @item into @menu by comparing its
181
* "x-messaging-menu-sort-string" with those found in existing menu
182
* items between positions @first and @last.
184
* If @last is negative, it is counted from the end of @menu.
180
im_menu_insert_section (ImMenu *menu,
181
const gchar *sort_string,
182
const gchar *namespace,
187
im_menu_insert_item_sorted (ImMenu *menu,
186
192
ImMenuPrivate *priv;
193
gint position = first;
189
196
g_return_if_fail (IM_IS_MENU (menu));
190
g_return_if_fail (G_IS_MENU_MODEL (section));
197
g_return_if_fail (G_IS_MENU_ITEM (item));
192
199
priv = im_menu_get_instance_private (menu);
194
for (position = 1; position < g_menu_model_get_n_items(G_MENU_MODEL (priv->menu)) - 1; position++)
202
last = g_menu_model_get_n_items (G_MENU_MODEL (priv->menu)) + last;
204
g_return_if_fail (first <= last);
206
if (g_menu_item_get_attribute (item, "x-messaging-menu-sort-string", "s", &sort_string))
198
if (g_menu_model_get_item_attribute(G_MENU_MODEL(priv->menu), position, "x-messaging-menu-sort-string", "s", &item_sort))
208
while (position < last)
202
cmp = g_utf8_collate(sort_string, item_sort);
212
if (g_menu_model_get_item_attribute(G_MENU_MODEL(priv->menu), position, "x-messaging-menu-sort-string", "s", &item_sort))
216
cmp = g_utf8_collate(sort_string, item_sort);
209
item = g_menu_item_new_section (NULL, section);
210
g_menu_item_set_attribute (item, "x-messaging-menu-sort-string", "s", sort_string);
213
g_menu_item_set_attribute (item, "action-namespace", "s", namespace);
215
226
g_menu_insert_item (priv->menu, position, item);
217
g_object_unref (item);