6bdd276d05
Former-commit-id: fd56571888259555122d8a0f58c68838229cea2b
101 lines
4.2 KiB
Diff
101 lines
4.2 KiB
Diff
From 2b8a48086aee90fe60753e5b6f0c415036469f48 Mon Sep 17 00:00:00 2001
|
|
From: Michael Natterer <mitch@gimp.org>
|
|
Date: Fri, 5 Apr 2013 15:15:08 +0200
|
|
Subject: [PATCH 36/68] gtk: add GtkScrolledWindow API to disable overshoot
|
|
per widget
|
|
|
|
And remove some forgotten declarations in the header.
|
|
---
|
|
gtk/gtkscrolledwindow.c | 33 +++++++++++++++++++++++++++++++--
|
|
gtk/gtkscrolledwindow.h | 10 +++-------
|
|
2 files changed, 34 insertions(+), 9 deletions(-)
|
|
|
|
diff --git a/gtk/gtkscrolledwindow.c b/gtk/gtkscrolledwindow.c
|
|
index 7200462..9def3aa 100644
|
|
--- a/gtk/gtkscrolledwindow.c
|
|
+++ b/gtk/gtkscrolledwindow.c
|
|
@@ -154,6 +154,7 @@ typedef struct {
|
|
gboolean overlay_scrollbars;
|
|
gboolean is_snapping_back;
|
|
gboolean gesture_in_progress;
|
|
+ gboolean enable_overshoot;
|
|
} GtkScrolledWindowPrivate;
|
|
|
|
#define GTK_SCROLLED_WINDOW_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), GTK_TYPE_SCROLLED_WINDOW, GtkScrolledWindowPrivate))
|
|
@@ -541,6 +542,8 @@ gtk_scrolled_window_init (GtkScrolledWindow *scrolled_window)
|
|
priv->sb_width = 6;
|
|
priv->sb_fade_out_delay = 1000;
|
|
|
|
+ priv->enable_overshoot = TRUE;
|
|
+
|
|
g_signal_connect_swapped (priv->opacity, "value-changed",
|
|
G_CALLBACK (gtk_scrolled_window_update_scrollbars),
|
|
scrolled_window);
|
|
@@ -2144,8 +2147,9 @@ gtk_scrolled_window_scroll_event (GtkWidget *widget,
|
|
gboolean is_momentum_event = event->momentum_phase != GDK_EVENT_SCROLL_PHASE_NONE;
|
|
gboolean legacy_mouse = FALSE;
|
|
|
|
- if (event->phase == GDK_EVENT_SCROLL_PHASE_NONE &&
|
|
- event->momentum_phase == GDK_EVENT_SCROLL_PHASE_NONE)
|
|
+ if (!priv->enable_overshoot ||
|
|
+ (event->phase == GDK_EVENT_SCROLL_PHASE_NONE &&
|
|
+ event->momentum_phase == GDK_EVENT_SCROLL_PHASE_NONE))
|
|
legacy_mouse = TRUE;
|
|
|
|
_gtk_scrolled_window_get_overshoot (scrolled_window,
|
|
@@ -3106,6 +3110,31 @@ gtk_scrolled_window_add_with_viewport (GtkScrolledWindow *scrolled_window,
|
|
gtk_container_add (GTK_CONTAINER (viewport), child);
|
|
}
|
|
|
|
+void
|
|
+gtk_scrolled_window_set_enable_overshoot (GtkScrolledWindow *scrolled_window,
|
|
+ gboolean enable_overshoot)
|
|
+{
|
|
+ GtkScrolledWindowPrivate *priv;
|
|
+
|
|
+ g_return_if_fail (GTK_IS_SCROLLED_WINDOW (scrolled_window));
|
|
+
|
|
+ priv = GTK_SCROLLED_WINDOW_GET_PRIVATE (scrolled_window);
|
|
+
|
|
+ priv->enable_overshoot = enable_overshoot ? TRUE : FALSE;
|
|
+}
|
|
+
|
|
+gboolean
|
|
+gtk_scrolled_window_get_enable_overshoot (GtkScrolledWindow *scrolled_window)
|
|
+{
|
|
+ GtkScrolledWindowPrivate *priv;
|
|
+
|
|
+ g_return_val_if_fail (GTK_IS_SCROLLED_WINDOW (scrolled_window), FALSE);
|
|
+
|
|
+ priv = GTK_SCROLLED_WINDOW_GET_PRIVATE (scrolled_window);
|
|
+
|
|
+ return priv->enable_overshoot;
|
|
+}
|
|
+
|
|
/*
|
|
* _gtk_scrolled_window_get_spacing:
|
|
* @scrolled_window: a scrolled window
|
|
diff --git a/gtk/gtkscrolledwindow.h b/gtk/gtkscrolledwindow.h
|
|
index 1f555e0..f75596d 100644
|
|
--- a/gtk/gtkscrolledwindow.h
|
|
+++ b/gtk/gtkscrolledwindow.h
|
|
@@ -127,13 +127,9 @@ GtkShadowType gtk_scrolled_window_get_shadow_type (GtkScrolledWindow *scrolle
|
|
void gtk_scrolled_window_add_with_viewport (GtkScrolledWindow *scrolled_window,
|
|
GtkWidget *child);
|
|
|
|
-void gtk_scrolled_window_set_kinetic_scrolling (GtkScrolledWindow *scrolled_window,
|
|
- gboolean kinetic_scrolling);
|
|
-gboolean gtk_scrolled_window_get_kinetic_scrolling (GtkScrolledWindow *scrolled_window);
|
|
-
|
|
-void gtk_scrolled_window_set_capture_button_press (GtkScrolledWindow *scrolled_window,
|
|
- gboolean capture_button_press);
|
|
-gboolean gtk_scrolled_window_get_capture_button_press (GtkScrolledWindow *scrolled_window);
|
|
+void gtk_scrolled_window_set_enable_overshoot (GtkScrolledWindow *scrolled_window,
|
|
+ gboolean enable_overshoot);
|
|
+gboolean gtk_scrolled_window_get_enable_overshoot (GtkScrolledWindow *scrolled_window);
|
|
|
|
gint _gtk_scrolled_window_get_scrollbar_spacing (GtkScrolledWindow *scrolled_window);
|
|
|
|
--
|
|
1.7.10.2 (Apple Git-33)
|