From 6817bec35d2036e8f56a0a4c94843b5fd7b4984f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Thu, 11 Feb 2021 18:10:56 +0100 Subject: [PATCH 1/2] overviewControls: Everything is lava! Account for the increased distance from Activities button to the show-apps button by allowing clicks on the background to bring up the app grid. --- js/ui/overviewControls.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/js/ui/overviewControls.js b/js/ui/overviewControls.js index 32388621e..cd394e56a 100644 --- a/js/ui/overviewControls.js +++ b/js/ui/overviewControls.js @@ -247,6 +247,7 @@ class ControlsManager extends St.Widget { style_class: 'controls-manager', x_expand: true, y_expand: true, + reactive: true, clip_to_allocation: true, }); @@ -321,6 +322,14 @@ class ControlsManager extends St.Widget { this.dash.showAppsButton.connect('notify::checked', this._onShowAppsButtonToggled.bind(this)); + const clickAction = new Clutter.ClickAction(); + clickAction.connect('clicked', () => { + const button = clickAction.get_button(); + if (button === 0 || button === 1) + this.dash.showAppsButton.checked = true; + }); + this.add_action(clickAction); + Main.ctrlAltTabManager.addGroup( this.appDisplay, _('Applications'), -- 2.29.2 From 20a31bd0d726fd7e0f7bcf6636ce6a9a453cb0f7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Sun, 14 Feb 2021 19:24:52 +0100 Subject: [PATCH 2/2] workspaceThumbnail: Always consume button/touch events on thumbnails Now that the background is reactive and opens the app grid, we have to be more careful when consuming or propagating events: Thumbnails must consume events, non-thumbnail parts should let them through. --- js/ui/workspaceThumbnail.js | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/js/ui/workspaceThumbnail.js b/js/ui/workspaceThumbnail.js index 40a33fe3a..6489a7eca 100644 --- a/js/ui/workspaceThumbnail.js +++ b/js/ui/workspaceThumbnail.js @@ -708,26 +708,34 @@ var ThumbnailsBox = GObject.registerClass({ workspaceManager.n_workspaces > 1; } - _activateThumbnailAtPoint(stageX, stageY, time) { + _findThumbnailAtPoint(stageX, stageY) { const [r_, x] = this.transform_stage_point(stageX, stageY); + return this._thumbnails.find(t => x >= t.x && x <= t.x + t.width); + } - const thumbnail = this._thumbnails.find(t => x >= t.x && x <= t.x + t.width); - if (thumbnail) - thumbnail.activate(time); + vfunc_button_press_event(buttonEvent) { + const { x, y } = buttonEvent; + return this._findThumbnailAtPoint(x, y) + ? Clutter.EVENT_STOP : Clutter.EVENT_PROPAGATE; } vfunc_button_release_event(buttonEvent) { - let { x, y } = buttonEvent; - this._activateThumbnailAtPoint(x, y, buttonEvent.time); + const { x, y } = buttonEvent; + const thumbnail = this._findThumbnailAtPoint(x, y); + if (!thumbnail) + return Clutter.EVENT_PROPAGATE; + thumbnail.activate(buttonEvent.time); return Clutter.EVENT_STOP; } vfunc_touch_event(touchEvent) { + const { x, y } = touchEvent; + const thumbnail = this._findThumbnailAtPoint(x, y); + if (!thumbnail) + return Clutter.EVENT_PROPAGATE; if (touchEvent.type == Clutter.EventType.TOUCH_END && - global.display.is_pointer_emulating_sequence(touchEvent.sequence)) { - let { x, y } = touchEvent; - this._activateThumbnailAtPoint(x, y, touchEvent.time); - } + global.display.is_pointer_emulating_sequence(touchEvent.sequence)) + thumbnail.activate(touchEvent.time); return Clutter.EVENT_STOP; } -- 2.29.2