Backport #3168 to fix mouse clicks sometimes going missing
This is a backport of an upstream MR that replaces earlier downstream revert of "compositor: Do not repick after effects finish". https://gitlab.gnome.org/GNOME/mutter/-/issues/2918
This commit is contained in:
parent
2f11d7586c
commit
b590b4c640
@ -1,43 +0,0 @@
|
|||||||
From 3bb8445dbdd5600a8ce115a2e82a527f32246c13 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Kalev Lember <klember@redhat.com>
|
|
||||||
Date: Tue, 8 Aug 2023 17:15:34 +0200
|
|
||||||
Subject: [PATCH] Revert "compositor: Do not repick after effects finish"
|
|
||||||
|
|
||||||
Revert a change that likely caused mouse clicks to go missing in openQA
|
|
||||||
tests.
|
|
||||||
|
|
||||||
https://gitlab.gnome.org/GNOME/mutter/-/issues/2918#note_1810692
|
|
||||||
|
|
||||||
This reverts commit 281d896f6ad30b114f17b0ac6eb1eaf6f394e956.
|
|
||||||
---
|
|
||||||
src/compositor/meta-window-actor.c | 7 +++++++
|
|
||||||
1 file changed, 7 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/src/compositor/meta-window-actor.c b/src/compositor/meta-window-actor.c
|
|
||||||
index f5bed5166..07d005cef 100644
|
|
||||||
--- a/src/compositor/meta-window-actor.c
|
|
||||||
+++ b/src/compositor/meta-window-actor.c
|
|
||||||
@@ -683,6 +683,11 @@ meta_window_actor_after_effects (MetaWindowActor *self)
|
|
||||||
{
|
|
||||||
MetaWindowActorPrivate *priv =
|
|
||||||
meta_window_actor_get_instance_private (self);
|
|
||||||
+ ClutterStage *stage;
|
|
||||||
+ ClutterSeat *seat;
|
|
||||||
+
|
|
||||||
+ stage = CLUTTER_STAGE (clutter_actor_get_stage (CLUTTER_ACTOR (self)));
|
|
||||||
+ seat = clutter_backend_get_default_seat (clutter_get_default_backend ());
|
|
||||||
|
|
||||||
if (priv->needs_destroy)
|
|
||||||
{
|
|
||||||
@@ -694,6 +699,8 @@ meta_window_actor_after_effects (MetaWindowActor *self)
|
|
||||||
meta_window_actor_sync_visibility (self);
|
|
||||||
meta_window_actor_sync_actor_geometry (self, FALSE);
|
|
||||||
}
|
|
||||||
+
|
|
||||||
+ clutter_stage_repick_device (stage, clutter_seat_get_pointer (seat));
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
--
|
|
||||||
2.41.0
|
|
||||||
|
|
51
3168.patch
Normal file
51
3168.patch
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
From 44fc67626b6dbaee79c49fd87b20c42405d9decc Mon Sep 17 00:00:00 2001
|
||||||
|
From: Carlos Garnacho <carlosg@gnome.org>
|
||||||
|
Date: Wed, 9 Aug 2023 16:00:49 +0200
|
||||||
|
Subject: [PATCH] clutter: Trigger repick on animation-less transform changes
|
||||||
|
|
||||||
|
We have a mechanism to trigger repick after animations on
|
||||||
|
clutter_actor_set_final_state(), but this will not happen if
|
||||||
|
animations are disabled.
|
||||||
|
|
||||||
|
In this case, shell transitions and other typically animatable
|
||||||
|
changes on the transform of actors will not naturally trigger
|
||||||
|
a pointer repick when those get instantly changed to the final
|
||||||
|
state, possibly preserving the cached state and missing the
|
||||||
|
just popped in actor altogether.
|
||||||
|
|
||||||
|
Trigger an instant repick on animation-less transform changes,
|
||||||
|
so that these situations are also handled correctly, and the
|
||||||
|
pointer drops the cached state and is able to find the new
|
||||||
|
actor.
|
||||||
|
|
||||||
|
Closes: https://gitlab.gnome.org/GNOME/mutter/-/issues/2918
|
||||||
|
---
|
||||||
|
clutter/clutter/clutter-actor.c | 5 +++++
|
||||||
|
1 file changed, 5 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/clutter/clutter/clutter-actor.c b/clutter/clutter/clutter-actor.c
|
||||||
|
index 99b42cfe9d..8495e06f79 100644
|
||||||
|
--- a/clutter/clutter/clutter-actor.c
|
||||||
|
+++ b/clutter/clutter/clutter-actor.c
|
||||||
|
@@ -1004,6 +1004,8 @@ static void push_in_paint_unmapped_branch (ClutterActor *self,
|
||||||
|
static void pop_in_paint_unmapped_branch (ClutterActor *self,
|
||||||
|
guint count);
|
||||||
|
|
||||||
|
+static void clutter_actor_update_pointer (ClutterActor *self);
|
||||||
|
+
|
||||||
|
static GQuark quark_actor_layout_info = 0;
|
||||||
|
static GQuark quark_actor_transform_info = 0;
|
||||||
|
static GQuark quark_actor_animation_info = 0;
|
||||||
|
@@ -2447,6 +2449,9 @@ transform_changed (ClutterActor *actor)
|
||||||
|
absolute_geometry_changed_cb,
|
||||||
|
NULL,
|
||||||
|
NULL);
|
||||||
|
+
|
||||||
|
+ if (!clutter_actor_has_transitions (actor))
|
||||||
|
+ clutter_actor_update_pointer (actor);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*< private >
|
||||||
|
--
|
||||||
|
GitLab
|
||||||
|
|
@ -35,8 +35,9 @@ Patch2: 0001-place-Always-center-initial-setup-fedora-welcome.patch
|
|||||||
# https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3162
|
# https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3162
|
||||||
Patch3: 3162.patch
|
Patch3: 3162.patch
|
||||||
|
|
||||||
# https://gitlab.gnome.org/GNOME/mutter/-/issues/2918#note_1810692
|
# Fix mouse clicks sometimes not working
|
||||||
Patch4: 0001-Revert-compositor-Do-not-repick-after-effects-finish.patch
|
# https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3168
|
||||||
|
Patch4: 3168.patch
|
||||||
|
|
||||||
BuildRequires: pkgconfig(gobject-introspection-1.0) >= 1.41.0
|
BuildRequires: pkgconfig(gobject-introspection-1.0) >= 1.41.0
|
||||||
BuildRequires: pkgconfig(sm)
|
BuildRequires: pkgconfig(sm)
|
||||||
|
Loading…
Reference in New Issue
Block a user