From bde1bc6bca4c5ed63a193f7dc50252e550a0fb40 Mon Sep 17 00:00:00 2001 From: Srinivasa Ragavan Date: Tue, 11 May 2010 18:47:09 +0530 Subject: Handle adding 'X' close button on the menu bar. Restore adding the same for adding in calendar since it doesn't have a toolbar. --- modules/calendar/e-cal-shell-view-actions.c | 26 +++++++++++++++++++++++++ shell/e-shell-view.c | 3 ++- shell/e-shell-window-actions.c | 8 ++++++++ shell/e-shell-window-private.h | 1 + shell/e-shell-window.c | 30 +++++++++++++++++++++++++++++ shell/e-shell-window.h | 1 + ui/evolution-calendars.ui | 7 ++++++- ui/evolution-shell.ui | 2 ++ 8 files changed, 76 insertions(+), 2 deletions(-) diff --git a/modules/calendar/e-cal-shell-view-actions.c b/modules/calendar/e-cal-shell-view-actions.c index 1330ac7003..83f6101d0a 100644 --- a/modules/calendar/e-cal-shell-view-actions.c +++ b/modules/calendar/e-cal-shell-view-actions.c @@ -1196,6 +1196,25 @@ action_event_schedule_cb (GtkAction *action, edit_event_as (cal_shell_view, TRUE); } + static void +quit_calendar_cb (GtkAction *action, + ECalShellView *cal_shell_view) +{ + EShellView *shell_view; + EShellWindow *shell_window; + GdkEvent *event; + + shell_view = E_SHELL_VIEW (cal_shell_view); + shell_window = e_shell_view_get_shell_window (shell_view); + + /* Synthesize a delete_event on this window. */ + event = gdk_event_new (GDK_DELETE); + event->any.window = g_object_ref (((GtkWidget *) shell_window)->window); + event->any.send_event = TRUE; + gtk_main_do_event (event); + gdk_event_free (event); +} + static void action_event_schedule_appointment_cb (GtkAction *action, ECalShellView *cal_shell_view) @@ -1428,6 +1447,13 @@ static GtkActionEntry calendar_entries[] = { N_("Converts a meeting to an appointment"), G_CALLBACK (action_event_schedule_appointment_cb) }, + { "quit-calendar", + GTK_STOCK_CLOSE, + N_("Quit"), + NULL, + NULL, /* XXX Add a tooltip! */ + G_CALLBACK (quit_calendar_cb) }, + /*** Menus ***/ { "calendar-actions-menu", diff --git a/shell/e-shell-view.c b/shell/e-shell-view.c index 77215e73a2..be099b9869 100644 --- a/shell/e-shell-view.c +++ b/shell/e-shell-view.c @@ -670,7 +670,8 @@ shell_view_construct_searchbar (EShellView *shell_view) item = gtk_tool_button_new (image, gtk_action_get_label (action)); gtk_widget_set_name (GTK_WIDGET (item), "MeeGoCloseButton"); gtk_activatable_set_related_action (GTK_ACTIVATABLE (item), action); - gtk_toolbar_insert (GTK_TOOLBAR (main_toolbar), item, -1); + gtk_box_pack_start ((GtkBox *)e_shell_window_get_menu_bar_box(shell_window), (GtkWidget *)item, FALSE, FALSE, 0); + gtk_widget_show_all((GtkWidget *)item); } return widget; diff --git a/shell/e-shell-window-actions.c b/shell/e-shell-window-actions.c index 06fce0fe69..65c6acff7a 100644 --- a/shell/e-shell-window-actions.c +++ b/shell/e-shell-window-actions.c @@ -1453,6 +1453,14 @@ static GtkActionEntry shell_entries[] = { N_("Close this window"), G_CALLBACK (action_close_cb) }, + { "close-window-menu", + GTK_STOCK_CLOSE, + NULL, + "w", + N_("Close this window"), + G_CALLBACK (action_close_cb) }, + + { "close-window", GTK_STOCK_CLOSE, N_("_Close Window"), diff --git a/shell/e-shell-window-private.h b/shell/e-shell-window-private.h index 6050ce135d..02a688503e 100644 --- a/shell/e-shell-window-private.h +++ b/shell/e-shell-window-private.h @@ -93,6 +93,7 @@ struct _EShellWindowPrivate { GtkWidget *status_notebook; /* Miscellaneous */ + GtkWidget *menubar_box; /* Shell signal handlers. */ GArray *signal_handler_ids; diff --git a/shell/e-shell-window.c b/shell/e-shell-window.c index 0460823b3f..7970f5b015 100644 --- a/shell/e-shell-window.c +++ b/shell/e-shell-window.c @@ -344,6 +344,23 @@ shell_window_construct_menubar (EShellWindow *shell_window) shell_window, "/main-menu"); gtk_widget_show (main_menu); + if (e_shell_get_small_screen_mode (shell_window->priv->shell)) { + GtkWidget *parent, *child; + + parent = gtk_widget_get_parent (main_menu); + g_object_ref (parent); + gtk_container_remove ((GtkContainer *)parent, main_menu); + child = gtk_hbox_new (FALSE, 0); + gtk_box_pack_start ((GtkBox *)child, main_menu, TRUE, TRUE, 0); + gtk_widget_show (child); + gtk_container_add ((GtkContainer *)parent, child); + shell_window->priv->menubar_box = child; + + e_mutual_binding_new (main_menu, "visible", + child, "visible"); + main_menu = child; + } + g_signal_connect ( shell_window, "notify::active-view", G_CALLBACK (shell_window_menubar_update_new_menu), NULL); @@ -351,6 +368,12 @@ shell_window_construct_menubar (EShellWindow *shell_window) return main_menu; } +GtkWidget * +e_shell_window_get_menu_bar_box (EShellWindow *shell_window) +{ + return shell_window->priv->menubar_box; +} + static GtkWidget * shell_window_construct_toolbar (EShellWindow *shell_window) { @@ -411,6 +434,13 @@ shell_window_construct_toolbar (EShellWindow *shell_window) if (e_shell_get_meego_mode (shell_window->priv->shell)) gtk_widget_set_name (GTK_WIDGET (toolbar), "MeeGoToolbar"); + toolbar = e_shell_window_get_managed_widget ( + shell_window, "/close-toolbar"); + gtk_toolbar_set_show_arrow (GTK_TOOLBAR (toolbar), FALSE); + gtk_box_pack_start (GTK_BOX (box), toolbar, FALSE, FALSE, 0); + if (e_shell_get_meego_mode (shell_window->priv->shell)) + gtk_widget_set_name (GTK_WIDGET (toolbar), "MeeGoToolbar"); + return box; } diff --git a/shell/e-shell-window.h b/shell/e-shell-window.h index 58401b2dba..9baa3cf8e9 100644 --- a/shell/e-shell-window.h +++ b/shell/e-shell-window.h @@ -146,6 +146,7 @@ void e_shell_window_register_new_source_actions const gchar *backend_name, GtkActionEntry *entries, guint n_entries); +GtkWidget * e_shell_window_get_menu_bar_box (EShellWindow *shell_window); G_END_DECLS diff --git a/ui/evolution-calendars.ui b/ui/evolution-calendars.ui index cbffb867b0..8bd41d4bb1 100644 --- a/ui/evolution-calendars.ui +++ b/ui/evolution-calendars.ui @@ -59,7 +59,12 @@ #endif - + + +#if EXPRESS + + +#endif diff --git a/ui/evolution-shell.ui b/ui/evolution-shell.ui index 5e249daa2e..c16189932e 100644 --- a/ui/evolution-shell.ui +++ b/ui/evolution-shell.ui @@ -94,4 +94,6 @@ + + -- cgit v1.2.3