diff --git a/js/ui/overview.js b/js/ui/overview.js index de629610d..3294e3636 100644 --- a/js/ui/overview.js +++ b/js/ui/overview.js @@ -46,18 +46,6 @@ const GLSL_DIM_EFFECT_CODE = '\ cogl_color_out.xyz = cogl_color_out.xyz * (1.0 - a); \ cogl_color_out.a = 1.0;'; -const SwipeScrollDirection = { - NONE: 0, - HORIZONTAL: 1, - VERTICAL: 2 -}; - -const SwipeScrollResult = { - CANCEL: 0, - SWIPE: 1, - CLICK: 2 -}; - const ShellInfo = new Lang.Class({ Name: 'ShellInfo', @@ -165,8 +153,6 @@ const Overview = new Lang.Class({ } })); - this._scrollDirection = SwipeScrollDirection.NONE; - this._scrollAdjustment = null; this._capturedEventId = 0; this._buttonPressId = 0; @@ -348,161 +334,6 @@ const Overview = new Lang.Class({ this._group.add_action(action); }, - setScrollAdjustment: function(adjustment, direction) { - if (this.isDummy) - return; - - this._scrollAdjustment = adjustment; - if (this._scrollAdjustment == null) - this._scrollDirection = SwipeScrollDirection.NONE; - else - this._scrollDirection = direction; - }, - - _onButtonPress: function(actor, event) { - if (this._scrollDirection == SwipeScrollDirection.NONE - || event.get_button() != 1) - return; - - let [stageX, stageY] = event.get_coords(); - this._dragStartX = this._dragX = stageX; - this._dragStartY = this._dragY = stageY; - this._dragStartValue = this._scrollAdjustment.value; - this._lastMotionTime = -1; // used to track "stopping" while swipe-scrolling - this._capturedEventId = global.stage.connect('captured-event', - Lang.bind(this, this._onCapturedEvent)); - this.emit('swipe-scroll-begin'); - }, - - _onCapturedEvent: function(actor, event) { - let stageX, stageY; - let threshold = Gtk.Settings.get_default().gtk_dnd_drag_threshold; - - switch(event.type()) { - case Clutter.EventType.BUTTON_RELEASE: - [stageX, stageY] = event.get_coords(); - - // default to snapping back to the original value - let newValue = this._dragStartValue; - - let minValue = this._scrollAdjustment.lower; - let maxValue = this._scrollAdjustment.upper - this._scrollAdjustment.page_size; - - let direction; - if (this._scrollDirection == SwipeScrollDirection.HORIZONTAL) { - direction = stageX > this._dragStartX ? -1 : 1; - if (Clutter.get_default_text_direction() == Clutter.TextDirection.RTL) - direction *= -1; - } else { - direction = stageY > this._dragStartY ? -1 : 1; - } - - // We default to scroll a full page size; both the first - // and the last page may be smaller though, so we need to - // adjust difference in those cases. - let difference = direction * this._scrollAdjustment.page_size; - if (this._dragStartValue + difference > maxValue) - difference = maxValue - this._dragStartValue; - else if (this._dragStartValue + difference < minValue) - difference = minValue - this._dragStartValue; - - // If the user has moved more than half the scroll - // difference, we want to "settle" to the new value - // even if the user stops dragging rather "throws" by - // releasing during the drag. - let distance = this._dragStartValue - this._scrollAdjustment.value; - let noStop = Math.abs(distance / difference) > 0.5; - - // We detect if the user is stopped by comparing the - // timestamp of the button release with the timestamp of - // the last motion. Experimentally, a difference of 0 or 1 - // millisecond indicates that the mouse is in motion, a - // larger difference indicates that the mouse is stopped. - if ((this._lastMotionTime > 0 && - this._lastMotionTime > event.get_time() - 2) || - noStop) { - if (this._dragStartValue + difference >= minValue && - this._dragStartValue + difference <= maxValue) - newValue += difference; - } - - let result; - - // See if the user has moved the mouse enough to trigger - // a drag - if (Math.abs(stageX - this._dragStartX) < threshold && - Math.abs(stageY - this._dragStartY) < threshold) { - // no motion? It's a click! - result = SwipeScrollResult.CLICK; - this.emit('swipe-scroll-end', result); - } else { - if (newValue == this._dragStartValue) - result = SwipeScrollResult.CANCEL; - else - result = SwipeScrollResult.SWIPE; - - // The event capture handler is disconnected - // while scrolling to the final position, so - // to avoid undesired prelights we raise - // the cover pane. - this._coverPane.raise_top(); - this._coverPane.show(); - - Tweener.addTween(this._scrollAdjustment, - { value: newValue, - time: ANIMATION_TIME, - transition: 'easeOutQuad', - onCompleteScope: this, - onComplete: function() { - this._coverPane.hide(); - this.emit('swipe-scroll-end', - result); - } - }); - } - - global.stage.disconnect(this._capturedEventId); - this._capturedEventId = 0; - - return result != SwipeScrollResult.CLICK; - - case Clutter.EventType.MOTION: - [stageX, stageY] = event.get_coords(); - let dx = this._dragX - stageX; - let dy = this._dragY - stageY; - let primary = Main.layoutManager.primaryMonitor; - - this._dragX = stageX; - this._dragY = stageY; - this._lastMotionTime = event.get_time(); - - // See if the user has moved the mouse enough to trigger - // a drag - if (Math.abs(stageX - this._dragStartX) < threshold && - Math.abs(stageY - this._dragStartY) < threshold) - return true; - - if (this._scrollDirection == SwipeScrollDirection.HORIZONTAL) { - if (Clutter.get_default_text_direction() == Clutter.TextDirection.RTL) - this._scrollAdjustment.value -= (dx / primary.width) * this._scrollAdjustment.page_size; - else - this._scrollAdjustment.value += (dx / primary.width) * this._scrollAdjustment.page_size; - } else { - this._scrollAdjustment.value += (dy / primary.height) * this._scrollAdjustment.page_size; - } - - return true; - - // Block enter/leave events to avoid prelights - // during swipe-scroll - case Clutter.EventType.ENTER: - case Clutter.EventType.LEAVE: - return true; - } - - return false; - }, - _getDesktopClone: function() { let windows = global.get_window_actors().filter(function(w) { return w.meta_window.get_window_type() == Meta.WindowType.DESKTOP; @@ -603,9 +434,6 @@ const Overview = new Lang.Class({ this._modal = true; this._animateVisible(); this._shown = true; - - this._buttonPressId = this._group.connect('button-press-event', - Lang.bind(this, this._onButtonPress)); }, fadeInDesktop: function() { @@ -705,10 +533,6 @@ const Overview = new Lang.Class({ this._shown = false; this._syncInputMode(); - - if (this._buttonPressId > 0) - this._group.disconnect(this._buttonPressId); - this._buttonPressId = 0; }, // hideTemporarily: