From 5b352c0a63914fc9a4596e0127103f4027b8125e Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Tue, 2 Jan 2007 07:07:09 +0000 Subject: [PATCH] Only handle key bindings for scrolling if the scrollbars are visible. 2007-01-01 Matthias Clasen * gtk/gtkscrolledwindow.h: * gtk/gtkscrolledwindow.c: Only handle key bindings for scrolling if the scrollbars are visible. (#340135, Christian Persch) svn path=/trunk/; revision=17012 --- ChangeLog | 7 +++++++ gtk/gtkscrolledwindow.c | 18 +++++++++++++----- gtk/gtkscrolledwindow.h | 6 +++--- 3 files changed, 23 insertions(+), 8 deletions(-) diff --git a/ChangeLog b/ChangeLog index a08bede90b..8a239ce137 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2007-01-01 Matthias Clasen + + * gtk/gtkscrolledwindow.h: + * gtk/gtkscrolledwindow.c: Only handle key bindings + for scrolling if the scrollbars are visible. + (#340135, Christian Persch) + 2007-01-01 Matthias Clasen * gtk/gtktextview.c (gtk_text_view_scroll_hpages): diff --git a/gtk/gtkscrolledwindow.c b/gtk/gtkscrolledwindow.c index d9ab546ef0..3a15b5106e 100644 --- a/gtk/gtkscrolledwindow.c +++ b/gtk/gtkscrolledwindow.c @@ -131,7 +131,7 @@ static void gtk_scrolled_window_forall (GtkContainer *cont gboolean include_internals, GtkCallback callback, gpointer callback_data); -static void gtk_scrolled_window_scroll_child (GtkScrolledWindow *scrolled_window, +static gboolean gtk_scrolled_window_scroll_child (GtkScrolledWindow *scrolled_window, GtkScrollType scroll, gboolean horizontal); static void gtk_scrolled_window_move_focus_out (GtkScrolledWindow *scrolled_window, @@ -311,8 +311,8 @@ gtk_scrolled_window_class_init (GtkScrolledWindowClass *class) G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION, G_STRUCT_OFFSET (GtkScrolledWindowClass, scroll_child), NULL, NULL, - _gtk_marshal_VOID__ENUM_BOOLEAN, - G_TYPE_NONE, 2, + _gtk_marshal_BOOLEAN__ENUM_BOOLEAN, + G_TYPE_BOOLEAN, 2, GTK_TYPE_SCROLL_TYPE, G_TYPE_BOOLEAN); signals[MOVE_FOCUS_OUT] = @@ -1000,7 +1000,7 @@ gtk_scrolled_window_forall (GtkContainer *container, } } -static void +static gboolean gtk_scrolled_window_scroll_child (GtkScrolledWindow *scrolled_window, GtkScrollType scroll, gboolean horizontal) @@ -1050,9 +1050,13 @@ gtk_scrolled_window_scroll_child (GtkScrolledWindow *scrolled_window, break; default: g_warning ("Invalid scroll type %u for GtkSpinButton::change-value", scroll); - return; + return FALSE; } + if ((horizontal && (!scrolled_window->hscrollbar || !scrolled_window->hscrollbar_visible)) || + (!horizontal && (!scrolled_window->vscrollbar || !scrolled_window->vscrollbar_visible))) + return FALSE; + if (horizontal) { if (scrolled_window->hscrollbar) @@ -1096,7 +1100,11 @@ gtk_scrolled_window_scroll_child (GtkScrolledWindow *scrolled_window, value = CLAMP (value, adjustment->lower, adjustment->upper - adjustment->page_size); gtk_adjustment_set_value (adjustment, value); + + return TRUE; } + + return FALSE; } static void diff --git a/gtk/gtkscrolledwindow.h b/gtk/gtkscrolledwindow.h index 38e674ea1e..c9668f3750 100644 --- a/gtk/gtkscrolledwindow.h +++ b/gtk/gtkscrolledwindow.h @@ -81,9 +81,9 @@ struct _GtkScrolledWindowClass * no horizontal/vertical variants for GTK_SCROLL_START/END, * so we have to add an additional boolean flag. */ - void (*scroll_child) (GtkScrolledWindow *scrolled_window, - GtkScrollType scroll, - gboolean horizontal); + gboolean (*scroll_child) (GtkScrolledWindow *scrolled_window, + GtkScrollType scroll, + gboolean horizontal); void (* move_focus_out) (GtkScrolledWindow *scrolled_window, GtkDirectionType direction);