|
Packit |
15f964 |
/*
|
|
Packit |
15f964 |
* e-shell-window-private.c
|
|
Packit |
15f964 |
*
|
|
Packit |
15f964 |
* This program is free software; you can redistribute it and/or modify it
|
|
Packit |
15f964 |
* under the terms of the GNU Lesser General Public License as published by
|
|
Packit |
15f964 |
* the Free Software Foundation.
|
|
Packit |
15f964 |
*
|
|
Packit |
15f964 |
* This program is distributed in the hope that it will be useful, but
|
|
Packit |
15f964 |
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
|
Packit |
15f964 |
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
|
Packit |
15f964 |
* for more details.
|
|
Packit |
15f964 |
*
|
|
Packit |
15f964 |
* You should have received a copy of the GNU Lesser General Public License
|
|
Packit |
15f964 |
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
|
Packit |
15f964 |
*
|
|
Packit |
15f964 |
*
|
|
Packit |
15f964 |
* Copyright (C) 1999-2008 Novell, Inc. (www.novell.com)
|
|
Packit |
15f964 |
*
|
|
Packit |
15f964 |
*/
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
#include "evolution-config.h"
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
#include "e-shell-window-private.h"
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
static void
|
|
Packit |
15f964 |
shell_window_save_switcher_style_cb (GtkRadioAction *action,
|
|
Packit |
15f964 |
GtkRadioAction *current,
|
|
Packit |
15f964 |
EShellWindow *shell_window)
|
|
Packit |
15f964 |
{
|
|
Packit |
15f964 |
GSettings *settings;
|
|
Packit |
15f964 |
GtkToolbarStyle style;
|
|
Packit |
15f964 |
const gchar *string;
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
settings = e_util_ref_settings ("org.gnome.evolution.shell");
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
style = gtk_radio_action_get_current_value (action);
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
switch (style) {
|
|
Packit |
15f964 |
case GTK_TOOLBAR_ICONS:
|
|
Packit |
15f964 |
string = "icons";
|
|
Packit |
15f964 |
break;
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
case GTK_TOOLBAR_TEXT:
|
|
Packit |
15f964 |
string = "text";
|
|
Packit |
15f964 |
break;
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
case GTK_TOOLBAR_BOTH:
|
|
Packit |
15f964 |
case GTK_TOOLBAR_BOTH_HORIZ:
|
|
Packit |
15f964 |
string = "both";
|
|
Packit |
15f964 |
break;
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
default:
|
|
Packit |
15f964 |
string = "toolbar";
|
|
Packit |
15f964 |
break;
|
|
Packit |
15f964 |
}
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
g_settings_set_string (settings, "buttons-style", string);
|
|
Packit |
15f964 |
g_object_unref (settings);
|
|
Packit |
15f964 |
}
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
static void
|
|
Packit |
15f964 |
shell_window_init_switcher_style (EShellWindow *shell_window)
|
|
Packit |
15f964 |
{
|
|
Packit |
15f964 |
GtkAction *action;
|
|
Packit |
15f964 |
GSettings *settings;
|
|
Packit |
15f964 |
GtkToolbarStyle style;
|
|
Packit |
15f964 |
gchar *string;
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
settings = e_util_ref_settings ("org.gnome.evolution.shell");
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
action = ACTION (SWITCHER_STYLE_ICONS);
|
|
Packit |
15f964 |
string = g_settings_get_string (settings, "buttons-style");
|
|
Packit |
15f964 |
g_object_unref (settings);
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
if (string != NULL) {
|
|
Packit |
15f964 |
if (strcmp (string, "icons") == 0)
|
|
Packit |
15f964 |
style = GTK_TOOLBAR_ICONS;
|
|
Packit |
15f964 |
else if (strcmp (string, "text") == 0)
|
|
Packit |
15f964 |
style = GTK_TOOLBAR_TEXT;
|
|
Packit |
15f964 |
else if (strcmp (string, "both") == 0)
|
|
Packit |
15f964 |
style = GTK_TOOLBAR_BOTH_HORIZ;
|
|
Packit |
15f964 |
else
|
|
Packit |
15f964 |
style = -1;
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
gtk_radio_action_set_current_value (
|
|
Packit |
15f964 |
GTK_RADIO_ACTION (action), style);
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
g_free (string);
|
|
Packit |
15f964 |
}
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
g_signal_connect (
|
|
Packit |
15f964 |
action, "changed",
|
|
Packit |
15f964 |
G_CALLBACK (shell_window_save_switcher_style_cb),
|
|
Packit |
15f964 |
shell_window);
|
|
Packit |
15f964 |
}
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
static void
|
|
Packit |
15f964 |
shell_window_menu_item_select_cb (EShellWindow *shell_window,
|
|
Packit |
15f964 |
GtkWidget *widget)
|
|
Packit |
15f964 |
{
|
|
Packit |
15f964 |
GtkAction *action;
|
|
Packit |
15f964 |
GtkActivatable *activatable;
|
|
Packit |
15f964 |
GtkLabel *label;
|
|
Packit |
15f964 |
const gchar *tooltip;
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
activatable = GTK_ACTIVATABLE (widget);
|
|
Packit |
15f964 |
action = gtk_activatable_get_related_action (activatable);
|
|
Packit |
15f964 |
tooltip = gtk_action_get_tooltip (action);
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
if (tooltip == NULL)
|
|
Packit |
15f964 |
return;
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
label = GTK_LABEL (shell_window->priv->tooltip_label);
|
|
Packit |
15f964 |
gtk_label_set_text (label, tooltip);
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
gtk_widget_show (shell_window->priv->tooltip_label);
|
|
Packit |
15f964 |
gtk_widget_hide (shell_window->priv->status_notebook);
|
|
Packit |
15f964 |
}
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
static void
|
|
Packit |
15f964 |
shell_window_menu_item_deselect_cb (EShellWindow *shell_window)
|
|
Packit |
15f964 |
{
|
|
Packit |
15f964 |
gtk_widget_hide (shell_window->priv->tooltip_label);
|
|
Packit |
15f964 |
gtk_widget_show (shell_window->priv->status_notebook);
|
|
Packit |
15f964 |
}
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
static void
|
|
Packit |
15f964 |
shell_window_connect_proxy_cb (EShellWindow *shell_window,
|
|
Packit |
15f964 |
GtkAction *action,
|
|
Packit |
15f964 |
GtkWidget *proxy)
|
|
Packit |
15f964 |
{
|
|
Packit |
15f964 |
if (!GTK_IS_MENU_ITEM (proxy))
|
|
Packit |
15f964 |
return;
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
g_signal_connect_swapped (
|
|
Packit |
15f964 |
proxy, "select",
|
|
Packit |
15f964 |
G_CALLBACK (shell_window_menu_item_select_cb),
|
|
Packit |
15f964 |
shell_window);
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
g_signal_connect_swapped (
|
|
Packit |
15f964 |
proxy, "deselect",
|
|
Packit |
15f964 |
G_CALLBACK (shell_window_menu_item_deselect_cb),
|
|
Packit |
15f964 |
shell_window);
|
|
Packit |
15f964 |
}
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
static GtkWidget *
|
|
Packit |
15f964 |
shell_window_construct_menubar (EShellWindow *shell_window)
|
|
Packit |
15f964 |
{
|
|
Packit |
15f964 |
EShellWindowClass *class;
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
class = E_SHELL_WINDOW_GET_CLASS (shell_window);
|
|
Packit |
15f964 |
if (class->construct_menubar == NULL)
|
|
Packit |
15f964 |
return NULL;
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
return class->construct_menubar (shell_window);
|
|
Packit |
15f964 |
}
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
static GtkWidget *
|
|
Packit |
15f964 |
shell_window_construct_toolbar (EShellWindow *shell_window)
|
|
Packit |
15f964 |
{
|
|
Packit |
15f964 |
EShellWindowClass *class;
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
class = E_SHELL_WINDOW_GET_CLASS (shell_window);
|
|
Packit |
15f964 |
if (class->construct_toolbar == NULL)
|
|
Packit |
15f964 |
return NULL;
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
return class->construct_toolbar (shell_window);
|
|
Packit |
15f964 |
}
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
static GtkWidget *
|
|
Packit |
15f964 |
shell_window_construct_sidebar (EShellWindow *shell_window)
|
|
Packit |
15f964 |
{
|
|
Packit |
15f964 |
EShellWindowClass *class;
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
class = E_SHELL_WINDOW_GET_CLASS (shell_window);
|
|
Packit |
15f964 |
if (class->construct_sidebar == NULL)
|
|
Packit |
15f964 |
return NULL;
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
return class->construct_sidebar (shell_window);
|
|
Packit |
15f964 |
}
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
static GtkWidget *
|
|
Packit |
15f964 |
shell_window_construct_content (EShellWindow *shell_window)
|
|
Packit |
15f964 |
{
|
|
Packit |
15f964 |
EShellWindowClass *class;
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
class = E_SHELL_WINDOW_GET_CLASS (shell_window);
|
|
Packit |
15f964 |
if (class->construct_content == NULL)
|
|
Packit |
15f964 |
return NULL;
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
return class->construct_content (shell_window);
|
|
Packit |
15f964 |
}
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
static GtkWidget *
|
|
Packit |
15f964 |
shell_window_construct_taskbar (EShellWindow *shell_window)
|
|
Packit |
15f964 |
{
|
|
Packit |
15f964 |
EShellWindowClass *class;
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
class = E_SHELL_WINDOW_GET_CLASS (shell_window);
|
|
Packit |
15f964 |
if (class->construct_taskbar == NULL)
|
|
Packit |
15f964 |
return NULL;
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
return class->construct_taskbar (shell_window);
|
|
Packit |
15f964 |
}
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
void
|
|
Packit |
15f964 |
e_shell_window_private_init (EShellWindow *shell_window)
|
|
Packit |
15f964 |
{
|
|
Packit |
15f964 |
EShellWindowPrivate *priv = shell_window->priv;
|
|
Packit |
15f964 |
GHashTable *loaded_views;
|
|
Packit |
15f964 |
GArray *signal_handler_ids;
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
loaded_views = g_hash_table_new_full (
|
|
Packit |
15f964 |
g_str_hash, g_str_equal,
|
|
Packit |
15f964 |
(GDestroyNotify) g_free,
|
|
Packit |
15f964 |
(GDestroyNotify) g_object_unref);
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
signal_handler_ids = g_array_new (FALSE, FALSE, sizeof (gulong));
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
priv->ui_manager = gtk_ui_manager_new ();
|
|
Packit |
15f964 |
priv->loaded_views = loaded_views;
|
|
Packit |
15f964 |
priv->signal_handler_ids = signal_handler_ids;
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
/* XXX This kind of violates the shell window being unaware
|
|
Packit |
15f964 |
* of specific shell views, but we need a sane fallback. */
|
|
Packit |
15f964 |
priv->active_view = "mail";
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
e_shell_window_add_action_group (shell_window, "shell");
|
|
Packit |
15f964 |
e_shell_window_add_action_group (shell_window, "gal-view");
|
|
Packit |
15f964 |
e_shell_window_add_action_group (shell_window, "new-item");
|
|
Packit |
15f964 |
e_shell_window_add_action_group (shell_window, "new-source");
|
|
Packit |
15f964 |
e_shell_window_add_action_group (shell_window, "custom-rules");
|
|
Packit |
15f964 |
e_shell_window_add_action_group (shell_window, "switcher");
|
|
Packit |
15f964 |
e_shell_window_add_action_group (shell_window, "new-window");
|
|
Packit |
15f964 |
e_shell_window_add_action_group (shell_window, "lockdown-application-handlers");
|
|
Packit |
15f964 |
e_shell_window_add_action_group (shell_window, "lockdown-printing");
|
|
Packit |
15f964 |
e_shell_window_add_action_group (shell_window, "lockdown-print-setup");
|
|
Packit |
15f964 |
e_shell_window_add_action_group (shell_window, "lockdown-save-to-disk");
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
gtk_window_set_title (GTK_WINDOW (shell_window), _("Evolution"));
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
g_signal_connect_swapped (
|
|
Packit |
15f964 |
priv->ui_manager, "connect-proxy",
|
|
Packit |
15f964 |
G_CALLBACK (shell_window_connect_proxy_cb), shell_window);
|
|
Packit |
15f964 |
}
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
static gboolean
|
|
Packit |
15f964 |
delayed_menubar_show_cb (gpointer user_data)
|
|
Packit |
15f964 |
{
|
|
Packit |
15f964 |
EShellWindow *shell_window = user_data;
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
g_return_val_if_fail (E_IS_SHELL_WINDOW (shell_window), FALSE);
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
shell_window->priv->delayed_menubar_show_id = 0;
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
if (!e_shell_window_get_menubar_visible (shell_window)) {
|
|
Packit |
15f964 |
GtkWidget *main_menu;
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
main_menu = e_shell_window_get_managed_widget (shell_window, "/main-menu");
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
gtk_widget_show (main_menu);
|
|
Packit |
15f964 |
}
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
return FALSE;
|
|
Packit |
15f964 |
}
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
static gboolean
|
|
Packit |
15f964 |
delayed_menubar_hide_cb (gpointer user_data)
|
|
Packit |
15f964 |
{
|
|
Packit |
15f964 |
EShellWindow *shell_window = user_data;
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
g_return_val_if_fail (E_IS_SHELL_WINDOW (shell_window), FALSE);
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
shell_window->priv->delayed_menubar_hide_id = 0;
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
if (!e_shell_window_get_menubar_visible (shell_window) &&
|
|
Packit |
15f964 |
!shell_window->priv->delayed_menubar_show_id) {
|
|
Packit |
15f964 |
GtkWidget *main_menu;
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
main_menu = e_shell_window_get_managed_widget (shell_window, "/main-menu");
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
if (gtk_widget_get_visible (main_menu) &&
|
|
Packit |
15f964 |
!gtk_menu_shell_get_selected_item (GTK_MENU_SHELL (main_menu)))
|
|
Packit |
15f964 |
gtk_widget_hide (main_menu);
|
|
Packit |
15f964 |
}
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
return FALSE;
|
|
Packit |
15f964 |
}
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
static void
|
|
Packit |
15f964 |
e_shell_window_event_after_cb (EShellWindow *shell_window,
|
|
Packit |
15f964 |
GdkEvent *event)
|
|
Packit |
15f964 |
{
|
|
Packit |
15f964 |
GtkWidget *main_menu;
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
g_return_if_fail (event != NULL);
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
if (event->type != GDK_KEY_PRESS &&
|
|
Packit |
15f964 |
event->type != GDK_KEY_RELEASE &&
|
|
Packit |
15f964 |
event->type != GDK_BUTTON_RELEASE &&
|
|
Packit |
15f964 |
event->type != GDK_FOCUS_CHANGE)
|
|
Packit |
15f964 |
return;
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
g_return_if_fail (E_IS_SHELL_WINDOW (shell_window));
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
if (e_shell_window_get_menubar_visible (shell_window))
|
|
Packit |
15f964 |
return;
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
main_menu = e_shell_window_get_managed_widget (shell_window, "/main-menu");
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
if (event->type == GDK_KEY_PRESS) {
|
|
Packit |
15f964 |
GdkEventKey *key_event;
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
key_event = (GdkEventKey *) event;
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
if ((key_event->keyval == GDK_KEY_Alt_L || key_event->keyval == GDK_KEY_Alt_R) &&
|
|
Packit |
15f964 |
!(key_event->state & (GDK_SHIFT_MASK | GDK_CONTROL_MASK | GDK_SUPER_MASK | GDK_HYPER_MASK | GDK_META_MASK))) {
|
|
Packit |
15f964 |
if (shell_window->priv->delayed_menubar_hide_id) {
|
|
Packit |
15f964 |
g_source_remove (shell_window->priv->delayed_menubar_hide_id);
|
|
Packit |
15f964 |
shell_window->priv->delayed_menubar_hide_id = 0;
|
|
Packit |
15f964 |
}
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
if (shell_window->priv->delayed_menubar_show_id) {
|
|
Packit |
15f964 |
g_source_remove (shell_window->priv->delayed_menubar_show_id);
|
|
Packit |
15f964 |
shell_window->priv->delayed_menubar_show_id = 0;
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
delayed_menubar_show_cb (shell_window);
|
|
Packit |
15f964 |
} else {
|
|
Packit |
15f964 |
/* To not flash when using Alt+Tab or similar system-wide shortcuts */
|
|
Packit |
15f964 |
shell_window->priv->delayed_menubar_show_id =
|
|
Packit |
15f964 |
e_named_timeout_add (250, delayed_menubar_show_cb, shell_window);
|
|
Packit |
15f964 |
}
|
|
Packit |
15f964 |
}
|
|
Packit |
15f964 |
} else if (event->type != GDK_BUTTON_RELEASE || !(event->button.state & GDK_MOD1_MASK)) {
|
|
Packit |
15f964 |
if (shell_window->priv->delayed_menubar_show_id) {
|
|
Packit |
15f964 |
g_source_remove (shell_window->priv->delayed_menubar_show_id);
|
|
Packit |
15f964 |
shell_window->priv->delayed_menubar_show_id = 0;
|
|
Packit |
15f964 |
}
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
if (gtk_widget_get_visible (main_menu) &&
|
|
Packit |
15f964 |
!shell_window->priv->delayed_menubar_hide_id) {
|
|
Packit |
15f964 |
shell_window->priv->delayed_menubar_hide_id =
|
|
Packit |
15f964 |
e_named_timeout_add (500, delayed_menubar_hide_cb, shell_window);
|
|
Packit |
15f964 |
}
|
|
Packit |
15f964 |
}
|
|
Packit |
15f964 |
}
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
static gboolean
|
|
Packit |
15f964 |
shell_window_check_is_main_instance (GtkApplication *application,
|
|
Packit |
15f964 |
GtkWindow *window)
|
|
Packit |
15f964 |
{
|
|
Packit |
15f964 |
GList *windows, *link;
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
g_return_val_if_fail (GTK_IS_APPLICATION (application), FALSE);
|
|
Packit |
15f964 |
g_return_val_if_fail (GTK_IS_WINDOW (window), FALSE);
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
windows = gtk_application_get_windows (application);
|
|
Packit |
15f964 |
for (link = windows; link; link = g_list_next (link)) {
|
|
Packit |
15f964 |
GtkWindow *wnd = link->data;
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
if (E_IS_SHELL_WINDOW (wnd) && wnd != window)
|
|
Packit |
15f964 |
return FALSE;
|
|
Packit |
15f964 |
}
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
return TRUE;
|
|
Packit |
15f964 |
}
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
void
|
|
Packit |
15f964 |
e_shell_window_private_constructed (EShellWindow *shell_window)
|
|
Packit |
15f964 |
{
|
|
Packit |
15f964 |
EShellWindowPrivate *priv = shell_window->priv;
|
|
Packit |
15f964 |
EShell *shell;
|
|
Packit |
15f964 |
GtkAction *action;
|
|
Packit |
15f964 |
GtkAccelGroup *accel_group;
|
|
Packit |
15f964 |
GtkUIManager *ui_manager;
|
|
Packit |
15f964 |
GtkBox *box;
|
|
Packit |
15f964 |
GtkPaned *paned;
|
|
Packit |
15f964 |
GtkWidget *widget;
|
|
Packit |
15f964 |
GtkWindow *window;
|
|
Packit |
15f964 |
guint merge_id;
|
|
Packit |
15f964 |
const gchar *id;
|
|
Packit |
15f964 |
GSettings *settings;
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
#ifndef G_OS_WIN32
|
|
Packit |
15f964 |
GtkActionGroup *action_group;
|
|
Packit |
15f964 |
#endif
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
window = GTK_WINDOW (shell_window);
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
shell = e_shell_window_get_shell (shell_window);
|
|
Packit |
15f964 |
shell_window->priv->is_main_instance = shell_window_check_is_main_instance (GTK_APPLICATION (shell), window);
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
ui_manager = e_shell_window_get_ui_manager (shell_window);
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
/* Defer actions and menu merging until we have set express mode */
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
e_shell_window_actions_init (shell_window);
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
accel_group = gtk_ui_manager_get_accel_group (ui_manager);
|
|
Packit |
15f964 |
gtk_window_add_accel_group (GTK_WINDOW (shell_window), accel_group);
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
merge_id = gtk_ui_manager_new_merge_id (ui_manager);
|
|
Packit |
15f964 |
priv->custom_rule_merge_id = merge_id;
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
merge_id = gtk_ui_manager_new_merge_id (ui_manager);
|
|
Packit |
15f964 |
priv->gal_view_merge_id = merge_id;
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
/* Construct window widgets. */
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
widget = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
|
|
Packit |
15f964 |
gtk_container_add (GTK_CONTAINER (shell_window), widget);
|
|
Packit |
15f964 |
gtk_widget_show (widget);
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
box = GTK_BOX (widget);
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
widget = shell_window_construct_menubar (shell_window);
|
|
Packit |
15f964 |
if (widget != NULL)
|
|
Packit |
15f964 |
gtk_box_pack_start (box, widget, FALSE, FALSE, 0);
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
widget = shell_window_construct_toolbar (shell_window);
|
|
Packit |
15f964 |
if (widget != NULL)
|
|
Packit |
15f964 |
gtk_box_pack_start (box, widget, FALSE, FALSE, 0);
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
widget = gtk_paned_new (GTK_ORIENTATION_HORIZONTAL);
|
|
Packit |
15f964 |
gtk_box_pack_start (box, widget, TRUE, TRUE, 0);
|
|
Packit |
15f964 |
priv->content_pane = g_object_ref (widget);
|
|
Packit |
15f964 |
gtk_widget_show (widget);
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
widget = shell_window_construct_taskbar (shell_window);
|
|
Packit |
15f964 |
if (widget != NULL)
|
|
Packit |
15f964 |
gtk_box_pack_start (box, widget, FALSE, FALSE, 0);
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
paned = GTK_PANED (priv->content_pane);
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
widget = shell_window_construct_sidebar (shell_window);
|
|
Packit |
15f964 |
if (widget != NULL)
|
|
Packit |
15f964 |
gtk_paned_pack1 (paned, widget, FALSE, FALSE);
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
widget = shell_window_construct_content (shell_window);
|
|
Packit |
15f964 |
if (widget != NULL)
|
|
Packit |
15f964 |
gtk_paned_pack2 (paned, widget, TRUE, FALSE);
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
/* Create the switcher actions before we set the initial
|
|
Packit |
15f964 |
* shell view, because the shell view relies on them for
|
|
Packit |
15f964 |
* default settings during construction. */
|
|
Packit |
15f964 |
e_shell_window_create_switcher_actions (shell_window);
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
/* Bunch of chores to do when the active view changes. */
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
e_signal_connect_notify (
|
|
Packit |
15f964 |
shell_window, "notify::active-view",
|
|
Packit |
15f964 |
G_CALLBACK (e_shell_window_update_icon), NULL);
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
e_signal_connect_notify (
|
|
Packit |
15f964 |
shell_window, "notify::active-view",
|
|
Packit |
15f964 |
G_CALLBACK (e_shell_window_update_title), NULL);
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
e_signal_connect_notify (
|
|
Packit |
15f964 |
shell_window, "notify::active-view",
|
|
Packit |
15f964 |
G_CALLBACK (e_shell_window_update_view_menu), NULL);
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
e_signal_connect_notify (
|
|
Packit |
15f964 |
shell_window, "notify::active-view",
|
|
Packit |
15f964 |
G_CALLBACK (e_shell_window_update_search_menu), NULL);
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
#ifndef G_OS_WIN32
|
|
Packit |
15f964 |
/* Support lockdown. */
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
settings = e_util_ref_settings ("org.gnome.desktop.lockdown");
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
action_group = ACTION_GROUP (LOCKDOWN_PRINTING);
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
g_settings_bind (
|
|
Packit |
15f964 |
settings, "disable-printing",
|
|
Packit |
15f964 |
action_group, "visible",
|
|
Packit |
15f964 |
G_SETTINGS_BIND_GET |
|
|
Packit |
15f964 |
G_SETTINGS_BIND_INVERT_BOOLEAN);
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
action_group = ACTION_GROUP (LOCKDOWN_PRINT_SETUP);
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
g_settings_bind (
|
|
Packit |
15f964 |
settings, "disable-print-setup",
|
|
Packit |
15f964 |
action_group, "visible",
|
|
Packit |
15f964 |
G_SETTINGS_BIND_GET |
|
|
Packit |
15f964 |
G_SETTINGS_BIND_INVERT_BOOLEAN);
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
action_group = ACTION_GROUP (LOCKDOWN_SAVE_TO_DISK);
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
g_settings_bind (
|
|
Packit |
15f964 |
settings, "disable-save-to-disk",
|
|
Packit |
15f964 |
action_group, "visible",
|
|
Packit |
15f964 |
G_SETTINGS_BIND_GET |
|
|
Packit |
15f964 |
G_SETTINGS_BIND_INVERT_BOOLEAN);
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
g_object_unref (settings);
|
|
Packit |
15f964 |
#endif /* G_OS_WIN32 */
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
/* Bind GObject properties to GObject properties. */
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
action = ACTION (WORK_OFFLINE);
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
e_binding_bind_property (
|
|
Packit |
15f964 |
shell, "online",
|
|
Packit |
15f964 |
action, "visible",
|
|
Packit |
15f964 |
G_BINDING_SYNC_CREATE);
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
e_binding_bind_property (
|
|
Packit |
15f964 |
shell, "network-available",
|
|
Packit |
15f964 |
action, "sensitive",
|
|
Packit |
15f964 |
G_BINDING_SYNC_CREATE);
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
action = ACTION (WORK_ONLINE);
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
e_binding_bind_property (
|
|
Packit |
15f964 |
shell, "online",
|
|
Packit |
15f964 |
action, "visible",
|
|
Packit |
15f964 |
G_BINDING_SYNC_CREATE |
|
|
Packit |
15f964 |
G_BINDING_INVERT_BOOLEAN);
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
e_binding_bind_property (
|
|
Packit |
15f964 |
shell, "network-available",
|
|
Packit |
15f964 |
action, "sensitive",
|
|
Packit |
15f964 |
G_BINDING_SYNC_CREATE);
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
/* Bind GObject properties to GSettings keys. */
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
settings = e_util_ref_settings ("org.gnome.evolution.shell");
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
/* Use G_SETTINGS_BIND_GET_NO_CHANGES so shell windows
|
|
Packit |
15f964 |
* are initialized to the most recently used shell view,
|
|
Packit |
15f964 |
* but still allows different windows to show different
|
|
Packit |
15f964 |
* views at once. */
|
|
Packit |
15f964 |
g_settings_bind (
|
|
Packit |
15f964 |
settings, "default-component-id",
|
|
Packit |
15f964 |
shell_window, "active-view",
|
|
Packit |
15f964 |
G_SETTINGS_BIND_DEFAULT |
|
|
Packit |
15f964 |
G_SETTINGS_BIND_GET_NO_CHANGES);
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
if (e_shell_window_is_main_instance (shell_window)) {
|
|
Packit |
15f964 |
g_settings_bind (
|
|
Packit |
15f964 |
settings, "folder-bar-width",
|
|
Packit |
15f964 |
priv->content_pane, "position",
|
|
Packit |
15f964 |
G_SETTINGS_BIND_DEFAULT);
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
g_settings_bind (
|
|
Packit |
15f964 |
settings, "menubar-visible",
|
|
Packit |
15f964 |
shell_window, "menubar-visible",
|
|
Packit |
15f964 |
G_SETTINGS_BIND_DEFAULT);
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
g_settings_bind (
|
|
Packit |
15f964 |
settings, "sidebar-visible",
|
|
Packit |
15f964 |
shell_window, "sidebar-visible",
|
|
Packit |
15f964 |
G_SETTINGS_BIND_DEFAULT);
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
g_settings_bind (
|
|
Packit |
15f964 |
settings, "statusbar-visible",
|
|
Packit |
15f964 |
shell_window, "taskbar-visible",
|
|
Packit |
15f964 |
G_SETTINGS_BIND_DEFAULT);
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
g_settings_bind (
|
|
Packit |
15f964 |
settings, "buttons-visible",
|
|
Packit |
15f964 |
shell_window, "switcher-visible",
|
|
Packit |
15f964 |
G_SETTINGS_BIND_DEFAULT);
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
g_settings_bind (
|
|
Packit |
15f964 |
settings, "toolbar-visible",
|
|
Packit |
15f964 |
shell_window, "toolbar-visible",
|
|
Packit |
15f964 |
G_SETTINGS_BIND_DEFAULT);
|
|
Packit |
15f964 |
} else {
|
|
Packit |
15f964 |
g_settings_bind (
|
|
Packit |
15f964 |
settings, "menubar-visible-sub",
|
|
Packit |
15f964 |
shell_window, "menubar-visible",
|
|
Packit |
15f964 |
G_SETTINGS_BIND_DEFAULT |
|
|
Packit |
15f964 |
G_SETTINGS_BIND_GET_NO_CHANGES);
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
g_settings_bind (
|
|
Packit |
15f964 |
settings, "folder-bar-width-sub",
|
|
Packit |
15f964 |
priv->content_pane, "position",
|
|
Packit |
15f964 |
G_SETTINGS_BIND_DEFAULT |
|
|
Packit |
15f964 |
G_SETTINGS_BIND_GET_NO_CHANGES);
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
g_settings_bind (
|
|
Packit |
15f964 |
settings, "sidebar-visible-sub",
|
|
Packit |
15f964 |
shell_window, "sidebar-visible",
|
|
Packit |
15f964 |
G_SETTINGS_BIND_DEFAULT |
|
|
Packit |
15f964 |
G_SETTINGS_BIND_GET_NO_CHANGES);
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
g_settings_bind (
|
|
Packit |
15f964 |
settings, "statusbar-visible-sub",
|
|
Packit |
15f964 |
shell_window, "taskbar-visible",
|
|
Packit |
15f964 |
G_SETTINGS_BIND_DEFAULT |
|
|
Packit |
15f964 |
G_SETTINGS_BIND_GET_NO_CHANGES);
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
g_settings_bind (
|
|
Packit |
15f964 |
settings, "buttons-visible-sub",
|
|
Packit |
15f964 |
shell_window, "switcher-visible",
|
|
Packit |
15f964 |
G_SETTINGS_BIND_DEFAULT |
|
|
Packit |
15f964 |
G_SETTINGS_BIND_GET_NO_CHANGES);
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
g_settings_bind (
|
|
Packit |
15f964 |
settings, "toolbar-visible-sub",
|
|
Packit |
15f964 |
shell_window, "toolbar-visible",
|
|
Packit |
15f964 |
G_SETTINGS_BIND_DEFAULT |
|
|
Packit |
15f964 |
G_SETTINGS_BIND_GET_NO_CHANGES);
|
|
Packit |
15f964 |
}
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
/* Configure the initial size and position of the window by way
|
|
Packit |
15f964 |
* of either a user-supplied geometry string or the last recorded
|
|
Packit |
15f964 |
* values. Note that if a geometry string is applied, the window
|
|
Packit |
15f964 |
* size and position are -not- recorded. */
|
|
Packit |
15f964 |
if (priv->geometry != NULL) {
|
|
Packit |
15f964 |
if (!gtk_window_parse_geometry (window, priv->geometry))
|
|
Packit |
15f964 |
g_printerr (
|
|
Packit |
15f964 |
"Failed to parse geometry '%s'\n",
|
|
Packit |
15f964 |
priv->geometry);
|
|
Packit |
15f964 |
g_free (priv->geometry);
|
|
Packit |
15f964 |
priv->geometry = NULL;
|
|
Packit |
15f964 |
} else {
|
|
Packit |
15f964 |
gtk_window_set_default_size (window, 640, 480);
|
|
Packit |
15f964 |
e_restore_window (
|
|
Packit |
15f964 |
window, "/org/gnome/evolution/shell/window/",
|
|
Packit |
15f964 |
E_RESTORE_WINDOW_SIZE | E_RESTORE_WINDOW_POSITION);
|
|
Packit |
15f964 |
}
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
shell_window_init_switcher_style (shell_window);
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
id = "org.gnome.evolution.shell";
|
|
Packit |
15f964 |
e_plugin_ui_register_manager (ui_manager, id, shell_window);
|
|
Packit |
15f964 |
e_plugin_ui_enable_manager (ui_manager, id);
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
gtk_application_add_window (GTK_APPLICATION (shell), window);
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
g_object_unref (settings);
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
g_signal_connect (shell_window, "event-after",
|
|
Packit |
15f964 |
G_CALLBACK (e_shell_window_event_after_cb), NULL);
|
|
Packit |
15f964 |
}
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
void
|
|
Packit |
15f964 |
e_shell_window_private_dispose (EShellWindow *shell_window)
|
|
Packit |
15f964 |
{
|
|
Packit |
15f964 |
EShellWindowPrivate *priv = shell_window->priv;
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
if (priv->delayed_menubar_show_id) {
|
|
Packit |
15f964 |
g_source_remove (priv->delayed_menubar_show_id);
|
|
Packit |
15f964 |
priv->delayed_menubar_show_id = 0;
|
|
Packit |
15f964 |
}
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
if (priv->delayed_menubar_hide_id) {
|
|
Packit |
15f964 |
g_source_remove (priv->delayed_menubar_hide_id);
|
|
Packit |
15f964 |
priv->delayed_menubar_hide_id = 0;
|
|
Packit |
15f964 |
}
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
/* Need to disconnect handlers before we unref the shell. */
|
|
Packit |
15f964 |
if (priv->signal_handler_ids != NULL) {
|
|
Packit |
15f964 |
GArray *array = priv->signal_handler_ids;
|
|
Packit |
15f964 |
gulong handler_id;
|
|
Packit |
15f964 |
guint ii;
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
for (ii = 0; ii < array->len; ii++) {
|
|
Packit |
15f964 |
handler_id = g_array_index (array, gulong, ii);
|
|
Packit |
15f964 |
g_signal_handler_disconnect (priv->shell, handler_id);
|
|
Packit |
15f964 |
}
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
g_array_free (array, TRUE);
|
|
Packit |
15f964 |
priv->signal_handler_ids = NULL;
|
|
Packit |
15f964 |
}
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
if (priv->shell != NULL) {
|
|
Packit |
15f964 |
g_object_remove_weak_pointer (
|
|
Packit |
15f964 |
G_OBJECT (priv->shell), &priv->shell);
|
|
Packit |
15f964 |
priv->shell = NULL;
|
|
Packit |
15f964 |
}
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
g_clear_object (&priv->focus_tracker);
|
|
Packit |
15f964 |
g_clear_object (&priv->ui_manager);
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
g_hash_table_remove_all (priv->loaded_views);
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
g_clear_object (&priv->alert_bar);
|
|
Packit |
15f964 |
g_clear_object (&priv->content_pane);
|
|
Packit |
15f964 |
g_clear_object (&priv->content_notebook);
|
|
Packit |
15f964 |
g_clear_object (&priv->sidebar_notebook);
|
|
Packit |
15f964 |
g_clear_object (&priv->switcher);
|
|
Packit |
15f964 |
g_clear_object (&priv->tooltip_label);
|
|
Packit |
15f964 |
g_clear_object (&priv->status_notebook);
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
priv->destroyed = TRUE;
|
|
Packit |
15f964 |
}
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
void
|
|
Packit |
15f964 |
e_shell_window_private_finalize (EShellWindow *shell_window)
|
|
Packit |
15f964 |
{
|
|
Packit |
15f964 |
EShellWindowPrivate *priv = shell_window->priv;
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
g_hash_table_destroy (priv->loaded_views);
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
g_slist_free_full (priv->postponed_alerts, g_object_unref);
|
|
Packit |
15f964 |
g_free (priv->geometry);
|
|
Packit |
15f964 |
}
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
void
|
|
Packit |
15f964 |
e_shell_window_switch_to_view (EShellWindow *shell_window,
|
|
Packit |
15f964 |
const gchar *view_name)
|
|
Packit |
15f964 |
{
|
|
Packit |
15f964 |
EShellView *shell_view;
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
g_return_if_fail (E_IS_SHELL_WINDOW (shell_window));
|
|
Packit |
15f964 |
g_return_if_fail (view_name != NULL);
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
if (shell_window->priv->active_view == view_name)
|
|
Packit |
15f964 |
return;
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
shell_view = e_shell_window_get_shell_view (shell_window, view_name);
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
shell_window->priv->active_view = view_name;
|
|
Packit |
15f964 |
g_object_notify (G_OBJECT (shell_window), "active-view");
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
e_shell_view_update_actions (shell_view);
|
|
Packit |
15f964 |
}
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
void
|
|
Packit |
15f964 |
e_shell_window_update_icon (EShellWindow *shell_window)
|
|
Packit |
15f964 |
{
|
|
Packit |
15f964 |
EShellView *shell_view;
|
|
Packit |
15f964 |
GtkAction *action;
|
|
Packit |
15f964 |
const gchar *view_name;
|
|
Packit |
15f964 |
gchar *icon_name = NULL;
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
g_return_if_fail (E_IS_SHELL_WINDOW (shell_window));
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
view_name = e_shell_window_get_active_view (shell_window);
|
|
Packit |
15f964 |
shell_view = e_shell_window_get_shell_view (shell_window, view_name);
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
action = e_shell_view_get_action (shell_view);
|
|
Packit |
15f964 |
g_object_get (action, "icon-name", &icon_name, NULL);
|
|
Packit |
15f964 |
gtk_window_set_icon_name (GTK_WINDOW (shell_window), icon_name);
|
|
Packit |
15f964 |
g_free (icon_name);
|
|
Packit |
15f964 |
}
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
void
|
|
Packit |
15f964 |
e_shell_window_update_title (EShellWindow *shell_window)
|
|
Packit |
15f964 |
{
|
|
Packit |
15f964 |
EShellView *shell_view;
|
|
Packit |
15f964 |
const gchar *view_title;
|
|
Packit |
15f964 |
const gchar *view_name;
|
|
Packit |
15f964 |
gchar *window_title;
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
g_return_if_fail (E_IS_SHELL_WINDOW (shell_window));
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
view_name = e_shell_window_get_active_view (shell_window);
|
|
Packit |
15f964 |
shell_view = e_shell_window_get_shell_view (shell_window, view_name);
|
|
Packit |
15f964 |
view_title = e_shell_view_get_title (shell_view);
|
|
Packit |
15f964 |
|
|
Packit |
15f964 |
/* Translators: This is used for the main window title. */
|
|
Packit |
15f964 |
window_title = g_strdup_printf (_("%s — Evolution"), view_title);
|
|
Packit |
15f964 |
gtk_window_set_title (GTK_WINDOW (shell_window), window_title);
|
|
Packit |
15f964 |
g_free (window_title);
|
|
Packit |
15f964 |
}
|