screenshot: Ignore events in SelectArea after making a selection

The grab and actor are only removed after the selection rectangle has
finished fading out. During this time it was possible to still change
the position of the selection rectangle.

Related: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/2761
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1825>
This commit is contained in:
Sebastian Keller 2021-04-28 07:15:03 +02:00 committed by Marge Bot
parent 548e18ad7e
commit 380d61dc43

View File

@ -384,6 +384,9 @@ class SelectArea extends St.Widget {
} }
vfunc_button_press_event(buttonEvent) { vfunc_button_press_event(buttonEvent) {
if (this._result)
return Clutter.EVENT_PROPAGATE;
[this._startX, this._startY] = [buttonEvent.x, buttonEvent.y]; [this._startX, this._startY] = [buttonEvent.x, buttonEvent.y];
this._startX = Math.floor(this._startX); this._startX = Math.floor(this._startX);
this._startY = Math.floor(this._startY); this._startY = Math.floor(this._startY);
@ -393,7 +396,7 @@ class SelectArea extends St.Widget {
} }
vfunc_button_release_event() { vfunc_button_release_event() {
if (this._startX === -1 || this._startY === -1) if (this._startX === -1 || this._startY === -1 || this._result)
return Clutter.EVENT_PROPAGATE; return Clutter.EVENT_PROPAGATE;
this._result = this._getGeometry(); this._result = this._getGeometry();