X-Git-Url: https://www.fi.muni.cz/~kas/git//home/kas/public_html/git/?a=blobdiff_plain;f=shell%2Fev-window.c;h=c973f42810d1a61ce0f4eb46758f9e0f3c7036eb;hb=34dc864999174a8416c4f2b772de897c581705e4;hp=32d52fdaa67d73ceafe4ca06379b44ed8c54c211;hpb=bc50ee241e2267cc7cc34b3598b047f335995662;p=evince.git diff --git a/shell/ev-window.c b/shell/ev-window.c index 32d52fda..c973f428 100644 --- a/shell/ev-window.c +++ b/shell/ev-window.c @@ -316,7 +316,7 @@ ev_window_setup_action_sensitivity (EvWindow *ev_window) has_properties = FALSE; } - if (has_document && ev_document_can_get_text (document)) { + if (has_document && EV_IS_SELECTION (document)) { can_get_text = TRUE; } @@ -537,8 +537,6 @@ update_chrome_flag (EvWindow *window, EvChrome flag, gboolean active) } else { priv->chrome &= ~flag; } - - update_chrome_visibility (window); } static void @@ -856,6 +854,7 @@ setup_sidebar_from_metadata (EvWindow *window, EvDocument *document) if (ev_metadata_manager_get (uri, "sidebar_visibility", &sidebar_visibility, FALSE)) { update_chrome_flag (window, EV_CHROME_SIDEBAR, g_value_get_boolean (&sidebar_visibility)); g_value_unset (&sidebar_visibility); + update_chrome_visibility (window); } } @@ -2332,7 +2331,6 @@ ev_window_print_dialog_response_cb (GtkDialog *dialog, gdouble width; gdouble height; GtkPrintPages print_pages; - EvFileExporterOrientation orientation = EV_FILE_EXPORTER_PORTRAIT; const gchar *file_format; if (response == GTK_RESPONSE_CANCEL) { @@ -2408,21 +2406,10 @@ ev_window_print_dialog_response_cb (GtkDialog *dialog, scale = gtk_print_settings_get_scale (window->priv->print_settings) * 0.01; width = gtk_page_setup_get_paper_width (window->priv->print_page_setup, - GTK_UNIT_PIXEL); + GTK_UNIT_POINTS); height = gtk_page_setup_get_paper_height (window->priv->print_page_setup, - GTK_UNIT_PIXEL); + GTK_UNIT_POINTS); - switch (gtk_page_setup_get_orientation (window->priv->print_page_setup)) { - case GTK_PAGE_ORIENTATION_PORTRAIT: - case GTK_PAGE_ORIENTATION_REVERSE_PORTRAIT: - orientation = EV_FILE_EXPORTER_PORTRAIT; - break; - case GTK_PAGE_ORIENTATION_LANDSCAPE: - case GTK_PAGE_ORIENTATION_REVERSE_LANDSCAPE: - orientation = EV_FILE_EXPORTER_LANDSCAPE; - break; - } - if (scale != 1.0) { width *= scale; height *= scale; @@ -2437,7 +2424,6 @@ ev_window_print_dialog_response_cb (GtkDialog *dialog, window->priv->print_job = ev_job_print_new (window->priv->document, file_format ? file_format : "ps", width, height, - orientation, ranges, n_ranges, page_set, pages_per_sheet, @@ -2691,6 +2677,7 @@ ev_window_cmd_focus_page_selector (GtkAction *act, EvWindow *window) update_chrome_flag (window, EV_CHROME_RAISE_TOOLBAR, TRUE); ev_window_set_action_sensitive (window, "ViewToolbar", FALSE); + update_chrome_visibility (window); action = gtk_action_group_get_action (window->priv->action_group, PAGE_SELECTOR_ACTION); @@ -2781,6 +2768,7 @@ ev_window_cmd_edit_find (GtkAction *action, EvWindow *ev_window) } update_chrome_flag (ev_window, EV_CHROME_FINDBAR, TRUE); + update_chrome_visibility (ev_window); gtk_widget_grab_focus (ev_window->priv->find_bar); } @@ -2789,6 +2777,9 @@ ev_window_cmd_edit_find_next (GtkAction *action, EvWindow *ev_window) { g_return_if_fail (EV_IS_WINDOW (ev_window)); + update_chrome_flag (ev_window, EV_CHROME_FINDBAR, TRUE); + update_chrome_visibility (ev_window); + gtk_widget_grab_focus (ev_window->priv->find_bar); ev_view_find_next (EV_VIEW (ev_window->priv->view)); } @@ -2797,6 +2788,9 @@ ev_window_cmd_edit_find_previous (GtkAction *action, EvWindow *ev_window) { g_return_if_fail (EV_IS_WINDOW (ev_window)); + update_chrome_flag (ev_window, EV_CHROME_FINDBAR, TRUE); + update_chrome_visibility (ev_window); + gtk_widget_grab_focus (ev_window->priv->find_bar); ev_view_find_previous (EV_VIEW (ev_window->priv->view)); } @@ -3520,6 +3514,7 @@ ev_window_cmd_escape (GtkAction *action, EvWindow *window) widget = gtk_window_get_focus (GTK_WINDOW (window)); if (widget && gtk_widget_get_ancestor (widget, EGG_TYPE_FIND_BAR)) { update_chrome_flag (window, EV_CHROME_FINDBAR, FALSE); + update_chrome_visibility (window); gtk_widget_grab_focus (window->priv->view); } else { gboolean fullscreen; @@ -3798,6 +3793,7 @@ ev_window_view_toolbar_cb (GtkAction *action, EvWindow *ev_window) active = gtk_toggle_action_get_active (GTK_TOGGLE_ACTION (action)); update_chrome_flag (ev_window, EV_CHROME_TOOLBAR, active); + update_chrome_visibility (ev_window); ev_metadata_manager_set_boolean (NULL, "show_toolbar", active); } @@ -3809,6 +3805,7 @@ ev_window_view_sidebar_cb (GtkAction *action, EvWindow *ev_window) update_chrome_flag (ev_window, EV_CHROME_SIDEBAR, gtk_toggle_action_get_active (GTK_TOGGLE_ACTION (action))); + update_chrome_visibility (ev_window); } static void @@ -4011,6 +4008,7 @@ find_bar_close_cb (EggFindBar *find_bar, EvWindow *ev_window) { update_chrome_flag (ev_window, EV_CHROME_FINDBAR, FALSE); + update_chrome_visibility (ev_window); } static void @@ -4019,24 +4017,18 @@ find_bar_search_changed_cb (EggFindBar *find_bar, EvWindow *ev_window) { gboolean case_sensitive; - gboolean visible; const char *search_string; - /* Either the string or case sensitivity could have changed, - * we connect this callback to both. We also connect it - * to ::visible so when the find bar is hidden, we should - * pretend the search string is NULL/"" - */ + /* Either the string or case sensitivity could have changed. */ case_sensitive = egg_find_bar_get_case_sensitive (find_bar); - visible = GTK_WIDGET_VISIBLE (find_bar); search_string = egg_find_bar_get_search_string (find_bar); ev_view_search_changed (EV_VIEW(ev_window->priv->view)); if (ev_window->priv->document && EV_IS_DOCUMENT_FIND (ev_window->priv->document)) { - if (visible && search_string && search_string[0]) { + if (search_string && search_string[0]) { ev_document_doc_mutex_lock (); ev_document_find_begin (EV_DOCUMENT_FIND (ev_window->priv->document), ev_page_cache_get_current_page (ev_window->priv->page_cache), @@ -4056,6 +4048,26 @@ find_bar_search_changed_cb (EggFindBar *find_bar, } } +static void +find_bar_visibility_changed_cb (EggFindBar *find_bar, + GParamSpec *param, + EvWindow *ev_window) +{ + gboolean visible; + + visible = GTK_WIDGET_VISIBLE (find_bar); + + if (ev_window->priv->document && + EV_IS_DOCUMENT_FIND (ev_window->priv->document)) { + ev_view_set_highlight_search (EV_VIEW(ev_window->priv->view), visible); + ev_view_search_changed (EV_VIEW(ev_window->priv->view)); + ev_window_update_actions (ev_window); + + if (!visible) + egg_find_bar_set_status_text (EGG_FIND_BAR (ev_window->priv->find_bar), NULL); + } +} + static void find_bar_scroll(EggFindBar *find_bar, GtkScrollType scroll, EvWindow* ev_window) { @@ -4616,6 +4628,8 @@ view_actions_focus_in_cb (GtkWidget *widget, GdkEventFocus *event, EvWindow *win ev_window_set_view_accels_sensitivity (window, TRUE); + update_chrome_visibility (window); + return FALSE; } @@ -5419,7 +5433,7 @@ ev_window_init (EvWindow *ev_window) ev_window); g_signal_connect (ev_window->priv->find_bar, "notify::visible", - G_CALLBACK (find_bar_search_changed_cb), + G_CALLBACK (find_bar_visibility_changed_cb), ev_window); g_signal_connect (ev_window->priv->find_bar, "scroll",