]> www.fi.muni.cz Git - evince.git/commitdiff
Fix for the bug 319133 - Find entry should allow text scroll.
authorStanislav Slusny <slusnys@gmail.com>
Mon, 20 Feb 2006 23:49:38 +0000 (23:49 +0000)
committerNickolay V. Shmyrev <nshmyrev@src.gnome.org>
Mon, 20 Feb 2006 23:49:38 +0000 (23:49 +0000)
2006-02-21  Stanislav Slusny <slusnys@gmail.com>

* shell/eggfindbar.c: (egg_find_bar_class_init):
* shell/eggfindbar.h:
* shell/ev-view-accessible.c: (ev_view_accessible_idle_do_action):
* shell/ev-view-private.h:
* shell/ev-view.c: (add_scroll_binding_keypad), (ev_view_scroll),
(ev_view_class_init), (ev_sizing_mode_get_type),
(ev_scroll_type_get_type):
* shell/ev-view.h:
* shell/ev-window.c: (ev_window_cmd_scroll_forward),
(ev_window_cmd_scroll_backward), (find_bar_scroll),
(ev_window_init):

Fix for the bug 319133 - Find entry should allow text scroll.

ChangeLog
shell/eggfindbar.c
shell/eggfindbar.h
shell/ev-view-accessible.c
shell/ev-view-private.h
shell/ev-view.c
shell/ev-view.h
shell/ev-window.c

index 6cc99caa1352e59f36d3a2fd40335cab032b4692..dbc914b3a5ff630f1deab88df9511112467a059e 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,19 @@
+2006-02-21  Stanislav Slusny <slusnys@gmail.com>
+
+       * shell/eggfindbar.c: (egg_find_bar_class_init):
+       * shell/eggfindbar.h:
+       * shell/ev-view-accessible.c: (ev_view_accessible_idle_do_action):
+       * shell/ev-view-private.h:
+       * shell/ev-view.c: (add_scroll_binding_keypad), (ev_view_scroll),
+       (ev_view_class_init), (ev_sizing_mode_get_type),
+       (ev_scroll_type_get_type):
+       * shell/ev-view.h:
+       * shell/ev-window.c: (ev_window_cmd_scroll_forward),
+       (ev_window_cmd_scroll_backward), (find_bar_scroll),
+       (ev_window_init):
+       
+       Fix for the bug 319133 - Find entry should allow text scroll.
+
 2006-02-20  Antoine Dopffer <antoine.dopffer@free.fr>
 
        * shell/ev-view-private.h:
index 3a42ef6fcd838096d56aafe18e69e6d636ce8619..eb1f9a48628941a9abd8de4c8201395fc71a6f71 100644 (file)
@@ -80,6 +80,7 @@ enum
     NEXT,
     PREVIOUS,
     CLOSE,
+    SCROLL,
     LAST_SIGNAL
   };
 
@@ -134,6 +135,15 @@ egg_find_bar_class_init (EggFindBarClass *klass)
                  NULL, NULL,
                  g_cclosure_marshal_VOID__VOID,
                  G_TYPE_NONE, 0);
