From 0566de341b54c243b748de9e30469549dca3020020c69863aae074fe5214534d Mon Sep 17 00:00:00 2001
From: Dominique Leuenberger <dimstar@opensuse.org>
Date: Mon, 1 Jul 2024 08:59:27 +0000
Subject: [PATCH] Accepting request 1184101 from GNOME:Next

- Update to version 46.3:
  + Fix performance issues with second virtual monitor
  + Fix missing unmap animation of some windows
  + Fix placement/resizing regression
  + Fix possible out of sync primary selections and clipboard
  + Fix ibus support in popups
  + Fix hardware accelerated rendering when headless
  + Add back support for legacy X11 cursor themes
  + Fix preedit offsets
  + Use character offsets to specify surrounding text
  + Don't force titlebar on screen on all interactive resizes
  + Fixed crashes
  + Misc. bug fixes and cleanups
  + Updated translations.
- Rebase patches with quilt.

OBS-URL: https://build.opensuse.org/request/show/1184101
OBS-URL: https://build.opensuse.org/package/show/GNOME:Factory/mutter?expand=0&rev=508
---
 ...ctor-Cache-stage-relative-instead-of.patch |  23 +-
 _service                                      |   2 +-
 mutter-46.2.obscpio                           |   3 -
 mutter-46.3.obscpio                           |   3 +
 mutter-disable-cvt-s390x.patch                |  18 +-
 mutter-fix-x11-restart.patch                  | 218 ++++++------------
 mutter-implement-text-input-v1.patch          | 119 +++++-----
 ...tor-Special-case-shaped-Java-windows.patch |  34 ++-
 mutter.changes                                |  19 ++
 mutter.obsinfo                                |   6 +-
 mutter.spec                                   |   2 +-
 11 files changed, 193 insertions(+), 254 deletions(-)
 delete mode 100644 mutter-46.2.obscpio
 create mode 100644 mutter-46.3.obscpio

diff --git a/0001-Revert-clutter-actor-Cache-stage-relative-instead-of.patch b/0001-Revert-clutter-actor-Cache-stage-relative-instead-of.patch
index 9d3846f..ffcc104 100644
--- a/0001-Revert-clutter-actor-Cache-stage-relative-instead-of.patch
+++ b/0001-Revert-clutter-actor-Cache-stage-relative-instead-of.patch
@@ -9,11 +9,11 @@ This reverts commit 703bbe0e99dbb688352e0bff396e5cbf2c6af45b.
  clutter/clutter/clutter-actor.c | 67 ++++++++++-----------------------
  1 file changed, 20 insertions(+), 47 deletions(-)
 
-diff --git a/clutter/clutter/clutter-actor.c b/clutter/clutter/clutter-actor.c
-index dd0d5ceb6..70dea5ca2 100644
---- a/clutter/clutter/clutter-actor.c
-+++ b/clutter/clutter/clutter-actor.c
-@@ -612,7 +612,7 @@ struct _ClutterActorPrivate
+Index: mutter-46.3/clutter/clutter/clutter-actor.c
+===================================================================
+--- mutter-46.3.orig/clutter/clutter/clutter-actor.c
++++ mutter-46.3/clutter/clutter/clutter-actor.c
+@@ -566,7 +566,7 @@ struct _ClutterActorPrivate
    /* the cached transformation matrix; see apply_transform() */
    graphene_matrix_t transform;
  
@@ -22,7 +22,7 @@ index dd0d5ceb6..70dea5ca2 100644
  
    float resource_scale;
  
-@@ -776,7 +776,7 @@ struct _ClutterActorPrivate
+@@ -730,7 +730,7 @@ struct _ClutterActorPrivate
    guint clear_stage_views_needs_stage_views_changed : 1;
    guint needs_redraw : 1;
    guint needs_finish_layout : 1;
@@ -31,7 +31,7 @@ index dd0d5ceb6..70dea5ca2 100644
  };
  
  enum
