aboutsummaryrefslogtreecommitdiffstats
path: root/shell/e-shortcuts.c
diff options
context:
space:
mode:
authorEttore Perazzoli <ettore@src.gnome.org>2003-01-24 01:09:33 +0800
committerEttore Perazzoli <ettore@src.gnome.org>2003-01-24 01:09:33 +0800
commit7542d81fcf7d8c076d87320de3f17c1afefaf3b0 (patch)
treeb7e9901c74f7fdc21dab7f66e8a9fcf353c93e54 /shell/e-shortcuts.c
parent6582de79d5cf46aacd91f5322b35f8619c5b2f6e (diff)
downloadgsoc2013-evolution-7542d81fcf7d8c076d87320de3f17c1afefaf3b0.tar.gz
gsoc2013-evolution-7542d81fcf7d8c076d87320de3f17c1afefaf3b0.tar.zst
gsoc2013-evolution-7542d81fcf7d8c076d87320de3f17c1afefaf3b0.zip
[Port fix for #34129 from evolution-1-2-branch, unread count in
shortcut bar doesn't update properly.] * e-shortcuts.c (update_shortcuts_by_path): Use e_shell_parse_uri() so we handle default shortcuts properly as well. (update_shortcut_and_emit_signal): Use shortcut_item_update() once, and use the return value from it. [Thanks to Leon Zhang <leon.zhang@sun.com> for pointing out the brokenness of this code.] svn path=/trunk/; revision=19585
Diffstat (limited to 'shell/e-shortcuts.c')
-rw-r--r--shell/e-shortcuts.c29
1 files changed, 15 insertions, 14 deletions
diff --git a/shell/e-shortcuts.c b/shell/e-shortcuts.c
index e37104612f..5f43f8c315 100644
--- a/shell/e-shortcuts.c
+++ b/shell/e-shortcuts.c
@@ -238,22 +238,15 @@ update_shortcut_and_emit_signal (EShortcuts *shortcuts,
const char *type,
const char *custom_icon_name)
{
- /* Only thing that changed was the unread count */
- if (shortcut_item->unread_count != unread_count
- && !shortcut_item_update (shortcut_item, uri, name, unread_count, type, custom_icon_name)) {
- g_signal_emit (shortcuts, signals[UPDATE_SHORTCUT], 0, group_num, num);
- return FALSE;
- }
+ gboolean shortcut_changed;
- /* Unread count is the same, but other stuff changed */
- else if (shortcut_item_update (shortcut_item, uri, name, unread_count, type, custom_icon_name)) {
- g_signal_emit (shortcuts, signals[UPDATE_SHORTCUT], 0, group_num, num);
+ shortcut_changed = shortcut_item_update (shortcut_item, uri, name, unread_count, type, custom_icon_name);
+ if (shortcut_changed) {
+ gtk_signal_emit (GTK_OBJECT (shortcuts), signals[UPDATE_SHORTCUT], group_num, num);
return TRUE;
}
- /* Nothing at all changed, return false only */
- else
- return FALSE;
+ return FALSE;
}
static void
@@ -527,20 +520,28 @@ update_shortcuts_by_path (EShortcuts *shortcuts,
num = 0;
for (q = group->shortcuts; q != NULL; q = q->next, num++) {
EShortcutItem *shortcut_item;
+ char *shortcut_path;
shortcut_item = (EShortcutItem *) q->data;
- if (strcmp (shortcut_item->uri, evolution_uri) == 0) {
+ if (! e_shell_parse_uri (priv->shell, shortcut_item->uri, &shortcut_path, NULL)) {
+ /* Ignore bogus URIs. */
+ continue;
+ }
+
+ if (strcmp (shortcut_path, path) == 0) {
changed = update_shortcut_and_emit_signal (shortcuts,
shortcut_item,
group_num,
num,
- evolution_uri,
+ shortcut_item->uri,
shortcut_item->name,
e_folder_get_unread_count (folder),
e_folder_get_type_string (folder),
e_folder_get_custom_icon_name (folder));
}
+
+ g_free (shortcut_path);
}
}