aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--shell/ChangeLog13
-rw-r--r--shell/e-shortcuts.c29
2 files changed, 28 insertions, 14 deletions
diff --git a/shell/ChangeLog b/shell/ChangeLog
index 364e2eccaa..b98cc6c90c 100644
--- a/shell/ChangeLog
+++ b/shell/ChangeLog
@@ -1,3 +1,16 @@
+2002-01-23 Ettore Perazzoli <ettore@ximian.com>
+
+ [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.]
+
2003-01-23 Ettore Perazzoli <ettore@ximian.com>
* e-shell-about-box.c: Update copyright year.
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);
}
}