aboutsummaryrefslogtreecommitdiffstats
path: root/shell
diff options
context:
space:
mode:
Diffstat (limited to 'shell')
-rw-r--r--shell/ChangeLog8
-rw-r--r--shell/e-shell-view.c95
2 files changed, 55 insertions, 48 deletions
diff --git a/shell/ChangeLog b/shell/ChangeLog
index 9e26e53ec2..b8c641d670 100644
--- a/shell/ChangeLog
+++ b/shell/ChangeLog
@@ -1,5 +1,13 @@
2001-08-24 Ettore Perazzoli <ettore@ximian.com>
+ * e-shell-view.c (update_folder_title_bar): Changed to get a
+ @title and a @type.
+ (update_for_current_uri): Updated accordingly.
+ (update_window_icon): Get a @type instead of a @folder.
+ (update_for_current_uri): Updated accordingly.
+
+2001-08-24 Ettore Perazzoli <ettore@ximian.com>
+
[Fix #5978, "If a component dies, it's toolbar buttons remain".]
* e-shell-view.c (socket_destroy_cb): If the view belongs to a
diff --git a/shell/e-shell-view.c b/shell/e-shell-view.c
index d6d7539a58..c20c7b043a 100644
--- a/shell/e-shell-view.c
+++ b/shell/e-shell-view.c
@@ -1350,20 +1350,14 @@ get_storage_set_path_from_uri (const char *uri)
static void
update_window_icon (EShellView *shell_view,
- EFolder *folder)
+ const char *type)
{
EShellViewPrivate *priv;
- const char *type;
const char *icon_name;
char *icon_path;
priv = shell_view->priv;
- if (folder == NULL)
- type = NULL;
- else
- type = e_folder_get_type_string (folder);
-
if (type == NULL) {
icon_path = NULL;
} else {
@@ -1387,40 +1381,32 @@ update_window_icon (EShellView *shell_view,
static void
update_folder_title_bar (EShellView *shell_view,
- EFolder *folder)
+ const char *title,
+ const char *type)
{
EShellViewPrivate *priv;
EFolderTypeRegistry *folder_type_registry;
GdkPixbuf *folder_icon;
- const char *folder_name;
- const char *folder_type_name;
priv = shell_view->priv;
- if (folder == NULL)
- folder_type_name = NULL;
- else
- folder_type_name = e_folder_get_type_string (folder);
-
- if (folder_type_name == NULL) {
- folder_name = NULL;
+ if (type == NULL) {
+ title = NULL;
folder_icon = NULL;
} else {
folder_type_registry = e_shell_get_folder_type_registry (priv->shell);
- folder_icon = e_folder_type_registry_get_icon_for_type (folder_type_registry,
- folder_type_name,
- TRUE);
-
- folder_name = e_folder_get_name (folder);
+ folder_icon = e_folder_type_registry_get_icon_for_type (folder_type_registry, type, TRUE);
}
- if (folder_icon)
+ if (folder_icon != NULL)
e_shell_folder_title_bar_set_icon (E_SHELL_FOLDER_TITLE_BAR (priv->folder_title_bar), folder_icon);
- if (folder_name) {
- gchar * utf;
- utf = e_utf8_to_gtk_string (GTK_WIDGET (priv->folder_title_bar), folder_name);
- e_shell_folder_title_bar_set_title (E_SHELL_FOLDER_TITLE_BAR (priv->folder_title_bar), utf);
- g_free (utf);
+
+ if (title != NULL) {
+ char *s;
+
+ s = e_utf8_to_gtk_string (GTK_WIDGET (priv->folder_title_bar), title);
+ e_shell_folder_title_bar_set_title (E_SHELL_FOLDER_TITLE_BAR (priv->folder_title_bar), s);
+ g_free (s);
}
}
@@ -1429,9 +1415,11 @@ update_for_current_uri (EShellView *shell_view)
{
EShellViewPrivate *priv;
EFolder *folder;
- char *folder_name;
const char *path;
- char *window_title;
+ const char *title;
+ const char *type;
+ char *utf8_window_title;
+ char *gtk_window_title;
priv = shell_view->priv;
@@ -1444,29 +1432,40 @@ update_for_current_uri (EShellView *shell_view)
path = get_storage_set_path_from_uri (priv->uri);
- if (path == NULL)
+ if (path == NULL) {
folder = NULL;
- else
- folder = e_storage_set_get_folder (e_shell_get_storage_set (priv->shell),
- path);
-
- if (folder == NULL)
- folder_name = g_strdup (_("None"));
- else
- folder_name = e_utf8_to_gtk_string ((GtkWidget *) shell_view, e_folder_get_name (folder));
+ } else {
+ folder = e_storage_set_get_folder (e_shell_get_storage_set (priv->shell), path);
+
+ if (folder != NULL) {
+ title = e_folder_get_name (folder);
+ type = e_folder_get_type_string (folder);
+ } else if (path != NULL) {
+ EStorage *storage;
+
+ storage = e_storage_set_get_storage (e_shell_get_storage_set (priv->shell), path + 1);
+ if (storage == NULL) {
+ title = NULL;
+ type = NULL;
+ } else {
+ title = e_storage_get_display_name (storage);
+ type = e_storage_get_toplevel_node_type (storage);
+ }
+ }
+ }
if (SUB_VERSION[0] == '\0')
- window_title = g_strdup_printf (_("%s - Evolution %s"), folder_name, VERSION);
+ utf8_window_title = g_strdup_printf (_("%s - Evolution %s"), title, VERSION);
else
- window_title = g_strdup_printf (_("%s - Evolution %s [%s]"), folder_name, VERSION, SUB_VERSION);
+ utf8_window_title = g_strdup_printf (_("%s - Evolution %s [%s]"), title, VERSION, SUB_VERSION);
- gtk_window_set_title (GTK_WINDOW (shell_view), window_title);
- g_free (window_title);
- g_free (folder_name);
-
- update_folder_title_bar (shell_view, folder);
-
- update_window_icon (shell_view, folder);
+ gtk_window_title = e_utf8_to_gtk_string (GTK_WIDGET (shell_view), utf8_window_title);
+ gtk_window_set_title (GTK_WINDOW (shell_view), gtk_window_title);
+ g_free (gtk_window_title);
+ g_free (utf8_window_title);
+
+ update_folder_title_bar (shell_view, title, type);
+ update_window_icon (shell_view, type);
gtk_signal_handler_block_by_func (GTK_OBJECT (priv->storage_set_view),
GTK_SIGNAL_FUNC (folder_selected_cb),