diff --git a/ChangeLog b/ChangeLog index a152c36801..c6095b10f0 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2008-07-13 Martin Nordholts + + * app/display/gimpdisplayshell.c (gimp_display_shell_new): Get rid + of non-intelligent scrollbar stepper sensitivity code. + + * app/display/gimpdisplayshell-scroll.c + (gimp_display_shell_scroll_clamp_offsets): Add intelligent + scrollbar stepper sensitivity code. + 2008-07-13 Martin Nordholts * app/display/gimpdisplayshell-scroll.c diff --git a/app/display/gimpdisplayshell-scroll.c b/app/display/gimpdisplayshell-scroll.c index 4dba83a1fb..4683d366ed 100644 --- a/app/display/gimpdisplayshell-scroll.c +++ b/app/display/gimpdisplayshell-scroll.c @@ -166,6 +166,32 @@ gimp_display_shell_scroll_clamp_offsets (GimpDisplayShell *shell) max_offset_y = sh + overpan_amount - shell->disp_height; } + + /* Handle scrollbar stepper sensitiity */ + + gtk_range_set_lower_stepper_sensitivity (GTK_RANGE (shell->hsb), + min_offset_x < shell->offset_x ? + GTK_SENSITIVITY_ON : + GTK_SENSITIVITY_OFF); + + gtk_range_set_upper_stepper_sensitivity (GTK_RANGE (shell->hsb), + max_offset_x > shell->offset_x ? + GTK_SENSITIVITY_ON : + GTK_SENSITIVITY_OFF); + + gtk_range_set_lower_stepper_sensitivity (GTK_RANGE (shell->vsb), + min_offset_y < shell->offset_y ? + GTK_SENSITIVITY_ON : + GTK_SENSITIVITY_OFF); + + gtk_range_set_upper_stepper_sensitivity (GTK_RANGE (shell->vsb), + max_offset_y > shell->offset_y ? + GTK_SENSITIVITY_ON : + GTK_SENSITIVITY_OFF); + + + /* Clamp */ + shell->offset_x = CLAMP (shell->offset_x, min_offset_x, max_offset_x); shell->offset_y = CLAMP (shell->offset_y, min_offset_y, max_offset_y); } diff --git a/app/display/gimpdisplayshell.c b/app/display/gimpdisplayshell.c index 463123e737..3d2ef44ee6 100644 --- a/app/display/gimpdisplayshell.c +++ b/app/display/gimpdisplayshell.c @@ -936,9 +936,6 @@ gimp_display_shell_new (GimpDisplay *display, 1, 1, image_width)); shell->hsb = gtk_hscrollbar_new (shell->hsbdata); - gtk_range_set_lower_stepper_sensitivity (GTK_RANGE (shell->hsb), GTK_SENSITIVITY_ON); - gtk_range_set_upper_stepper_sensitivity (GTK_RANGE (shell->hsb), GTK_SENSITIVITY_ON); - GTK_WIDGET_UNSET_FLAGS (shell->hsb, GTK_CAN_FOCUS); /* the vertical scrollbar */ @@ -946,9 +943,6 @@ gimp_display_shell_new (GimpDisplay *display, 1, 1, image_height)); shell->vsb = gtk_vscrollbar_new (shell->vsbdata); - gtk_range_set_lower_stepper_sensitivity (GTK_RANGE (shell->vsb), GTK_SENSITIVITY_ON); - gtk_range_set_upper_stepper_sensitivity (GTK_RANGE (shell->vsb), GTK_SENSITIVITY_ON); - GTK_WIDGET_UNSET_FLAGS (shell->vsb, GTK_CAN_FOCUS); /* create the contents of the inner_table ********************************/