diff options
-rw-r--r-- | shell/ChangeLog | 14 | ||||
-rw-r--r-- | shell/e-shell-folder-commands.c | 15 | ||||
-rw-r--r-- | shell/e-shell-view-menu.c | 2 | ||||
-rw-r--r-- | shell/e-shortcuts.c | 35 | ||||
-rw-r--r-- | shell/e-shortcuts.h | 4 |
5 files changed, 69 insertions, 1 deletions
diff --git a/shell/ChangeLog b/shell/ChangeLog index 20b59fc098..d2941c494d 100644 --- a/shell/ChangeLog +++ b/shell/ChangeLog @@ -1,3 +1,17 @@ +2002-09-24 Ettore Perazzoli <ettore@ximian.com> + + [Fix #11645 for menu-based folder move operations. Still requires + fixage for the DnD case.] + + * e-shell-view-menu.c (launch_pilot_settings): Placate compiler. + + * e-shell-folder-commands.c (xfer_result_callback): When + FOLDER_COMMAND_MOVE, update the shortcuts by using + e_shortcuts_update_shortcuts_for_changed_uri(). + + * e-shortcuts.c (e_shortcuts_update_shortcuts_for_changed_uri): + New. + 2002-09-24 Dan Winship <danw@ximian.com> * e-shell.c (folder_selection_dialog_folder_selected_cb): Don't diff --git a/shell/e-shell-folder-commands.c b/shell/e-shell-folder-commands.c index 884fa97c05..3fe90163b8 100644 --- a/shell/e-shell-folder-commands.c +++ b/shell/e-shell-folder-commands.c @@ -149,6 +149,21 @@ xfer_result_callback (EStorageSet *storage_set, g_free (msg); } + if (folder_command_data->command == FOLDER_COMMAND_MOVE) { + char *source_uri; + char *destination_uri; + + source_uri = g_strconcat (E_SHELL_URI_PREFIX, folder_command_data->source_path, NULL); + destination_uri = g_strconcat (E_SHELL_URI_PREFIX, folder_command_data->destination_path, NULL); + + e_shortcuts_update_shortcuts_for_changed_uri + (e_shell_get_shortcuts (folder_command_data->shell), + source_uri, destination_uri); + + g_free (source_uri); + g_free (destination_uri); + } + folder_command_data_free (folder_command_data); } diff --git a/shell/e-shell-view-menu.c b/shell/e-shell-view-menu.c index 7503fda642..c8ee62123c 100644 --- a/shell/e-shell-view-menu.c +++ b/shell/e-shell-view-menu.c @@ -83,7 +83,7 @@ launch_pilot_settings (const char *extra_arg) { char *args[] = { "gpilotd-control-applet", - extra_arg, + (char *) extra_arg, NULL }; int pid; diff --git a/shell/e-shortcuts.c b/shell/e-shortcuts.c index 8ad70eba0f..a1ccf6a8e9 100644 --- a/shell/e-shortcuts.c +++ b/shell/e-shortcuts.c @@ -1237,4 +1237,39 @@ e_shortcuts_get_group_uses_small_icons (EShortcuts *shortcuts, } +void +e_shortcuts_update_shortcuts_for_changed_uri (EShortcuts *shortcuts, + const char *old_uri, + const char *new_uri) +{ + EShortcutsPrivate *priv; + GSList *p; + + g_return_if_fail (E_IS_SHORTCUTS (shortcuts)); + g_return_if_fail (old_uri != NULL); + g_return_if_fail (new_uri != NULL); + + priv = shortcuts->priv; + + for (p = priv->groups; p != NULL; p = p->next) { + ShortcutGroup *group; + GSList *q; + + group = (ShortcutGroup *) p->data; + for (q = group->shortcuts; q != NULL; q = q->next) { + EShortcutItem *item; + + item = (EShortcutItem *) q->data; + + if (strcmp (item->uri, old_uri) == 0) { + g_free (item->uri); + item->uri = g_strdup (new_uri); + + make_dirty (shortcuts); + } + } + } +} + + E_MAKE_TYPE (e_shortcuts, "EShortcuts", EShortcuts, class_init, init, PARENT_TYPE) diff --git a/shell/e-shortcuts.h b/shell/e-shortcuts.h index 1fb4bb8209..30e2ff01e8 100644 --- a/shell/e-shortcuts.h +++ b/shell/e-shortcuts.h @@ -156,6 +156,10 @@ void e_shortcuts_set_group_uses_small_icons (EShortcuts *shortcuts, gboolean e_shortcuts_get_group_uses_small_icons (EShortcuts *shortcuts, int group_num); +void e_shortcuts_update_shortcuts_for_changed_uri (EShortcuts *shortcuts, + const char *old_uri_, + const char *new_uri); + #ifdef __cplusplus } #endif /* __cplusplus */ |