workspace: Add smooth scrolling support to zoom windows

https://bugzilla.gnome.org/show_bug.cgi?id=687573
This commit is contained in:
Jasper St. Pierre 2012-11-04 10:55:37 -05:00
parent 871ae3f9b2
commit c6bc1526fa

View File

@ -265,23 +265,37 @@ const WindowClone = new Lang.Class({
_onScroll : function (actor, event) { _onScroll : function (actor, event) {
let direction = event.get_scroll_direction(); let direction = event.get_scroll_direction();
if (direction == Clutter.ScrollDirection.UP) { let delta;
if (event.is_pointer_emulated())
return;
if (direction == Clutter.ScrollDirection.DOWN) {
delta = -SCROLL_SCALE_AMOUNT;
} else if (direction == Clutter.ScrollDirection.UP) {
delta = +SCROLL_SCALE_AMOUNT;
} else if (direction == Clutter.ScrollDirection.SMOOTH) {
let [dx, dy] = event.get_scroll_delta();
delta = -dy * 10;
}
if (delta > 0) {
if (this._zoomStep == undefined) if (this._zoomStep == undefined)
this._zoomStart(); this._zoomStart();
if (this._zoomStep < 100) { if (this._zoomStep < 100) {
this._zoomStep += SCROLL_SCALE_AMOUNT; this._zoomStep += delta;
this._zoomStep = Math.min(100, this._zoomStep);
this._zoomUpdate(); this._zoomUpdate();
} }
} else if (direction == Clutter.ScrollDirection.DOWN) { } else if (delta < 0) {
if (this._zoomStep > 0) { if (this._zoomStep > 0) {
this._zoomStep -= SCROLL_SCALE_AMOUNT; this._zoomStep += delta;
this._zoomStep = Math.max(0, this._zoomStep); this._zoomStep = Math.max(0, this._zoomStep);
this._zoomUpdate(); this._zoomUpdate();
} }
if (this._zoomStep <= 0.0) if (this._zoomStep <= 0.0)
this._zoomEnd(); this._zoomEnd();
} }
}, },
_zoomUpdate : function () { _zoomUpdate : function () {