[gnome-shell] searchDisplay, appDisplay: Use ClutterPanAction for re-swipe scrolling



commit 5fc16bb05b841c6574fe91db34670650bb92e9bc
Author: Jasper St. Pierre <jstpierre mecheye net>
Date:   Sun Nov 25 23:33:44 2012 -0500

    searchDisplay, appDisplay: Use ClutterPanAction for re-swipe scrolling
    
    The sooner we can kill off the custom overview swipe scroll code, the
    better.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=689062

 js/ui/appDisplay.js    |   20 +++++++++-----------
 js/ui/searchDisplay.js |   41 +++++++++++++++++++++--------------------
 2 files changed, 30 insertions(+), 31 deletions(-)
---
diff --git a/js/ui/appDisplay.js b/js/ui/appDisplay.js
index 851a511..a80b684 100644
--- a/js/ui/appDisplay.js
+++ b/js/ui/appDisplay.js
@@ -48,18 +48,16 @@ const AlphabeticalView = new Lang.Class({
                                          style_class: 'vfade' });
         this.actor.add_actor(box);
         this.actor.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.AUTOMATIC);
-        this.actor.connect('notify::mapped', Lang.bind(this,
-            function() {
-                if (!this.actor.mapped)
-                    return;
-
-                let adjustment = this.actor.vscroll.adjustment;
-                let direction = Overview.SwipeScrollDirection.VERTICAL;
-                Main.overview.setScrollAdjustment(adjustment, direction);
+        let action = new Clutter.PanAction({ interpolate: true });
+        action.connect('pan', Lang.bind(this, this._onPan));
+        this.actor.add_action(action);
+    },
 
-                // Reset scroll on mapping
-                adjustment.value = 0;
-            }));
+    _onPan: function(action) {
+        let [dist, dx, dy] = action.get_motion_delta(0);
+        let adjustment = this.actor.vscroll.adjustment;
+        adjustment.value -= (dy / this.actor.height) * adjustment.page_size;
+        return false;
     },
 
     removeAll: function() {
diff --git a/js/ui/searchDisplay.js b/js/ui/searchDisplay.js
index 5a914bd..1259966 100644
--- a/js/ui/searchDisplay.js
+++ b/js/ui/searchDisplay.js
@@ -183,26 +183,20 @@ const SearchResults = new Lang.Class({
         this._content = new St.BoxLayout({ name: 'searchResultsContent',
                                            vertical: true });
 
-        let scrollView = new St.ScrollView({ x_fill: true,
-                                             y_fill: false,
-                                             style_class: 'vfade' });
-        scrollView.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.AUTOMATIC);
-        scrollView.add_actor(this._content);
-
-        this.actor.add(scrollView, { x_fill: true,
-                                     y_fill: true,
-                                     expand: true,
-                                     x_align: St.Align.START,
-                                     y_align: St.Align.START });
-        this.actor.connect('notify::mapped', Lang.bind(this,
-            function() {
-                if (!this.actor.mapped)
-                    return;
-
-                let adjustment = scrollView.vscroll.adjustment;
-                let direction = Overview.SwipeScrollDirection.VERTICAL;
-                Main.overview.setScrollAdjustment(adjustment, direction);
-            }));
+        this._scrollView = new St.ScrollView({ x_fill: true,
+                                               y_fill: false,
+                                               style_class: 'vfade' });
+        this._scrollView.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.AUTOMATIC);
+        this._scrollView.add_actor(this._content);
+        let action = new Clutter.PanAction({ interpolate: true });
+        action.connect('pan', Lang.bind(this, this._onPan));
+        this._scrollView.add_action(action);
+
+        this.actor.add(this._scrollView, { x_fill: true,
+                                           y_fill: true,
+                                           expand: true,
+                                           x_align: St.Align.START,
+                                           y_align: St.Align.START });
 
         this._statusText = new St.Label({ style_class: 'search-statustext' });
         this._statusBin = new St.Bin({ x_align: St.Align.MIDDLE,
@@ -219,6 +213,13 @@ const SearchResults = new Lang.Class({
         this._defaultResult = null;
     },
 
+    _onPan: function(action) {
+        let [dist, dx, dy] = action.get_motion_delta(0);
+        let adjustment = this._scrollView.vscroll.adjustment;
+        adjustment.value -= (dy / this.actor.height) * adjustment.page_size;
+        return false;
+    },
+
     createProviderMeta: function(provider) {
         let providerBox = new St.BoxLayout({ style_class: 'search-section',
                                              vertical: true });



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]