workspaceThumbnail: Use click action

Now that we have a convenient way of combining a draggable with
a click action, we can port the code without making it more
complicated.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2742>
This commit is contained in:
Florian Müllner 2023-04-20 03:30:04 +02:00 committed by Marge Bot
parent 3f9ee9cd5e
commit d6d6bf727f

View File

@ -87,6 +87,11 @@ var WindowClone = GObject.registerClass({
this._draggable.connect('drag-end', this._onDragEnd.bind(this));
this.inDrag = false;
const clickAction = new Clutter.ClickAction();
clickAction.connect('clicked',
() => this.emit('selected', Clutter.get_current_event_time()));
this._draggable.addClickAction(clickAction);
let iter = win => {
let actor = win.get_compositor_private();
@ -170,25 +175,6 @@ var WindowClone = GObject.registerClass({
}
}
vfunc_button_press_event() {
return Clutter.EVENT_STOP;
}
vfunc_button_release_event(buttonEvent) {
this.emit('selected', buttonEvent.time);
return Clutter.EVENT_STOP;
}
vfunc_touch_event(touchEvent) {
if (touchEvent.type != Clutter.EventType.TOUCH_END ||
!global.display.is_pointer_emulating_sequence(touchEvent.sequence))
return Clutter.EVENT_PROPAGATE;
this.emit('selected', touchEvent.time);
return Clutter.EVENT_STOP;
}
_onDragBegin(_draggable, _time) {
this.inDrag = true;
this.emit('drag-begin');
@ -637,6 +623,14 @@ var ThumbnailsBox = GObject.registerClass({
this._thumbnails = [];
const clickAction = new Clutter.ClickAction();
clickAction.connect('clicked', () => {
this._activateThumbnailAtPoint(
...clickAction.get_coords(),
Clutter.get_current_event_time());
});
this.add_action(clickAction);
Main.overview.connectObject(
'showing', () => this._createThumbnails(),
'hidden', () => this._destroyThumbnails(),
@ -721,22 +715,6 @@ var ThumbnailsBox = GObject.registerClass({
thumbnail.activate(time);
}
vfunc_button_release_event(buttonEvent) {
let { x, y } = buttonEvent;
this._activateThumbnailAtPoint(x, y, buttonEvent.time);
return Clutter.EVENT_STOP;
}
vfunc_touch_event(touchEvent) {
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);
}
return Clutter.EVENT_STOP;
}
_onDragBegin() {
this._dragCancelled = false;
this._dragMonitor = {