-@@ -2425,7 +2425,7 @@ absolute_geometry_changed (ClutterActor *actor)
+@@ -2309,7 +2309,7 @@ absolute_geometry_changed (ClutterActor
  {
    actor->priv->needs_update_stage_views = TRUE;
    actor->priv->needs_visible_paint_volume_update = TRUE;
@@ -40,7 +40,7 @@ index dd0d5ceb6..70dea5ca2 100644
  
    actor->priv->needs_finish_layout = TRUE;
    /* needs_finish_layout is already TRUE on the whole parent tree thanks
-@@ -3047,9 +3047,8 @@ _clutter_actor_apply_relative_transformation_matrix (ClutterActor      *self,
+@@ -2931,9 +2931,8 @@ _clutter_actor_apply_relative_transforma
                                                       graphene_matrix_t *matrix)
  {
    ClutterActorPrivate *priv = self->priv;
@@ -52,7 +52,7 @@ index dd0d5ceb6..70dea5ca2 100644
  
    /* Note we terminate before ever calling stage->apply_transform()
     * since that would conceptually be relative to the underlying
-@@ -3058,63 +3057,37 @@ _clutter_actor_apply_relative_transformation_matrix (ClutterActor      *self,
+@@ -2942,63 +2941,37 @@ _clutter_actor_apply_relative_transforma
    if (self == ancestor)
      return;
  
@@ -130,7 +130,7 @@ index dd0d5ceb6..70dea5ca2 100644
        return;
      }
  
-@@ -7469,7 +7442,7 @@ clutter_actor_init (ClutterActor *self)
+@@ -7362,7 +7335,7 @@ clutter_actor_init (ClutterActor *self)
    priv->enable_model_view_transform = TRUE;
  
    priv->transform_valid = FALSE;
@@ -139,6 +139,3 @@ index dd0d5ceb6..70dea5ca2 100644
  
    /* the default is to stretch the content, to match the
     * current behaviour of basically all actors. also, it's
--- 
-2.44.0
-
diff --git a/_service b/_service
index 672f565..9baf096 100644
--- a/_service
+++ b/_service
@@ -3,7 +3,7 @@
   <service name="obs_scm" mode="manual">
     <param name="scm">git</param>
     <param name="url">https://gitlab.gnome.org/GNOME/mutter.git</param>
-    <param name="revision">46.2</param>
+    <param name="revision">46.3</param>
     <param name="versionformat">@PARENT_TAG@+@TAG_OFFSET@</param>
     <param name="versionrewrite-pattern">(.*)\+0</param>
     <param name="versionrewrite-replacement">\1</param>
diff --git a/mutter-46.2.obscpio b/mutter-46.2.obscpio
deleted file mode 100644
index 3e3d63d..0000000
--- a/mutter-46.2.obscpio
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:ce3630afa7ea7f0edef6720a8956b3bf154fe91e88fe5c1bd06744e6b84862df
-size 30467085
diff --git a/mutter-46.3.obscpio b/mutter-46.3.obscpio
new file mode 100644
index 0000000..a36696f
--- /dev/null
+++ b/mutter-46.3.obscpio
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3ff1c1a9283464bf1c42ab5cd9d8ce9f653dcf0d66b6bf8f1e2e1f26724f87da
+size 30411277
diff --git a/mutter-disable-cvt-s390x.patch b/mutter-disable-cvt-s390x.patch
index eb16e8b..30680d1 100644
--- a/mutter-disable-cvt-s390x.patch
+++ b/mutter-disable-cvt-s390x.patch
@@ -1,6 +1,7 @@
-diff -druN mutter-45.1.orig/src/backends/native/meta-default-modes-s390x.h mutter-45.1/src/backends/native/meta-default-modes-s390x.h
---- mutter-45.1.orig/src/backends/native/meta-default-modes-s390x.h	1970-01-01 01:00:00.000000000 +0100
-+++ mutter-45.1/src/backends/native/meta-default-modes-s390x.h	2024-01-23 16:35:55.791416596 +0100
+Index: mutter-46.3/src/backends/native/meta-default-modes-s390x.h
+===================================================================
+--- /dev/null
++++ mutter-46.3/src/backends/native/meta-default-modes-s390x.h
 @@ -0,0 +1,57 @@
 +/* Generated by gen-default-modes.py */
 +
@@ -59,10 +60,11 @@ diff -druN mutter-45.1.orig/src/backends/native/meta-default-modes-s390x.h mutte
 +{ 813000, 2304, 2307, 2312, 2386, 0, 4096, 4440, 4888, 5680, 0, 0, DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC, DRM_MODE_TYPE_DEFAULT, "2304x4096_60.00" },
 +{ 1276500, 2880, 2883, 2888, 2982, 0, 5120, 5560, 6128, 7136, 0, 0, DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC, DRM_MODE_TYPE_DEFAULT, "2880x5120_60.00" },
 +};
-diff -druN mutter-45.1.orig/src/meson.build mutter-45.1/src/meson.build
---- mutter-45.1.orig/src/meson.build	2023-10-31 19:35:00.000000000 +0100
-+++ mutter-45.1/src/meson.build	2024-01-23 18:07:33.487280694 +0100
-@@ -958,6 +958,7 @@
+Index: mutter-46.3/src/meson.build
+===================================================================
+--- mutter-46.3.orig/src/meson.build
++++ mutter-46.3/src/meson.build
+@@ -968,6 +968,7 @@ if have_profiler
  endif
  
  if have_native_backend
@@ -70,7 +72,7 @@ diff -druN mutter-45.1.orig/src/meson.build mutter-45.1/src/meson.build
    cvt = find_program('cvt')
  
    gen_default_modes = find_program('backends/native/gen-default-modes.py')
-@@ -965,6 +966,13 @@
+@@ -975,6 +976,13 @@ if have_native_backend
      output: 'meta-default-modes.h',
      command: [gen_default_modes, '@OUTPUT@']
    )
diff --git a/mutter-fix-x11-restart.patch b/mutter-fix-x11-restart.patch
index 82a49de..4896ee7 100644
--- a/mutter-fix-x11-restart.patch
+++ b/mutter-fix-x11-restart.patch
@@ -20,11 +20,11 @@ Closes: https://gitlab.gnome.org/GNOME/mutter/-/issues/3089
  src/x11/meta-x11-display.c           | 1 -
  3 files changed, 3 insertions(+), 1 deletion(-)
 
