diff options
Diffstat (limited to 'shell/ev-view.c')
-rw-r--r-- | shell/ev-view.c | 122 |
1 files changed, 58 insertions, 64 deletions
diff --git a/shell/ev-view.c b/shell/ev-view.c index 11e6479..2e4752b 100644 --- a/shell/ev-view.c +++ b/shell/ev-view.c @@ -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; +} |