+  find_bar_signals[SCROLL] =
+    g_signal_new ("scroll",
+                 G_OBJECT_CLASS_TYPE (object_class),
+                 G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION,
+                  G_STRUCT_OFFSET (EggFindBarClass, scroll),
+                 NULL, NULL,
+                 g_cclosure_marshal_VOID__ENUM,
+                 G_TYPE_NONE, 1,
+                 GTK_TYPE_SCROLL_TYPE);
 
   /**
    * EggFindBar:search_string:
@@ -185,6 +195,14 @@ egg_find_bar_class_init (EggFindBarClass *klass)
 
   gtk_binding_entry_add_signal (binding_set, GDK_Escape, 0,
                                "close", 0);
+
+  gtk_binding_entry_add_signal (binding_set, GDK_Up, 0,
+                                "scroll", 1,
+                                GTK_TYPE_SCROLL_TYPE, GTK_SCROLL_STEP_BACKWARD);
+
+  gtk_binding_entry_add_signal (binding_set, GDK_Down, 0,
+                                "scroll", 1,
+                                GTK_TYPE_SCROLL_TYPE, GTK_SCROLL_STEP_FORWARD);
 }
 
 static void
index 49e2b9d34f0d8ad8bfdc07bd61cdbda420c78de3..402a08e474de5f983ffb6bf937e1971b15028995 100644 (file)
@@ -49,6 +49,7 @@ struct _EggFindBarClass
   void (* next)            (EggFindBar *find_bar);
   void (* previous) (EggFindBar *find_bar);
   void (* close)    (EggFindBar *find_bar);
+  void (* scroll)   (EggFindBar *find_bar, GtkScrollType* scroll);
 
   /* Padding for future expansion */
   void (*_gtk_reserved1) (void);
index e53ba35f80d694bf3cf7edd7d1d1320faf24337d..3d64bfceb03f400416c41305153a20ae6be9820d 100644 (file)
@@ -371,7 +371,8 @@ ev_view_accessible_idle_do_action (gpointer data)
        EvViewAccessiblePriv* priv = ev_view_accessible_get_priv (ATK_OBJECT (data));
        
        ev_view_scroll (EV_VIEW (GTK_ACCESSIBLE (data)->widget), 
-                       priv->idle_scroll);
+                       priv->idle_scroll,
+                       FALSE);
        priv->action_idle_handler = 0;
        return FALSE;
 }
