X-Git-Url: https://www.fi.muni.cz/~kas/git//home/kas/public_html/git/?a=blobdiff_plain;f=shell%2Fev-window.c;h=2a3783476e71fd723fb4284997cc5cbf854efa2d;hb=2c8f2e225edad376a726a8efe86923c20c6c2c01;hp=f412a260a72a962f91120d4c6bcc36c9385d35fd;hpb=54cf955817b8fc750e0b38799a75acc0e71116be;p=evince.git diff --git a/shell/ev-window.c b/shell/ev-window.c index f412a260..2a378347 100644 --- a/shell/ev-window.c +++ b/shell/ev-window.c @@ -458,11 +458,12 @@ update_sizing_buttons (EvWindow *window) } void -ev_window_open_page (EvWindow *ev_window, int page) +ev_window_open_page_label (EvWindow *ev_window, + const char *label) { if (ev_window->priv->page_cache) { - page = CLAMP (page, 0, ev_page_cache_get_n_pages (ev_window->priv->page_cache)); - ev_page_cache_set_current_page (ev_window->priv->page_cache, page); + ev_page_cache_set_page_label (ev_window->priv->page_cache, + label); } } @@ -1785,7 +1786,11 @@ ev_window_cmd_view_reload (GtkAction *action, EvWindow *ev_window) uri = g_strdup (ev_window->priv->uri); ev_window_open (ev_window, uri); - ev_window_open_page (ev_window, page); + + /* In case the number of pages in the document has changed. */ + page = CLAMP (page, 0, ev_page_cache_get_n_pages (ev_window->priv->page_cache)); + + ev_page_cache_set_current_page (ev_window->priv->page_cache, page); g_free (uri); } @@ -1839,7 +1844,7 @@ ev_window_cmd_escape (GtkAction *action, EvWindow *window) } static void -update_view_size (EvWindow *window) +update_view_size (EvView *view, EvWindow *window) { int width, height; GtkRequisition vsb_requisition; @@ -1870,14 +1875,6 @@ update_view_size (EvWindow *window) hsb_requisition.height + scrollbar_spacing); } -static void -size_allocate_cb (GtkWidget *scrolled_window, - GtkAllocation *allocation, - EvWindow *window) -{ - update_view_size (window); -} - static void ev_window_sizing_mode_changed_cb (EvView *view, GParamSpec *pspec, EvWindow *ev_window) @@ -1891,10 +1888,10 @@ ev_window_sizing_mode_changed_cb (EvView *view, GParamSpec *pspec, scrolled_window = ev_window->priv->scrolled_window; - g_signal_handlers_disconnect_by_func (scrolled_window, size_allocate_cb, ev_window); + g_signal_handlers_disconnect_by_func (ev_window->priv->view, update_view_size, ev_window); if (sizing_mode != EV_SIZING_FREE) - update_view_size (ev_window); + update_view_size (NULL, ev_window); switch (sizing_mode) { case EV_SIZING_BEST_FIT: @@ -1902,8 +1899,8 @@ ev_window_sizing_mode_changed_cb (EvView *view, GParamSpec *pspec, "hscrollbar-policy", GTK_POLICY_NEVER, "vscrollbar-policy", GTK_POLICY_AUTOMATIC, NULL); - g_signal_connect (scrolled_window, "size-allocate", - G_CALLBACK (size_allocate_cb), + g_signal_connect (ev_window->priv->view, "zoom_invalid", + G_CALLBACK (update_view_size), ev_window); break; case EV_SIZING_FIT_WIDTH: @@ -1911,8 +1908,8 @@ ev_window_sizing_mode_changed_cb (EvView *view, GParamSpec *pspec, "hscrollbar-policy", GTK_POLICY_NEVER, "vscrollbar-policy", GTK_POLICY_AUTOMATIC, NULL); - g_signal_connect (scrolled_window, "size-allocate", - G_CALLBACK (size_allocate_cb), + g_signal_connect (ev_window->priv->view, "zoom_invalid", + G_CALLBACK (update_view_size), ev_window); break; case EV_SIZING_FREE: @@ -2371,10 +2368,10 @@ static const GtkActionEntry entries[] = { G_CALLBACK (ev_window_cmd_view_reload) }, /* Go menu */ - { "GoPreviousPage", GTK_STOCK_GO_BACK, N_("_Previous Page"), "Page_Up", + { "GoPreviousPage", GTK_STOCK_GO_BACK, N_("_Previous Page"), "Page_Up", N_("Go to the previous page"), G_CALLBACK (ev_window_cmd_go_previous_page) }, - { "GoNextPage", GTK_STOCK_GO_FORWARD, N_("_Next Page"), "Page_Down", + { "GoNextPage", GTK_STOCK_GO_FORWARD, N_("_Next Page"), "Page_Down", N_("Go to the next page"), G_CALLBACK (ev_window_cmd_go_next_page) }, { "GoFirstPage", GTK_STOCK_GOTO_FIRST, N_("_First Page"), "Home", @@ -2404,6 +2401,12 @@ static const GtkActionEntry entries[] = { { "Slash", GTK_STOCK_FIND, NULL, "slash", N_("Find a word or phrase in the document"), G_CALLBACK (ev_window_cmd_edit_find) }, + { "PageDown", NULL, "", "Page_Down", + N_("Scroll one page forward"), + G_CALLBACK (ev_window_cmd_scroll_forward) }, + { "PageUp", NULL, "", "Page_Up", + N_("Scroll one page backward"), + G_CALLBACK (ev_window_cmd_scroll_backward) }, { "Space", NULL, "", "space", N_("Scroll one page forward"), G_CALLBACK (ev_window_cmd_scroll_forward) }, @@ -2651,6 +2654,8 @@ static void set_view_actions_sensitivity (EvWindow *window, gboolean sensitive) { if (window->priv->action_group) { + set_action_sensitive (window, "PageDown", sensitive); + set_action_sensitive (window, "PageUp", sensitive); set_action_sensitive (window, "Space", sensitive); set_action_sensitive (window, "ShiftSpace", sensitive); set_action_sensitive (window, "BackSpace", sensitive); @@ -2730,7 +2735,7 @@ ev_window_init (EvWindow *ev_window) if (!gtk_ui_manager_add_ui_from_file (ev_window->priv->ui_manager, DATADIR"/evince-ui.xml", &error)) { - g_message ("building menus failed: %s", error->message); + g_warning ("building menus failed: %s", error->message); g_error_free (error); } @@ -2919,8 +2924,8 @@ ev_window_init (EvWindow *ev_window) G_CALLBACK (find_bar_search_changed_cb), ev_window); - /* Give focus to the scrolled window */ - gtk_widget_grab_focus (ev_window->priv->scrolled_window); + /* Give focus to the document view */ + gtk_widget_grab_focus (ev_window->priv->view); /* Drag and Drop */ gtk_drag_dest_unset (GTK_WIDGET (ev_window));