-diff --git a/src/compositor/meta-compositor-x11.c b/src/compositor/meta-compositor-x11.c
-index 1ad3327ddf6..ce7bc1945ce 100644
---- a/src/compositor/meta-compositor-x11.c
-+++ b/src/compositor/meta-compositor-x11.c
-@@ -188,6 +188,8 @@ meta_compositor_x11_manage (MetaCompositor  *compositor,
+Index: mutter-46.3/src/compositor/meta-compositor-x11.c
+===================================================================
+--- mutter-46.3.orig/src/compositor/meta-compositor-x11.c
++++ mutter-46.3/src/compositor/meta-compositor-x11.c
+@@ -188,6 +188,8 @@ meta_compositor_x11_manage (MetaComposit
  
    compositor_x11->have_x11_sync_object = meta_sync_ring_init (xdisplay);
  
@@ -33,11 +33,11 @@ index 1ad3327ddf6..ce7bc1945ce 100644
    return TRUE;
  }
  
-diff --git a/src/wayland/meta-xwayland.c b/src/wayland/meta-xwayland.c
-index e95ca564010..83f2fcb25d9 100644
---- a/src/wayland/meta-xwayland.c
-+++ b/src/wayland/meta-xwayland.c
-@@ -1170,6 +1170,7 @@ on_x11_display_setup (MetaDisplay         *display,
+Index: mutter-46.3/src/wayland/meta-xwayland.c
+===================================================================
+--- mutter-46.3.orig/src/wayland/meta-xwayland.c
++++ mutter-46.3/src/wayland/meta-xwayland.c
+@@ -1180,6 +1180,7 @@ on_x11_display_setup (MetaDisplay
  {
    MetaX11Display *x11_display = meta_display_get_x11_display (display);
  
@@ -45,39 +45,62 @@ index e95ca564010..83f2fcb25d9 100644
    meta_xwayland_init_dnd (x11_display);
    meta_xwayland_init_xrandr (manager, x11_display);
  }
-diff --git a/src/x11/meta-x11-display.c b/src/x11/meta-x11-display.c
-index 4e98203dd25..c634a71fb2a 100644
---- a/src/x11/meta-x11-display.c
-+++ b/src/x11/meta-x11-display.c
-@@ -301,7 +301,6 @@ on_x11_display_opened (MetaX11Display *x11_display,
+Index: mutter-46.3/src/x11/meta-x11-display.c
+===================================================================
+--- mutter-46.3.orig/src/x11/meta-x11-display.c
++++ mutter-46.3/src/x11/meta-x11-display.c
+@@ -306,8 +306,32 @@ static void
+ on_x11_display_opened (MetaX11Display *x11_display,
                         MetaDisplay    *display)
  {
++  Window old_active_xwindow = None;
++
++  if (!meta_is_wayland_compositor ())
++    {
++      meta_prop_get_window (display->x11_display,
++                            display->x11_display->xroot,
++                            display->x11_display->atom__NET_ACTIVE_WINDOW,
++                            &old_active_xwindow);
++    }
++
    meta_display_manage_all_xwindows (display);
 -  meta_x11_display_redirect_windows (x11_display, display);
++
++  if (old_active_xwindow != None)
++    {
++      MetaWindow *old_active_window;
++
++      old_active_window = meta_x11_display_lookup_x_window (x11_display,
++                                                            old_active_xwindow);
++      if (old_active_window)
++        {
++          uint32_t timestamp;
++
++          timestamp = display->x11_display->timestamp;
++          meta_window_focus (old_active_window, timestamp);
++        }
++    }
  }
  
  static void
--- 
-GitLab
-
-
-From 77fc07943c3171a5e7a047ca34af46feeca347c2 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Jonas=20=C3=85dahl?= <jadahl@gmail.com>
-Date: Fri, 20 Oct 2023 17:03:31 +0800
-Subject: [PATCH 2/4] display: Move X11 initial focus handling to
- MetaX11Display
-
-It's X11 specific, so put it in the X11 display manager object.
----
- src/core/display.c         | 34 ----------------------------------
- src/x11/meta-x11-display.c | 25 +++++++++++++++++++++++++
- 2 files changed, 25 insertions(+), 34 deletions(-)
-
-diff --git a/src/core/display.c b/src/core/display.c
-index 0a191c0fbca..b16e50e21de 100644
---- a/src/core/display.c
-+++ b/src/core/display.c
-@@ -930,9 +930,6 @@ meta_display_new (MetaContext  *context,
+Index: mutter-46.3/src/core/display.c
+===================================================================
+--- mutter-46.3.orig/src/core/display.c
++++ mutter-46.3/src/core/display.c
+@@ -908,9 +908,9 @@ meta_display_init_x11 (MetaDisplay
+ }
+ 
+ static void
+-on_x11_initialized (MetaDisplay  *display,
+-                    GAsyncResult *result,
+-                    gpointer      user_data)
++on_mandatory_x11_initialized (MetaDisplay  *display,
++                              GAsyncResult *result,
++                              gpointer      user_data)
+ {
+   g_autoptr (GError) error = NULL;
+ 
+@@ -941,9 +941,6 @@ meta_display_new (MetaContext  *context,
    MetaDisplay *display;
    MetaDisplayPrivate *priv;
    guint32 timestamp;
@@ -87,7 +110,16 @@ index 0a191c0fbca..b16e50e21de 100644
    MetaMonitorManager *monitor_manager;
    MetaSettings *settings;
    MetaInputCapture *input_capture;
-@@ -1048,14 +1045,6 @@ meta_display_new (MetaContext  *context,
+@@ -1032,7 +1029,7 @@ meta_display_new (MetaContext  *context,
+       if (x11_display_policy == META_X11_DISPLAY_POLICY_MANDATORY)
+         {
+           meta_display_init_x11 (display, NULL,
+-                                 (GAsyncReadyCallback) on_x11_initialized,
++                                 (GAsyncReadyCallback) on_mandatory_x11_initialized,
+                                  NULL);
+         }
+ #endif /* HAVE_XWAYLAND */
+@@ -1059,14 +1056,6 @@ meta_display_new (MetaContext  *context,
    display->last_focus_time = timestamp;
    display->last_user_time = timestamp;
  
@@ -102,7 +134,7 @@ index 0a191c0fbca..b16e50e21de 100644
    if (!meta_compositor_manage (display->compositor, error))
      {
        g_object_unref (display);
-@@ -1076,30 +1065,7 @@ meta_display_new (MetaContext  *context,
+@@ -1087,30 +1076,7 @@ meta_display_new (MetaContext  *context,
    g_signal_connect (display->gesture_tracker, "state-changed",
                      G_CALLBACK (gesture_tracker_state_changed), display);
  
@@ -133,67 +165,10 @@ index 0a191c0fbca..b16e50e21de 100644
  
    g_signal_connect (stage, "notify::is-grabbed",
                      G_CALLBACK (on_is_grabbed_changed), display);
-diff --git a/src/x11/meta-x11-display.c b/src/x11/meta-x11-display.c
-index c634a71fb2a..599968a363b 100644
---- a/src/x11/meta-x11-display.c
-+++ b/src/x11/meta-x11-display.c
-@@ -300,7 +300,32 @@ static void
- on_x11_display_opened (MetaX11Display *x11_display,
-                        MetaDisplay    *display)
- {
-+  Window old_active_xwindow = None;
-+
-+  if (!meta_is_wayland_compositor ())
-+    {
-+      meta_prop_get_window (display->x11_display,
-+                            display->x11_display->xroot,
-+                            display->x11_display->atom__NET_ACTIVE_WINDOW,
-+                            &old_active_xwindow);
-+    }
-+
-   meta_display_manage_all_xwindows (display);
-+
-+  if (old_active_xwindow != None)
-+    {
-+      MetaWindow *old_active_window;
-+
-+      old_active_window = meta_x11_display_lookup_x_window (x11_display,
-+                                                            old_active_xwindow);
-+      if (old_active_window)
-+        {
-+          uint32_t timestamp;
-+
-+          timestamp = display->x11_display->timestamp;
-+          meta_window_focus (old_active_window, timestamp);
-+        }
-+    }
- }
- 
- static void
--- 
-GitLab
-
-
-From 668eb0d198dba58c7833b09926dce2f043889155 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Jonas=20=C3=85dahl?= <jadahl@gmail.com>
-Date: Tue, 17 Oct 2023 15:46:00 +0800
-Subject: [PATCH 3/4] tests/x11: Fix replace test to catch the second instance
- failing
-
-The test never noticed that the second instance never actually managed
-to load; it was looping a multi second retry session trying to redirect
-windows, meaning it failed to catch https://gitlab.gnome.org/GNOME/mutter/-/issues/3089.
-
-Fix the test so that it always waits for mutter to finish loading
-successfully, just like it waits fro the first.
----
- src/tests/x11-test.sh | 3 +++
- 1 file changed, 3 insertions(+)
-
-diff --git a/src/tests/x11-test.sh b/src/tests/x11-test.sh
-index 59e460fc336..d95b2460f6e 100755
---- a/src/tests/x11-test.sh
-+++ b/src/tests/x11-test.sh
+Index: mutter-46.3/src/tests/x11-test.sh
+===================================================================
+--- mutter-46.3.orig/src/tests/x11-test.sh
++++ mutter-46.3/src/tests/x11-test.sh
 @@ -34,6 +34,9 @@ echo \# Launched with pid $MUTTER2_PID
  MUTTER2_PID=$!
  wait $MUTTER1_PID
@@ -204,48 +179,3 @@ index 59e460fc336..d95b2460f6e 100755
  sleep 2
  
  echo \# Terminating clients > /dev/stderr
--- 
-GitLab
-
-
-From 8e6f18fcaf63968b0a75bf65da0c00473d71acb3 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Jonas=20=C3=85dahl?= <jadahl@gmail.com>
-Date: Mon, 23 Oct 2023 14:47:33 +0800
-Subject: [PATCH 4/4] display: Rename mandatory X11 initialization function
-
-Simply to make it clear that the renamed function is specific to a
-particular X11 initialization mode (mandatory Xwayland), put that in the
-name, so that it's easier to understand when this function is relevant.
----
- src/core/display.c | 8 ++++----
- 1 file changed, 4 insertions(+), 4 deletions(-)
-
-diff --git a/src/core/display.c b/src/core/display.c
-index b16e50e21de..f851f1be372 100644
---- a/src/core/display.c
-+++ b/src/core/display.c
-@@ -897,9 +897,9 @@ meta_display_init_x11 (MetaDisplay         *display,
- }
- 
- static void
--on_x11_initialized (MetaDisplay  *display,
--                    GAsyncResult *result,
--                    gpointer      user_data)
-+on_mandatory_x11_initialized (MetaDisplay  *display,
-+                              GAsyncResult *result,
-+                              gpointer      user_data)
- {
-   g_autoptr (GError) error = NULL;
- 
-@@ -1018,7 +1018,7 @@ meta_display_new (MetaContext  *context,
-       if (x11_display_policy == META_X11_DISPLAY_POLICY_MANDATORY)
-         {
-           meta_display_init_x11 (display, NULL,
--                                 (GAsyncReadyCallback) on_x11_initialized,
-+                                 (GAsyncReadyCallback) on_mandatory_x11_initialized,
-                                  NULL);
-         }
- #endif /* HAVE_XWAYLAND */
--- 
-GitLab
-
diff --git a/mutter-implement-text-input-v1.patch b/mutter-implement-text-input-v1.patch
index 278b226..cbbb08b 100644
--- a/mutter-implement-text-input-v1.patch
+++ b/mutter-implement-text-input-v1.patch
@@ -1,7 +1,8 @@
-From 6b9bbebbdc3a8b35f898a269227f36a36590359e Mon Sep 17 00:00:00 2001
+From 2a94e19b00434fe4d7ab858a6cdcff6364f6e408 Mon Sep 17 00:00:00 2001
 From: Alynx Zhou <alynx.zhou@gmail.com>
 Date: Wed, 15 May 2024 00:07:41 +0800
-Subject: [PATCH] wayland/text-input-v1: Implement basic text-input-v1 support
+Subject: [PATCH 2/2] wayland/text-input-v1: Implement basic text-input-v1
+ support
 
 This commit makes input methods work in text-input-v1 only clients
 (mostly Chromium/Electron based apps with Ozone Wayland), which is
@@ -24,10 +25,10 @@ Closes <https://gitlab.gnome.org/GNOME/mutter/-/issues/3200>.
  create mode 100644 src/wayland/meta-wayland-text-input-v1.c
  create mode 100644 src/wayland/meta-wayland-text-input-v1.h
 
-diff --git a/clutter/clutter/clutter-enums.h b/clutter/clutter/clutter-enums.h
-index 45956bf57..8198e7351 100644
---- a/clutter/clutter/clutter-enums.h
-+++ b/clutter/clutter/clutter-enums.h
+Index: mutter-46.3/clutter/clutter/clutter-enums.h
+===================================================================
+--- mutter-46.3.orig/clutter/clutter/clutter-enums.h
++++ mutter-46.3/clutter/clutter/clutter-enums.h
 @@ -1183,6 +1183,9 @@ typedef enum
    CLUTTER_INPUT_CONTENT_HINT_SENSITIVE_DATA      = 1 << 7,
    CLUTTER_INPUT_CONTENT_HINT_LATIN               = 1 << 8,
@@ -38,11 +39,11 @@ index 45956bf57..8198e7351 100644
  } ClutterInputContentHintFlags;
  
  typedef enum
-diff --git a/src/core/events.c b/src/core/events.c
-index 4261bfb98..35b94e187 100644
---- a/src/core/events.c
-+++ b/src/core/events.c
-@@ -238,6 +238,7 @@ meta_display_handle_event (MetaDisplay        *display,
+Index: mutter-46.3/src/core/events.c
+===================================================================
+--- mutter-46.3.orig/src/core/events.c
++++ mutter-46.3/src/core/events.c
+@@ -238,6 +238,7 @@ meta_display_handle_event (MetaDisplay
  #ifdef HAVE_WAYLAND
    MetaWaylandCompositor *wayland_compositor;
    MetaWaylandTextInput *wayland_text_input = NULL;
@@ -50,7 +51,7 @@ index 4261bfb98..35b94e187 100644
  #endif
  
  #ifdef HAVE_WAYLAND
-@@ -246,6 +247,8 @@ meta_display_handle_event (MetaDisplay        *display,
+@@ -246,6 +247,8 @@ meta_display_handle_event (MetaDisplay
      {
        wayland_text_input =
          meta_wayland_compositor_get_text_input (wayland_compositor);
@@ -59,15 +60,14 @@ index 4261bfb98..35b94e187 100644
      }
  #endif
  
-@@ -287,10 +290,12 @@ meta_display_handle_event (MetaDisplay        *display,
+@@ -287,9 +290,11 @@ meta_display_handle_event (MetaDisplay
      }
  
  #ifdef HAVE_WAYLAND
 -  if (wayland_text_input &&
--      !has_grab &&
-+  if (!has_grab &&
-       !meta_compositor_get_current_window_drag (compositor) &&
+-      !meta_compositor_get_current_window_drag (compositor) &&
 -      meta_wayland_text_input_update (wayland_text_input, event))
++  if (!meta_compositor_get_current_window_drag (compositor) &&
 +      ((wayland_text_input &&
 +        meta_wayland_text_input_update (wayland_text_input, event)) ||
 +       (wayland_text_input_v1 &&
@@ -75,11 +75,11 @@ index 4261bfb98..35b94e187 100644
      return CLUTTER_EVENT_STOP;
  
    if (wayland_compositor)
-diff --git a/src/meson.build b/src/meson.build
-index 3060b2880..12a249c54 100644
---- a/src/meson.build
-+++ b/src/meson.build
-@@ -687,6 +687,8 @@ if have_wayland
+Index: mutter-46.3/src/meson.build
+===================================================================
+--- mutter-46.3.orig/src/meson.build
++++ mutter-46.3/src/meson.build
+@@ -688,6 +688,8 @@ if have_wayland
      'wayland/meta-wayland-tablet-tool.h',
      'wayland/meta-wayland-text-input.c',
      'wayland/meta-wayland-text-input.h',
@@ -88,7 +88,7 @@ index 3060b2880..12a249c54 100644
      'wayland/meta-wayland-touch.c',
      'wayland/meta-wayland-touch.h',
      'wayland/meta-wayland-transaction.c',
-@@ -1075,6 +1077,7 @@ if have_wayland
+@@ -1084,6 +1086,7 @@ if have_wayland
      ['single-pixel-buffer', 'staging', 'v1', ],
      ['tablet', 'unstable', 'v2', ],
      ['text-input', 'unstable', 'v3', ],
@@ -96,19 +96,19 @@ index 3060b2880..12a249c54 100644
      ['viewporter', 'stable', ],
      ['xdg-activation', 'staging', 'v1', ],
      ['xdg-foreign', 'unstable', 'v1', ],
-diff --git a/src/wayland/meta-wayland-seat.c b/src/wayland/meta-wayland-seat.c
-index f8d58a612..fca0b346d 100644
---- a/src/wayland/meta-wayland-seat.c
-+++ b/src/wayland/meta-wayland-seat.c
-@@ -228,6 +228,7 @@ default_focus (MetaWaylandEventHandler *handler,
-       meta_wayland_data_device_primary_sync_focus (&seat->primary_data_device);
+Index: mutter-46.3/src/wayland/meta-wayland-seat.c
+===================================================================
+--- mutter-46.3.orig/src/wayland/meta-wayland-seat.c
++++ mutter-46.3/src/wayland/meta-wayland-seat.c
+@@ -229,6 +229,7 @@ default_focus (MetaWaylandEventHandler *
+                                                   surface);
        meta_wayland_tablet_seat_set_pad_focus (seat->tablet_seat, surface);
        meta_wayland_text_input_set_focus (seat->text_input, surface);
 +      /* text-input-v1 will set focused surface on activate. */
      }
  
    if (caps & CLUTTER_INPUT_CAPABILITY_TABLET_TOOL)
-@@ -289,6 +290,8 @@ meta_wayland_seat_new (MetaWaylandCompositor *compositor,
+@@ -290,6 +291,8 @@ meta_wayland_seat_new (MetaWaylandCompos
                                NULL);
  
    seat->text_input = meta_wayland_text_input_new (seat);
@@ -117,7 +117,7 @@ index f8d58a612..fca0b346d 100644
  
    meta_wayland_data_device_init (&seat->data_device, seat);
    meta_wayland_data_device_primary_init (&seat->primary_data_device, seat);
-@@ -337,6 +340,7 @@ meta_wayland_seat_free (MetaWaylandSeat *seat)
+@@ -338,6 +341,7 @@ meta_wayland_seat_free (MetaWaylandSeat
    g_object_unref (seat->touch);
  
    meta_wayland_text_input_destroy (seat->text_input);
@@ -125,7 +125,7 @@ index f8d58a612..fca0b346d 100644
  
    g_free (seat);
  }
-@@ -477,7 +481,10 @@ meta_wayland_seat_handle_event_internal (MetaWaylandSeat    *seat,
+@@ -478,7 +482,10 @@ meta_wayland_seat_handle_event_internal
    if (event_type == CLUTTER_BUTTON_PRESS ||
        event_type == CLUTTER_TOUCH_BEGIN)
      {
@@ -137,7 +137,7 @@ index f8d58a612..fca0b346d 100644
      }
  
    switch (event_type)
-@@ -509,7 +516,8 @@ meta_wayland_seat_handle_event_internal (MetaWaylandSeat    *seat,
+@@ -510,7 +517,8 @@ meta_wayland_seat_handle_event_internal
      case CLUTTER_IM_COMMIT:
      case CLUTTER_IM_DELETE:
      case CLUTTER_IM_PREEDIT:
@@ -147,10 +147,10 @@ index f8d58a612..fca0b346d 100644
          return TRUE;
  
        break;
-diff --git a/src/wayland/meta-wayland-seat.h b/src/wayland/meta-wayland-seat.h
-index 169a92e4e..10633b029 100644
---- a/src/wayland/meta-wayland-seat.h
-+++ b/src/wayland/meta-wayland-seat.h
+Index: mutter-46.3/src/wayland/meta-wayland-seat.h
+===================================================================
+--- mutter-46.3.orig/src/wayland/meta-wayland-seat.h
++++ mutter-46.3/src/wayland/meta-wayland-seat.h
 @@ -30,6 +30,7 @@
  #include "wayland/meta-wayland-pointer.h"
  #include "wayland/meta-wayland-tablet-tool.h"
@@ -167,11 +167,10 @@ index 169a92e4e..10633b029 100644
  
    MetaWaylandInput *input_handler;
    MetaWaylandEventHandler *default_handler;
-diff --git a/src/wayland/meta-wayland-text-input-v1.c b/src/wayland/meta-wayland-text-input-v1.c
-new file mode 100644
-index 000000000..1826a4ff4
+Index: mutter-46.3/src/wayland/meta-wayland-text-input-v1.c
+===================================================================
 --- /dev/null
-+++ b/src/wayland/meta-wayland-text-input-v1.c
++++ mutter-46.3/src/wayland/meta-wayland-text-input-v1.c
 @@ -0,0 +1,859 @@
 +/*
 + * Copyright (C) 2024 SUSE LLC
@@ -1032,11 +1031,10 @@ index 000000000..1826a4ff4
 +
 +  return retval;
 +}
-diff --git a/src/wayland/meta-wayland-text-input-v1.h b/src/wayland/meta-wayland-text-input-v1.h
-new file mode 100644
-index 000000000..79b1c0a54
+Index: mutter-46.3/src/wayland/meta-wayland-text-input-v1.h
+===================================================================
 --- /dev/null
-+++ b/src/wayland/meta-wayland-text-input-v1.h
++++ mutter-46.3/src/wayland/meta-wayland-text-input-v1.h
 @@ -0,0 +1,38 @@
 +/*
 + * Copyright (C) 2024 SUSE LLC
@@ -1076,10 +1074,10 @@ index 000000000..79b1c0a54
 +
 +gboolean meta_wayland_text_input_v1_handle_event (MetaWaylandTextInputV1 *text_input,
 +                                                  const ClutterEvent     *event);
-diff --git a/src/wayland/meta-wayland-versions.h b/src/wayland/meta-wayland-versions.h
-index 900f30d78..a77b81461 100644
---- a/src/wayland/meta-wayland-versions.h
-+++ b/src/wayland/meta-wayland-versions.h
+Index: mutter-46.3/src/wayland/meta-wayland-versions.h
+===================================================================
+--- mutter-46.3.orig/src/wayland/meta-wayland-versions.h
++++ mutter-46.3/src/wayland/meta-wayland-versions.h
 @@ -49,6 +49,7 @@
  #define META_ZXDG_OUTPUT_V1_VERSION         3
  #define META_ZWP_XWAYLAND_KEYBOARD_GRAB_V1_VERSION 1
@@ -1088,11 +1086,11 @@ index 900f30d78..a77b81461 100644
  #define META_WP_VIEWPORTER_VERSION          1
  #define META_ZWP_PRIMARY_SELECTION_V1_VERSION 1
  #define META_WP_PRESENTATION_VERSION        1
-diff --git a/src/wayland/meta-wayland.c b/src/wayland/meta-wayland.c
-index 501b69a91..0114823c1 100644
---- a/src/wayland/meta-wayland.c
-+++ b/src/wayland/meta-wayland.c
-@@ -865,6 +865,7 @@ meta_wayland_compositor_new (MetaContext *context)
+Index: mutter-46.3/src/wayland/meta-wayland.c
+===================================================================
+--- mutter-46.3.orig/src/wayland/meta-wayland.c
++++ mutter-46.3/src/wayland/meta-wayland.c
+@@ -865,6 +865,7 @@ meta_wayland_compositor_new (MetaContext
    meta_wayland_keyboard_shortcuts_inhibit_init (compositor);
    meta_wayland_surface_inhibit_shortcuts_dialog_init ();
    meta_wayland_text_input_init (compositor);
@@ -1100,7 +1098,7 @@ index 501b69a91..0114823c1 100644
    meta_wayland_init_presentation_time (compositor);
    meta_wayland_activation_init (compositor);
    meta_wayland_transaction_init (compositor);
-@@ -1124,6 +1125,12 @@ meta_wayland_compositor_get_text_input (MetaWaylandCompositor *compositor)
+@@ -1124,6 +1125,12 @@ meta_wayland_compositor_get_text_input (
    return compositor->seat->text_input;
  }
  
@@ -1113,10 +1111,10 @@ index 501b69a91..0114823c1 100644
  static void
  meta_wayland_compositor_update_focus (MetaWaylandCompositor *compositor,
                                        MetaWindow            *window)
-diff --git a/src/wayland/meta-wayland.h b/src/wayland/meta-wayland.h
-index 0a0476eba..c23e82cdc 100644
---- a/src/wayland/meta-wayland.h
-+++ b/src/wayland/meta-wayland.h
+Index: mutter-46.3/src/wayland/meta-wayland.h
+===================================================================
+--- mutter-46.3.orig/src/wayland/meta-wayland.h
++++ mutter-46.3/src/wayland/meta-wayland.h
 @@ -26,6 +26,7 @@
  #include "meta/types.h"
  #include "meta/meta-wayland-compositor.h"
@@ -1125,7 +1123,7 @@ index 0a0476eba..c23e82cdc 100644
  #include "wayland/meta-wayland-types.h"
  
  META_EXPORT_TEST
-@@ -88,6 +89,7 @@ void                    meta_wayland_compositor_schedule_surface_association (Me
+@@ -88,6 +89,7 @@ void                    meta_wayland_com
                                                                                MetaWindow            *window);
  
  MetaWaylandTextInput *  meta_wayland_compositor_get_text_input (MetaWaylandCompositor *compositor);
@@ -1133,6 +1131,3 @@ index 0a0476eba..c23e82cdc 100644
  
  #ifdef HAVE_XWAYLAND
  void                    meta_wayland_compositor_notify_surface_id (MetaWaylandCompositor *compositor,
--- 
-2.45.0
-
diff --git a/mutter-window-actor-Special-case-shaped-Java-windows.patch b/mutter-window-actor-Special-case-shaped-Java-windows.patch
index 97f2872..0b0d790 100644
--- a/mutter-window-actor-Special-case-shaped-Java-windows.patch
+++ b/mutter-window-actor-Special-case-shaped-Java-windows.patch
@@ -13,11 +13,11 @@ by special-casing shaped Java windows.
  src/x11/window-x11.c                   | 9 +++++++++
  3 files changed, 19 insertions(+)
 
-diff --git a/src/compositor/meta-window-actor-x11.c b/src/compositor/meta-window-actor-x11.c
-index 19827af331..7d5e46ac75 100644
---- a/src/compositor/meta-window-actor-x11.c
-+++ b/src/compositor/meta-window-actor-x11.c
-@@ -424,6 +424,14 @@ has_shadow (MetaWindowActorX11 *actor_x11)
+Index: mutter-46.3/src/compositor/meta-window-actor-x11.c
+===================================================================
+--- mutter-46.3.orig/src/compositor/meta-window-actor-x11.c
++++ mutter-46.3/src/compositor/meta-window-actor-x11.c
+@@ -424,6 +424,14 @@ has_shadow (MetaWindowActorX11 *actor_x1
     */
    if (window->has_custom_frame_extents)
      return FALSE;
@@ -32,11 +32,11 @@ index 19827af331..7d5e46ac75 100644
  
    /*
     * Generate shadows for all other windows.
-diff --git a/src/x11/window-x11-private.h b/src/x11/window-x11-private.h
-index c947744ee5..cb862f0d72 100644
---- a/src/x11/window-x11-private.h
-+++ b/src/x11/window-x11-private.h
-@@ -125,6 +125,8 @@ gboolean meta_window_x11_has_pointer (MetaWindow *window);
+Index: mutter-46.3/src/x11/window-x11-private.h
+===================================================================
+--- mutter-46.3.orig/src/x11/window-x11-private.h
++++ mutter-46.3/src/x11/window-x11-private.h
+@@ -125,6 +125,8 @@ gboolean meta_window_x11_has_pointer (Me
  gboolean meta_window_x11_same_application (MetaWindow *window,
                                             MetaWindow *other_window);
  
@@ -45,11 +45,11 @@ index c947744ee5..cb862f0d72 100644
  void meta_window_x11_shutdown_group (MetaWindow *window);
  
  META_EXPORT
-diff --git a/src/x11/window-x11.c b/src/x11/window-x11.c
-index 745c45db18..83cdd2e420 100644
---- a/src/x11/window-x11.c
-+++ b/src/x11/window-x11.c
-@@ -2585,6 +2585,15 @@ meta_window_x11_update_shape_region (MetaWindow *window)
+Index: mutter-46.3/src/x11/window-x11.c
+===================================================================
+--- mutter-46.3.orig/src/x11/window-x11.c
++++ mutter-46.3/src/x11/window-x11.c
+@@ -2582,6 +2582,15 @@ meta_window_x11_update_shape_region (Met
    meta_window_set_shape_region (window, region);
  }
  
@@ -65,7 +65,3 @@ index 745c45db18..83cdd2e420 100644
  /* Generally meta_window_x11_same_application() is a better idea
   * of "sameness", since it handles the case where multiple apps
   * want to look like the same app or the same app wants to look
--- 
-2.43.2
-
-
diff --git a/mutter.changes b/mutter.changes
index 8dde097..a641871 100644
--- a/mutter.changes
+++ b/mutter.changes
@@ -1,3 +1,22 @@
+-------------------------------------------------------------------
+Sun Jun 30 08:50:32 UTC 2024 - Bjørn Lie <bjorn.lie@gmail.com>
+
+- Update to version 46.3:
+  + Fix performance issues with second virtual monitor
+  + Fix missing unmap animation of some windows
+  + Fix placement/resizing regression
+  + Fix possible out of sync primary selections and clipboard
+  + Fix ibus support in popups
+  + Fix hardware accelerated rendering when headless
+  + Add back support for legacy X11 cursor themes
+  + Fix preedit offsets
+  + Use character offsets to specify surrounding text
+  + Don't force titlebar on screen on all interactive resizes
+  + Fixed crashes
+  + Misc. bug fixes and cleanups
+  + Updated translations.
+- Rebase patches with quilt.
+
 -------------------------------------------------------------------
 Mon May 27 07:13:01 UTC 2024 - Dominique Leuenberger <dimstar@opensuse.org>
 
diff --git a/mutter.obsinfo b/mutter.obsinfo
index 9ac3081..2ec8c9b 100644
--- a/mutter.obsinfo
+++ b/mutter.obsinfo
@@ -1,4 +1,4 @@
 name: mutter
-version: 46.2
-mtime: 1716654802
-commit: 02050414855b370dbf2b08a971c8b332f7b3c9f4
+version: 46.3
+mtime: 1719689543
+commit: 3998f8a422e89c6a64a79e2ce23f9389c0feb7f9
diff --git a/mutter.spec b/mutter.spec
index 06b99cf..05eca9d 100644
--- a/mutter.spec
+++ b/mutter.spec
@@ -22,7 +22,7 @@
 %define api_minor 0
 %define libmutter libmutter-%{api_major}-%{api_minor}
 Name:           mutter
-Version:        46.2
+Version:        46.3
 Release:        0
 Summary:        Window and compositing manager based on Clutter
 License:        GPL-2.0-or-later