]> www.fi.muni.cz Git - evince.git/blobdiff - shell/ev-window.c
Use always drag mouse cursor during a drag operation. Fixes bug #470564.
[evince.git] / shell / ev-window.c
index 1032d5186cc25a7107a8bbd9c9b224ed1835e7ae..af2fb2a35d2264a877c7e2c04ef10d0c6b79beb1 100644 (file)
@@ -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;
        }
        
@@ -2246,8 +2246,10 @@ ev_window_print_send (EvWindow    *window,
                gtk_print_settings_set_collate (settings, FALSE);
        if (capabilities & EV_FILE_EXPORTER_CAN_REVERSE)
                gtk_print_settings_set_reverse (settings, FALSE);
-       if (capabilities & EV_FILE_EXPORTER_CAN_NUMBER_UP)
+       if (capabilities & EV_FILE_EXPORTER_CAN_NUMBER_UP) {
                gtk_print_settings_set_number_up (settings, 1);
+               gtk_print_settings_set_int (settings, "cups-"GTK_PRINT_SETTINGS_NUMBER_UP, 1);
+       }
        
        if (window->priv->print_preview) {
                gchar *uri;
@@ -2408,7 +2410,7 @@ ev_window_print_dialog_response_cb (GtkDialog *dialog,
                                                GTK_UNIT_PIXEL);
        height = gtk_page_setup_get_paper_height (window->priv->print_page_setup,
                                                  GTK_UNIT_PIXEL);
-
+       
        if (scale != 1.0) {
                width *= scale;
                height *= scale;
@@ -2774,6 +2776,8 @@ 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);
+       gtk_widget_grab_focus (ev_window->priv->find_bar);
        ev_view_find_next (EV_VIEW (ev_window->priv->view));
 }
 
@@ -2782,6 +2786,8 @@ 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);
+       gtk_widget_grab_focus (ev_window->priv->find_bar);
        ev_view_find_previous (EV_VIEW (ev_window->priv->view));
 }
 
@@ -4004,24 +4010,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),
@@ -4041,6 +4041,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)
 {
@@ -5404,7 +5424,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",