index 8ea666006d1bc3e580472bf4270f6ed652c0e095..b5831e4fbe5413829cd0d55434919c7e79be6a40 100644 (file)
@@ -124,7 +124,7 @@ struct _EvViewClass {
                                           GtkAdjustment  *hadjustment,
                                           GtkAdjustment  *vadjustment);
        void    (*binding_activated)      (EvView         *view,
-                                          GtkScrollType   scroll,
+                                          EvScrollType   scroll,
                                           gboolean        horizontal);
        void    (*zoom_invalid)           (EvView         *view);
        void    (*external_link)          (EvView         *view,
index 11e6479a1dbfa81bcff26aa16f1a98dea12b1bf0..2e4752b75ccf8a9eeb26844389ce012ddfd9f745 100644 (file)
@@ -114,10 +114,7 @@ static void       ev_view_set_scroll_adjustments             (EvView
 static void       add_scroll_binding_keypad                  (GtkBindingSet      *binding_set,
                                                              guint               keyval,
                                                              GdkModifierType modifiers,
-                                                             GtkScrollType       scroll,
-                                                             gboolean            horizontal);
-static void       ev_view_binding_activated                  (EvView             *view,
-                                                             GtkScrollType       scroll,
+                                                             EvScrollType       scroll,
                                                              gboolean            horizontal);
 static void       ensure_rectangle_is_visible                (EvView             *view,
                                                              GdkRectangle       *rect);
@@ -547,32 +544,47 @@ static void
 add_scroll_binding_keypad (GtkBindingSet  *binding_set,
                           guint           keyval,
                           GdkModifierType modifiers,
-                          GtkScrollType   scroll,
+                          EvScrollType    scroll,
                           gboolean        horizontal)
 {
   guint keypad_keyval = keyval - GDK_Left + GDK_KP_Left;
 
   gtk_binding_entry_add_signal (binding_set, keyval, modifiers,
                                 "binding_activated", 2,
-                                GTK_TYPE_SCROLL_TYPE, scroll,
+                                EV_TYPE_SCROLL_TYPE, scroll,
                                G_TYPE_BOOLEAN, horizontal);
   gtk_binding_entry_add_signal (binding_set, keypad_keyval, modifiers,
                                 "binding_activated", 2,
-                                GTK_TYPE_SCROLL_TYPE, scroll,
+                                EV_TYPE_SCROLL_TYPE, scroll,
                                G_TYPE_BOOLEAN, horizontal);
 }
 
 void
 ev_view_scroll (EvView        *view,
-               EvScrollType   scroll)
+               EvScrollType   scroll,
+               gboolean horizontal)
 {
        GtkAdjustment *adjustment;
        double value, increment;
        gboolean first_page = FALSE;
        gboolean last_page = FALSE;
 
+       if (view->presentation) {
+               switch (scroll) {
+                       case EV_SCROLL_STEP_BACKWARD:
+                               ev_view_previous_page (view);
+                               break;
+                       case EV_SCROLL_STEP_FORWARD:
+                               ev_view_next_page (view);
+                               break;
+                       default:
+                               break;
+               }
+               return;
+       }
+
        /* Assign values for increment and vertical adjustment */
-       adjustment = view->vadjustment;
+       adjustment = horizontal ? view->hadjustment : view->vadjustment;
        increment = adjustment->page_size * 0.75;
        value = adjustment->value;
 
@@ -609,64 +621,27 @@ ev_view_scroll (EvView        *view,
                                value = MIN (value + increment, adjustment->upper - adjustment->page_size);
                        }
                        break;
-               default:
-                       break;
-       }
-
-       gtk_adjustment_set_value (adjustment, value);
-}
-
-static void
-ev_view_binding_activated (EvView *view,
-                          GtkScrollType scroll,
-                          gboolean horizontal)
-{
-       GtkAdjustment *adjustment;
-       double value;
-
-       if (view->presentation) {
-               switch (scroll) {
-                       case GTK_SCROLL_STEP_BACKWARD:
-                               ev_view_previous_page (view);
-                               break;
-                       case GTK_SCROLL_STEP_FORWARD:
-                               ev_view_next_page (view);
-                               break;
-                       default:
-                               break;
-               }
-               return;
-       }
-
-       if (horizontal) {
-               adjustment = view->hadjustment;
-       } else {
-               adjustment = view->vadjustment;
-       }
-
-       value = adjustment->value;
-
-       switch (scroll) {
-               case GTK_SCROLL_STEP_BACKWARD:
+               case EV_SCROLL_STEP_BACKWARD:
                        value -= adjustment->step_increment;
                        break;
-               case GTK_SCROLL_STEP_FORWARD:
+               case EV_SCROLL_STEP_FORWARD:
                        value += adjustment->step_increment;
                        break;
-               case GTK_SCROLL_STEP_DOWN:
-                       value -= adjustment->step_increment/10;
+               case EV_SCROLL_STEP_DOWN:
+                       value -= adjustment->step_increment / 10;
                        break;
-               case GTK_SCROLL_STEP_UP:
-                       value += adjustment->step_increment/10;
+               case EV_SCROLL_STEP_UP:
+                       value += adjustment->step_increment / 10;
                        break;
-               default:
+               default:
                        break;
        }
 
        value = CLAMP (value, adjustment->lower,
-                      adjustment->upper - adjustment->page_size);
+                      adjustment->upper - adjustment->page_size);      
 
        gtk_adjustment_set_value (adjustment, value);
+
 }
 
 #define MARGIN 5
@@ -2432,7 +2407,7 @@ ev_view_class_init (EvViewClass *class)
        gtk_object_class->destroy = ev_view_destroy;
 
        class->set_scroll_adjustments = ev_view_set_scroll_adjustments;
