diff options
author | Nickolay V. Shmyrev <nshmyrev@src.gnome.org> | 2005-06-16 08:34:13 (GMT) |
---|---|---|
committer | Nickolay V. Shmyrev <nshmyrev@src.gnome.org> | 2005-06-16 08:34:13 (GMT) |
commit | 4f1722b0523879cd73ee936d483a735e163a6b54 (patch) | |
tree | 49da280489ad7a3ad39de406de5f4e4cd36b7440 /shell/ev-window.c | |
parent | bd5740c79b6f56d26d6b8f105e8bd63b3961bd3c (diff) |
Autoraise toolbar on GoToPage action and fix keyboard accelerators in sidebar
thumbnailer page
Diffstat (limited to 'shell/ev-window.c')
-rw-r--r-- | shell/ev-window.c | 54 |
1 files changed, 40 insertions, 14 deletions
diff --git a/shell/ev-window.c b/shell/ev-window.c index 1bb82ba..e9e1c4e 100644 --- a/shell/ev-window.c +++ b/shell/ev-window.c @@ -46,6 +46,7 @@ #include "ev-job-queue.h" #include "ev-jobs.h" #include "ev-statusbar.h" +#include "ev-sidebar-page.h" #include "eggfindbar.h" #include "egg-recent-view-gtk.h" #include "egg-recent-view.h" @@ -80,6 +81,7 @@ typedef enum { EV_CHROME_SIDEBAR = 1 << 2, EV_CHROME_FINDBAR = 1 << 3, EV_CHROME_STATUSBAR = 1 << 4, + EV_CHROME_RAISE_TOOLBAR = 1 << 5, EV_CHROME_NORMAL = EV_CHROME_MENUBAR | EV_CHROME_TOOLBAR | EV_CHROME_SIDEBAR | EV_CHROME_STATUSBAR } EvChrome; @@ -310,9 +312,11 @@ update_chrome_visibility (EvWindow *window) fullscreen_mode = fullscreen || presentation; menubar = (priv->chrome & EV_CHROME_MENUBAR) != 0 && !fullscreen_mode; - toolbar = (priv->chrome & EV_CHROME_TOOLBAR) != 0 && !fullscreen_mode; + toolbar = ((priv->chrome & EV_CHROME_TOOLBAR) != 0 || + (priv->chrome & EV_CHROME_RAISE_TOOLBAR) != 0) && !fullscreen_mode; sidebar = (priv->chrome & EV_CHROME_SIDEBAR) != 0 && !fullscreen_mode; - fullscreen_toolbar = (priv->chrome & EV_CHROME_TOOLBAR) != 0; + fullscreen_toolbar = ((priv->chrome & EV_CHROME_TOOLBAR) != 0 || + (priv->chrome & EV_CHROME_RAISE_TOOLBAR) != 0); statusbar = (priv->chrome & EV_CHROME_STATUSBAR) != 0 && !fullscreen_mode; findbar = (priv->chrome & EV_CHROME_FINDBAR) != 0; @@ -361,6 +365,9 @@ ev_window_cmd_focus_page_selector (GtkAction *act, EvWindow *window) { GtkAction *action; + update_chrome_flag (window, EV_CHROME_RAISE_TOOLBAR, NULL, TRUE); + set_action_sensitive (window, "ViewToolbar", FALSE); + action = gtk_action_group_get_action (window->priv->action_group, PAGE_SELECTOR_ACTION); ev_page_action_grab_focus (EV_PAGE_ACTION (action)); @@ -1343,7 +1350,8 @@ ev_window_update_fullscreen_popup (EvWindow *window) g_return_if_fail (popup != NULL); - toolbar = (window->priv->chrome & EV_CHROME_TOOLBAR) != 0; + toolbar = (window->priv->chrome & EV_CHROME_TOOLBAR) != 0 || + (window->priv->chrome & EV_CHROME_RAISE_TOOLBAR) != 0; popup_width = popup->requisition.width; popup_height = popup->requisition.height; @@ -2843,6 +2851,9 @@ set_view_actions_sensitivity (EvWindow *window, gboolean sensitive) static void view_actions_focus_in_cb (GtkWidget *widget, GdkEventFocus *event, EvWindow *window) { + update_chrome_flag (window, EV_CHROME_RAISE_TOOLBAR, NULL, FALSE); + set_action_sensitive (window, "ViewToolbar", TRUE); + set_view_actions_sensitivity (window, TRUE); } @@ -2853,14 +2864,22 @@ view_actions_focus_out_cb (GtkWidget *widget, GdkEventFocus *event, EvWindow *wi } static void -enable_view_actions_for_widget (EvWindow *window, GtkWidget *widget) +sidebar_page_main_widget_update_cb (GObject *ev_sidebar_page, + GParamSpec *pspec, + EvWindow *ev_window) { + GtkWidget *widget; + + g_object_get (ev_sidebar_page, "main_widget", &widget, NULL); + + if (widget != NULL) { g_signal_connect_object (widget, "focus_in_event", G_CALLBACK (view_actions_focus_in_cb), - window, 0); + ev_window, 0); g_signal_connect_object (widget, "focus_out_event", G_CALLBACK (view_actions_focus_out_cb), - window, 0); + ev_window, 0); + } } static void @@ -2869,7 +2888,7 @@ ev_window_init (EvWindow *ev_window) GtkActionGroup *action_group; GtkAccelGroup *accel_group; GError *error = NULL; - GtkWidget *sidebar_widget, *toolbar_dock, *tree_view; + GtkWidget *sidebar_widget, *toolbar_dock; GConfValue *value; GConfClient *client; int sidebar_size; @@ -2995,21 +3014,22 @@ ev_window_init (EvWindow *ev_window) "notify::model", G_CALLBACK (sidebar_widget_model_set), ev_window); - tree_view = ev_sidebar_links_get_treeview - (EV_SIDEBAR_LINKS (sidebar_widget)); - enable_view_actions_for_widget (ev_window, tree_view); + sidebar_page_main_widget_update_cb (G_OBJECT (sidebar_widget), NULL, ev_window); gtk_widget_show (sidebar_widget); ev_sidebar_add_page (EV_SIDEBAR (ev_window->priv->sidebar), sidebar_widget); sidebar_widget = ev_sidebar_thumbnails_new (); - tree_view = ev_sidebar_thumbnails_get_treeview - (EV_SIDEBAR_THUMBNAILS (sidebar_widget)); - //enable_view_actions_for_widget (ev_window, tree_view); + g_signal_connect (sidebar_widget, + "notify::main-widget", + G_CALLBACK (sidebar_page_main_widget_update_cb), + ev_window); + sidebar_page_main_widget_update_cb (G_OBJECT (sidebar_widget), NULL, ev_window); gtk_widget_show (sidebar_widget); ev_sidebar_add_page (EV_SIDEBAR (ev_window->priv->sidebar), sidebar_widget); + ev_window->priv->scrolled_window = GTK_WIDGET (g_object_new (GTK_TYPE_SCROLLED_WINDOW, "shadow-type", GTK_SHADOW_IN, @@ -3025,10 +3045,16 @@ ev_window_init (EvWindow *ev_window) "unlock", G_CALLBACK (ev_window_popup_password_dialog), ev_window); - enable_view_actions_for_widget (ev_window, ev_window->priv->view); + g_signal_connect_object (ev_window->priv->view, "focus_in_event", + G_CALLBACK (view_actions_focus_in_cb), + ev_window, 0); + g_signal_connect_object (ev_window->priv->view, "focus_out_event", + G_CALLBACK (view_actions_focus_out_cb), + ev_window, 0); gtk_widget_show (ev_window->priv->view); gtk_widget_show (ev_window->priv->password_view); + /* We own a ref on these widgets, as we can swap them in and out */ g_object_ref (ev_window->priv->view); //g_object_ref (ev_window->priv->page_view); |