workspace: Add smooth scrolling support to zoom windows
https://bugzilla.gnome.org/show_bug.cgi?id=687573
This commit is contained in:
parent
871ae3f9b2
commit
c6bc1526fa
@ -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 () {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user