-       class->binding_activated = ev_view_binding_activated;
+       class->binding_activated = ev_view_scroll;
 
        widget_class->set_scroll_adjustments_signal =
            g_signal_new ("set-scroll-adjustments",
@@ -2562,14 +2537,14 @@ ev_view_class_init (EvViewClass *class)
 
        binding_set = gtk_binding_set_by_class (class);
 
-       add_scroll_binding_keypad (binding_set, GDK_Left,  0, GTK_SCROLL_STEP_BACKWARD, TRUE);
-       add_scroll_binding_keypad (binding_set, GDK_Right, 0, GTK_SCROLL_STEP_FORWARD,  TRUE);
-       add_scroll_binding_keypad (binding_set, GDK_Left,  GDK_MOD1_MASK, GTK_SCROLL_STEP_DOWN, TRUE);
-       add_scroll_binding_keypad (binding_set, GDK_Right, GDK_MOD1_MASK, GTK_SCROLL_STEP_UP,  TRUE);
-       add_scroll_binding_keypad (binding_set, GDK_Up,    0, GTK_SCROLL_STEP_BACKWARD, FALSE);
-       add_scroll_binding_keypad (binding_set, GDK_Down,  0, GTK_SCROLL_STEP_FORWARD,  FALSE);
-       add_scroll_binding_keypad (binding_set, GDK_Up,    GDK_MOD1_MASK, GTK_SCROLL_STEP_DOWN, FALSE);
-       add_scroll_binding_keypad (binding_set, GDK_Down,  GDK_MOD1_MASK, GTK_SCROLL_STEP_UP,  FALSE);
+       add_scroll_binding_keypad (binding_set, GDK_Left,  0, EV_SCROLL_STEP_BACKWARD, TRUE);
+       add_scroll_binding_keypad (binding_set, GDK_Right, 0, EV_SCROLL_STEP_FORWARD,  TRUE);
+       add_scroll_binding_keypad (binding_set, GDK_Left,  GDK_MOD1_MASK, EV_SCROLL_STEP_DOWN, TRUE);
+       add_scroll_binding_keypad (binding_set, GDK_Right, GDK_MOD1_MASK, EV_SCROLL_STEP_UP,  TRUE);
+       add_scroll_binding_keypad (binding_set, GDK_Up,    0, EV_SCROLL_STEP_BACKWARD, FALSE);
+       add_scroll_binding_keypad (binding_set, GDK_Down,  0, EV_SCROLL_STEP_FORWARD,  FALSE);
+       add_scroll_binding_keypad (binding_set, GDK_Up,    GDK_MOD1_MASK, EV_SCROLL_STEP_DOWN, FALSE);
+       add_scroll_binding_keypad (binding_set, GDK_Down,  GDK_MOD1_MASK, EV_SCROLL_STEP_UP,  FALSE);
 }
 
 static void
@@ -4021,3 +3996,22 @@ ev_sizing_mode_get_type (void)
   }
   return etype;
 }
+
+GType
+ev_scroll_type_get_type (void)
+{
+  static GType etype = 0;
+  if (etype == 0) {
+    static const GEnumValue values[] = {
+      { EV_SCROLL_PAGE_FORWARD, "EV_SCROLL_PAGE_FORWARD", "scroll-page-forward" },
+      { EV_SCROLL_PAGE_BACKWARD, "EV_SCROLL_PAGE_BACKWARD", "scroll-page-backward" },
+      { EV_SCROLL_STEP_FORWARD, "EV_SCROLL_STEP_FORWARD", "scroll-step-forward" },
+      { EV_SCROLL_STEP_FORWARD, "EV_SCROLL_STEP_FORWARD", "scroll-step-forward" },
+      { EV_SCROLL_STEP_UP, "EV_SCROLL_STEP_UP", "scroll-step-up" },
+      { EV_SCROLL_STEP_DOWN, "EV_SCROLL_STEP_DOWN", "scroll-step-down" },
+      { 0, NULL, NULL }
+    };
+    etype = g_enum_register_static ("EvScrollType", values);
+  }
+  return etype;
+}
index 0c0a86287cd1cae6d4bc0629d0955e44c21cb432..90f5031efdda4739740b49b2cab775584ad07f07 100644 (file)
@@ -35,6 +35,9 @@ G_BEGIN_DECLS
 #define EV_TYPE_SIZING_MODE     (ev_sizing_mode_get_type())
 #define EV_SIZING_MODE_CLASS    (g_type_class_peek (EV_TYPE_SIZING_MODE))
 
+#define EV_TYPE_SCROLL_TYPE     (ev_scroll_type_get_type())
+#define EV_SCROLL_TYPE_CLASS    (g_type_class_peek (EV_TYPE_SCROLL_TYPE))
+
 typedef struct _EvView       EvView;
 typedef struct _EvViewClass  EvViewClass;
 
@@ -52,11 +55,17 @@ typedef enum {
 
 typedef enum {
        EV_SCROLL_PAGE_FORWARD,
-       EV_SCROLL_PAGE_BACKWARD
+       EV_SCROLL_PAGE_BACKWARD,
+       EV_SCROLL_STEP_BACKWARD,
+       EV_SCROLL_STEP_FORWARD,
+       EV_SCROLL_STEP_DOWN,
+       EV_SCROLL_STEP_UP,
 } EvScrollType;
 
 GType          ev_view_get_type          (void) G_GNUC_CONST;
 GType           ev_sizing_mode_get_type   (void) G_GNUC_CONST;
+GType           ev_scroll_type_get_type   (void) G_GNUC_CONST;
+
 GtkWidget*     ev_view_new               (void);
 void           ev_view_set_document      (EvView         *view,
                                           EvDocument     *document);
@@ -124,7 +133,8 @@ void           ev_view_show_cursor        (EvView         *view);
 
 /* Navigation */
 void          ev_view_scroll             (EvView         *view,
-                                          EvScrollType    scroll);
+                                          EvScrollType    scroll,
+                                          gboolean        horizontal);
 void          ev_view_goto_link          (EvView         *view,
                                           EvLink         *link);
 gboolean       ev_view_next_page         (EvView         *view);
index 0a8f6f285a7a8969f3947ffb2f74f40fd9c58d95..61e7b1f6ae390e8d5ee1434b75c59c84126c1c46 100644 (file)
@@ -482,13 +482,13 @@ ev_window_cmd_focus_page_selector (GtkAction *act, EvWindow *window)
 static void
 ev_window_cmd_scroll_forward (GtkAction *action, EvWindow *window)
 {
-       ev_view_scroll (EV_VIEW (window->priv->view), EV_SCROLL_PAGE_FORWARD);
+       ev_view_scroll (EV_VIEW (window->priv->view), EV_SCROLL_PAGE_FORWARD, FALSE);
 }
 
 static void
 ev_window_cmd_scroll_backward (GtkAction *action, EvWindow *window)
 {
-       ev_view_scroll (EV_VIEW (window->priv->view), EV_SCROLL_PAGE_BACKWARD);
+       ev_view_scroll (EV_VIEW (window->priv->view), EV_SCROLL_PAGE_BACKWARD, FALSE);
 }
 
 static void
@@ -2644,6 +2644,12 @@ find_bar_search_changed_cb (EggFindBar *find_bar,
        }
 }
 
+static void
+find_bar_scroll(EggFindBar *find_bar, GtkScrollType scroll, EvWindow* ev_window)
+{
+       ev_view_scroll(EV_VIEW(ev_window->priv->view), scroll, FALSE);
+}
+
 static void
 zoom_control_changed_cb (EphyZoomAction *action,
                         float           zoom,
@@ -3521,6 +3527,10 @@ ev_window_init (EvWindow *ev_window)
                          "notify::visible",
                          G_CALLBACK (find_bar_search_changed_cb),
                          ev_window);
+       g_signal_connect (ev_window->priv->find_bar,
+                         "scroll",
+                         G_CALLBACK (find_bar_scroll),
+                         ev_window);
 
        /* Popups */
        ev_window->priv->popup = gtk_ui_manager_get_widget (ev_window->priv->ui_manager,