Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package mutter for openSUSE:Factory checked in at 2026-02-12 17:25:14 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/mutter (Old) and /work/SRC/openSUSE:Factory/.mutter.new.1977 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "mutter" Thu Feb 12 17:25:14 2026 rev:262 rq:1332481 version:49.4 Changes: -------- --- /work/SRC/openSUSE:Factory/mutter/mutter.changes 2026-01-26 11:00:33.313502266 +0100 +++ /work/SRC/openSUSE:Factory/.mutter.new.1977/mutter.changes 2026-02-12 17:25:27.946451143 +0100 @@ -1,0 +2,12 @@ +Tue Feb 10 22:57:18 UTC 2026 - Bjørn Lie <[email protected]> + +- Update to version 49.4: + + Fix applying initial display scaling on xorg + + Disable tone mapping with HDR + + Allow creating uninhibitable idle watches + + Fix screen sharing of monitors with no framerate + + Fixed crashes + + Misc. bug fixes and cleanups + + Updated translations. + +------------------------------------------------------------------- Old: ---- mutter-49.3.obscpio New: ---- mutter-49.4.obscpio ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ mutter.spec ++++++ --- /var/tmp/diff_new_pack.dWhMd0/_old 2026-02-12 17:25:29.090499677 +0100 +++ /var/tmp/diff_new_pack.dWhMd0/_new 2026-02-12 17:25:29.090499677 +0100 @@ -23,7 +23,7 @@ %define libmutter libmutter-%{api_major}-%{api_minor} Name: mutter -Version: 49.3 +Version: 49.4 Release: 0 Summary: Window and compositing manager based on Clutter License: GPL-2.0-or-later ++++++ _service ++++++ --- /var/tmp/diff_new_pack.dWhMd0/_old 2026-02-12 17:25:29.130501374 +0100 +++ /var/tmp/diff_new_pack.dWhMd0/_new 2026-02-12 17:25:29.130501374 +0100 @@ -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">49.3</param> + <param name="revision">49.4</param> <param name="versionformat">@PARENT_TAG@+@TAG_OFFSET@</param> <param name="versionrewrite-pattern">(.*)\+0</param> <param name="versionrewrite-replacement">\1</param> ++++++ mutter-49.3.obscpio -> mutter-49.4.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mutter-49.3/NEWS new/mutter-49.4/NEWS --- old/mutter-49.3/NEWS 2026-01-14 20:47:34.000000000 +0100 +++ new/mutter-49.4/NEWS 2026-02-10 14:40:27.000000000 +0100 @@ -1,3 +1,19 @@ +49.4 +==== +* Fix applying initial display scaling on xorg [mohansur; !4834, !4876] +* Disable tone mapping with HDR [Michel; !4902] +* Allow creating uninhibitable idle watches [Sebastian; !4422] +* Fix screen sharing of monitors with no framerate [Jonas; !4881] +* Fixed crashes [Jonas, Carlos; !4843, !4886] +* Misc. bug fixes and cleanups [Robert; !4878] + +Contributors: + Michel Dänzer, Carlos Garnacho, Sebastian Keller, Robert Mader, mohansur, + Jonas Ådahl + +Translators: + Antonio Marin [ro], Andika Triwidada [id], Daniel Rusek [cs] + 49.3 ==== * Fix direct scanout on drivers without explicit modifiers [Mario; !4776] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mutter-49.3/clutter/clutter/clutter-color-state-params.c new/mutter-49.4/clutter/clutter/clutter-color-state-params.c --- old/mutter-49.3/clutter/clutter/clutter-color-state-params.c 2026-01-14 20:47:34.000000000 +0100 +++ new/mutter-49.4/clutter/clutter/clutter-color-state-params.c 2026-02-10 14:40:27.000000000 +0100 @@ -563,6 +563,10 @@ target_lum->ref <= target_lum->max) return FALSE; + /* No tone mapping with HDR enabled for now */ + if (target_lum->max > target_lum->ref) + return FALSE; + ratio = (float) lum->max / lum->ref; target_ratio = (float) target_lum->max / target_lum->ref; @@ -715,6 +719,7 @@ "// Returns: tristimulus values ([0,1])\n" "vec3 bt1886_eotf (vec3 color)\n" "{\n" + " color = clamp (color, vec3 (0.0), vec3 (1.0));\n" " return pow (color, vec3 (2.4));\n" "}\n" "\n" @@ -729,6 +734,7 @@ "// Returns: Normalized ([0,1]) electrical signal value\n" "vec3 bt1886_inv_eotf (vec3 color)\n" "{\n" + " color = clamp (color, vec3 (0.0), vec3 (1.0));\n" " return pow (color, vec3 (1.0 / 2.4));\n" "}\n" "\n" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mutter-49.3/meson.build new/mutter-49.4/meson.build --- old/mutter-49.3/meson.build 2026-01-14 20:47:34.000000000 +0100 +++ new/mutter-49.4/meson.build 2026-02-10 14:40:27.000000000 +0100 @@ -1,5 +1,5 @@ project('mutter', 'c', - version: '49.3', + version: '49.4', meson_version: '>= 1.5.0', license: 'GPL-2.0-or-later', ) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mutter-49.3/po/cs.po new/mutter-49.4/po/cs.po --- old/mutter-49.3/po/cs.po 2026-01-14 20:47:34.000000000 +0100 +++ new/mutter-49.4/po/cs.po 2026-02-10 14:40:27.000000000 +0100 @@ -12,8 +12,8 @@ msgstr "" "Project-Id-Version: mutter\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/mutter/issues/\n" -"POT-Creation-Date: 2025-08-21 19:45+0000\n" -"PO-Revision-Date: 2025-08-22 11:56+0200\n" +"POT-Creation-Date: 2026-01-14 16:17+0000\n" +"PO-Revision-Date: 2026-02-05 00:18+0100\n" "Last-Translator: Daniel Rusek <[email protected]>\n" "Language-Team: čeština <[email protected]>\n" "Language: cs\n" @@ -21,7 +21,7 @@ "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -"X-Generator: Poedit 3.6\n" +"X-Generator: Poedit 3.8\n" "X-Project-Style: gnome\n" #: data/50-mutter-navigation.xml:6 @@ -415,7 +415,7 @@ "restart. • „kms-modifiers“ – přiměje mutter, aby umožnil alokování " "výstupních vyrovnávacích pamětí s výslovně určenými modifikátory, pokud to " "podporuje ovladač. Vyžaduje restart. • „autoclose-xwayland“ – automaticky " -"ukončí Xwayland, když se ukončí všichny související klienti X11. Vyžaduje " +"ukončí Xwayland, když se ukončí všichni související klienti X11. Vyžaduje " "restart. • „variable-refresh-rate“ – přiměje mutter, aby v případě potřeby " "umožnil dynamicky upravovat obnovovací frekvenci monitoru, pokud je to " "podporováno monitorem, GPU a ovladačem DRM. Konfigurovatelné v Nastavení. " @@ -713,7 +713,7 @@ msgid "About Mutter Development Kit" msgstr "O aplikaci Vývojové prostředí Mutteru" -#: mdk/mdk-monitor.c:672 +#: mdk/mdk-monitor.c:674 msgid "Failed to create monitor" msgstr "Selhalo vytvoření monitoru" @@ -748,11 +748,11 @@ msgid "Bell event" msgstr "Událost zvonku" -#: src/core/display.c:741 +#: src/core/display.c:742 msgid "Privacy Screen Enabled" msgstr "Soukromí obrazovky zapnuto" -#: src/core/display.c:742 +#: src/core/display.c:743 msgid "Privacy Screen Disabled" msgstr "Soukromí obrazovky vypnuto" @@ -852,7 +852,7 @@ msgid "Mutter plugin to use" msgstr "Zásuvný modul Mutter, který se má použít" -#: src/core/prefs.c:1869 +#: src/core/prefs.c:1874 #, c-format msgid "Workspace %d" msgstr "Plocha %d" @@ -870,7 +870,7 @@ msgid "Mode Switch: Mode %d" msgstr "Přepínač režimu: režim %d" -#: src/x11/meta-x11-display.c:855 +#: src/x11/meta-x11-display.c:844 #, c-format msgid "" "Display “%s” already has a window manager; try using the --replace option to " @@ -879,19 +879,19 @@ "Displej „%s“ již správce oken má; zkuste prosím nahradit aktuálního správce " "oken pomocí přepínače --replace." -#: src/x11/meta-x11-display.c:1240 +#: src/x11/meta-x11-display.c:1229 #, c-format msgid "Failed to open X Window System display “%s”" msgstr "Selhalo otevření systémového displeje X Window „%s“" -#: src/x11/meta-x11-display.c:1473 +#: src/x11/meta-x11-display.c:1460 #, c-format msgid "Screen %d on display “%s” is invalid" msgstr "Obrazovka %d na displeji „%s“ je neplatná" #. This probably means that a non-WM compositor like xcompmgr is running; #. * we have no way to get it to exit -#: src/x11/meta-x11-display.c:2801 +#: src/x11/meta-x11-display.c:2788 #, c-format msgid "" "Another compositing manager is already running on screen %i on display “%s”." @@ -902,7 +902,7 @@ msgid "Format %s not supported" msgstr "Formát %s není podporován" -#: src/x11/window-props.c:564 +#: src/x11/window-props.c:562 #, c-format msgid "%s (on %s)" msgstr "%s (na %s)" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mutter-49.3/po/id.po new/mutter-49.4/po/id.po --- old/mutter-49.3/po/id.po 2026-01-14 20:47:34.000000000 +0100 +++ new/mutter-49.4/po/id.po 2026-02-10 14:40:27.000000000 +0100 @@ -9,10 +9,10 @@ # Kukuh Syafaat <[email protected]>, 2017-2024. msgid "" msgstr "" -"Project-Id-Version: mutter master\n" +"Project-Id-Version: mutter gnome-49\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/mutter/issues/\n" -"POT-Creation-Date: 2025-03-11 00:58+0000\n" -"PO-Revision-Date: 2025-03-12 14:59+0700\n" +"POT-Creation-Date: 2025-12-03 15:57+0000\n" +"PO-Revision-Date: 2026-01-23 19:01+0700\n" "Last-Translator: Andika Triwidada <[email protected]>\n" "Language-Team: Indonesian <[email protected]>\n" "Language: id\n" @@ -20,7 +20,7 @@ "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Poedit 3.5\n" +"X-Generator: Poedit 3.8\n" #: data/50-mutter-navigation.xml:6 msgid "Navigation" @@ -309,12 +309,12 @@ #: data/org.gnome.mutter.gschema.xml.in:50 msgid "" "Determines whether workspaces are managed dynamically or whether there’s a " -"static number of workspaces (determined by the num-workspaces key in org." -"gnome.desktop.wm.preferences)." +"static number of workspaces (determined by the num-workspaces key in " +"org.gnome.desktop.wm.preferences)." msgstr "" "Menentukan apakah ruang kerja dikelola secara dinamis atau apakah ada " -"sejumlah tetap ruang kerja (ditentukan oleh kunci num-workspaces dalam org." -"gnome.desktop.wm.preferences)." +"sejumlah tetap ruang kerja (ditentukan oleh kunci num-workspaces dalam " +"org.gnome.desktop.wm.preferences)." #: data/org.gnome.mutter.gschema.xml.in:59 msgid "Workspaces only on primary" @@ -626,26 +626,118 @@ "+byteswappedclients/-byteswappedclients untuk mengontrol pengaturan " "tersebut. Xwayland perlu dimulai ulang agar pengaturan ini berlaku." -#: src/backends/meta-monitor.c:266 +#: mdk/mdk-launcher-adder.c:451 mdk/mdk-launcher-adder.ui:22 +msgid "Application" +msgstr "Aplikasi" + +#: mdk/mdk-launcher-adder.c:456 mdk/mdk-launcher-adder.ui:23 +msgid "Executable" +msgstr "Executable" + +#: mdk/mdk-launcher-adder.ui:3 +msgid "Add Launcher" +msgstr "Tambahkan Peluncur" + +#: mdk/mdk-launcher-adder.ui:15 +msgid "Launcher" +msgstr "Peluncur" + +#: mdk/mdk-launcher-adder.ui:18 +msgid "Type" +msgstr "Tipe" + +#: mdk/mdk-launcher-adder.ui:38 mdk/mdk-launchers-editor.ui:22 +msgid "Add" +msgstr "Tambah" + +#: mdk/mdk-launcher-entry.c:198 +msgid "Run" +msgstr "Jalankan" + +#: mdk/mdk-launcher-entry.ui:12 +msgid "Delete" +msgstr "Hapus" + +#: mdk/mdk-launcher-entry.ui:20 +msgid "Action" +msgstr "Aksi" + +#: mdk/mdk-launchers-editor.ui:3 +msgid "Edit Launchers" +msgstr "Sunting Peluncur" + +#: mdk/mdk-launchers-editor.ui:16 +msgid "Launchers" +msgstr "Peluncur" + +#: mdk/mdk-main-window.ui:7 +msgid "_Input" +msgstr "_Masukan" + +#: mdk/mdk-main-window.ui:9 +msgid "_Emulate touch" +msgstr "_Emulasikan sentuhan" + +#: mdk/mdk-main-window.ui:13 +msgid "_Inhibit system shortcuts" +msgstr "Cegah p_intasan sistem" + +#: mdk/mdk-main-window.ui:20 +msgid "_Launchers" +msgstr "Pe_luncur" + +#: mdk/mdk-main-window.ui:24 +msgid "_Edit launchers" +msgstr "Sunting p_eluncur" + +#: mdk/mdk-main-window.ui:31 +msgid "_About Mutter Development Kit" +msgstr "Tent_ang Kit Pengembangan Mutter" + +#: mdk/mdk-main-window.ui:37 mdk/mdk-main.c:56 +msgid "Mutter Development Kit" +msgstr "Kit Pengembangan Mutter" + +#: mdk/mdk-main-window.ui:47 +msgid "Main Menu" +msgstr "Menu Utama" + +#: mdk/mdk-main.c:49 +msgid "The Mutter Team" +msgstr "Tim Mutter" + +#: mdk/mdk-main.c:62 +msgid "Mutter software development kit" +msgstr "Kit pengembangan perangkat lunak Mutter" + +#: mdk/mdk-main.c:65 +msgid "About Mutter Development Kit" +msgstr "Tentang Kit Pengembangan Mutter" + +#: mdk/mdk-monitor.c:674 +msgid "Failed to create monitor" +msgstr "Gagal membuat pemantau" + +#: src/backends/meta-monitor.c:274 msgid "Built-in display" msgstr "Tampilan bawaan" -#: src/backends/meta-monitor.c:293 +#: src/backends/meta-monitor.c:301 msgid "Unknown" msgstr "Tak Dikenal" -#: src/backends/meta-monitor.c:295 +#: src/backends/meta-monitor.c:303 msgid "Unknown Display" msgstr "Tampilan Tak Dikenal" -#: src/backends/meta-monitor.c:303 +#: src/backends/meta-monitor.c:311 #, c-format msgctxt "" "This is a monitor vendor name, followed by a size in inches, like 'Dell 15\"'" msgid "%s %s" msgstr "%s %s" -#: src/backends/meta-monitor.c:311 +#: src/backends/meta-monitor.c:319 #, c-format msgctxt "" "This is a monitor vendor name followed by product/model name where size in " @@ -653,70 +745,62 @@ msgid "%s %s" msgstr "%s %s" -#: src/core/bell.c:193 +#: src/core/bell.c:237 msgid "Bell event" msgstr "Bel peristiwa" -#: src/core/display.c:741 +#: src/core/display.c:742 msgid "Privacy Screen Enabled" msgstr "Layar Privasi Diaktifkan" -#: src/core/display.c:742 +#: src/core/display.c:743 msgid "Privacy Screen Disabled" msgstr "Layar Privasi Dinonaktifkan" -#: src/core/meta-context-main.c:621 +#: src/core/meta-context-main.c:630 msgid "Replace the running window manager" msgstr "Mengganti manajer jendela yang tengah berjalan" -#: src/core/meta-context-main.c:627 +#: src/core/meta-context-main.c:636 msgid "X Display to use" msgstr "Tampilan X yang digunakna" -#: src/core/meta-context-main.c:633 -msgid "Disable connection to session manager" -msgstr "Menonaktifkan koneksi ke manajer sesi" - -#: src/core/meta-context-main.c:639 -msgid "Specify session management ID" -msgstr "Tentukan kode pengaturan sesi" - -#: src/core/meta-context-main.c:645 -msgid "Initialize session from savefile" -msgstr "Aktifkan sesi dari berkas simpanan" - -#: src/core/meta-context-main.c:651 +#: src/core/meta-context-main.c:642 msgid "Make X calls synchronous" msgstr "Buat panggilan X selaras" -#: src/core/meta-context-main.c:659 +#: src/core/meta-context-main.c:650 msgid "Run as a wayland compositor" msgstr "Jalankan sebagai kompositor wayland" -#: src/core/meta-context-main.c:666 +#: src/core/meta-context-main.c:657 msgid "Run as a nested compositor" msgstr "Jalankan sebagai kompositor bersarang" -#: src/core/meta-context-main.c:672 +#: src/core/meta-context-main.c:665 msgid "Run wayland compositor without starting Xwayland" msgstr "Jalankan kompositor wayland tanpa memmulai Xwayland" -#: src/core/meta-context-main.c:679 +#: src/core/meta-context-main.c:672 msgid "Specify Wayland display name to use" msgstr "Tentukan nama tampilan Wayland yang akan digunakan" -#: src/core/meta-context-main.c:687 +#: src/core/meta-context-main.c:680 msgid "Run as a full display server, rather than nested" msgstr "Jalankan sebagai peladen tampilan penuh, ketimbang tampilan bersarang" -#: src/core/meta-context-main.c:692 +#: src/core/meta-context-main.c:685 msgid "Run as a headless display server" msgstr "Jalankan sebagai peladen tampilan tanpa kepala (headless)" -#: src/core/meta-context-main.c:697 +#: src/core/meta-context-main.c:690 msgid "Add persistent virtual monitor (WxH or WxH@R)" msgstr "Tambah monitor virtual persisten (WxH atau WxH@R)" +#: src/core/meta-context-main.c:697 +msgid "Run development kit" +msgstr "Jalankan kit pengembangan" + #: src/core/meta-context-main.c:709 msgid "Run with X11 backend" msgstr "Jalankan dengan backend X11" @@ -732,7 +816,7 @@ #. TRANSLATORS: This string refers to a button that switches between #. * different modes in that button group. #. -#: src/core/meta-pad-action-mapper.c:552 +#: src/core/meta-pad-action-mapper.c:615 #, c-format msgid "Mode Switch (Group %d)" msgstr "Beralih Mode: (Grup %d)" @@ -740,7 +824,7 @@ #. TRANSLATORS: This string refers to a button that switches between #. * different modes. #. -#: src/core/meta-pad-action-mapper.c:559 +#: src/core/meta-pad-action-mapper.c:622 #, c-format msgid "Mode Switch" msgstr "Beralih Mode" @@ -748,11 +832,11 @@ #. TRANSLATORS: This string refers to an action, cycles drawing tablets' #. * mapping through the available outputs. #. -#: src/core/meta-pad-action-mapper.c:582 +#: src/core/meta-pad-action-mapper.c:645 msgid "Switch monitor" msgstr "Berpindah monitor" -#: src/core/meta-pad-action-mapper.c:584 +#: src/core/meta-pad-action-mapper.c:647 msgid "Show on-screen help" msgstr "Tampilkan bantuan pada layar" @@ -769,12 +853,12 @@ msgid "Mutter plugin to use" msgstr "Pengaya Mutter yang dipakai" -#: src/core/prefs.c:1869 +#: src/core/prefs.c:1874 #, c-format msgid "Workspace %d" msgstr "Area kerja %d" -#: src/core/util.c:140 +#: src/core/util.c:150 msgid "Mutter was compiled without support for verbose mode" msgstr "Muter dikompilasi tanpa dukungan mode riuh" @@ -782,12 +866,12 @@ msgid "Workspace switched" msgstr "Area kerja dialihkan" -#: src/wayland/meta-wayland-tablet-pad.c:532 +#: src/wayland/meta-wayland-tablet-pad.c:558 #, c-format msgid "Mode Switch: Mode %d" msgstr "Tukar Mode: Mode %d" -#: src/x11/meta-x11-display.c:858 +#: src/x11/meta-x11-display.c:844 #, c-format msgid "" "Display “%s” already has a window manager; try using the --replace option to " @@ -796,19 +880,19 @@ "Tampilan \"%s\" sudah memiliki manajer jendela; cobalah gunakan pilihan --" "replace untuk mengganti manajer jendela saat ini." -#: src/x11/meta-x11-display.c:1243 +#: src/x11/meta-x11-display.c:1229 #, c-format msgid "Failed to open X Window System display “%s”" msgstr "Gagal membuka tampilan X Window System \"%s\"" -#: src/x11/meta-x11-display.c:1476 +#: src/x11/meta-x11-display.c:1460 #, c-format msgid "Screen %d on display “%s” is invalid" msgstr "Layar %d pada tampilan \"%s\" tidak valid" #. This probably means that a non-WM compositor like xcompmgr is running; #. * we have no way to get it to exit -#: src/x11/meta-x11-display.c:2799 +#: src/x11/meta-x11-display.c:2788 #, c-format msgid "" "Another compositing manager is already running on screen %i on display “%s”." @@ -820,7 +904,7 @@ msgid "Format %s not supported" msgstr "Format %s tidak didukung" -#: src/x11/window-props.c:555 +#: src/x11/window-props.c:564 #, c-format msgid "%s (on %s)" msgstr "%s (pada %s)" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mutter-49.3/po/ro.po new/mutter-49.4/po/ro.po --- old/mutter-49.3/po/ro.po 2026-01-14 20:47:34.000000000 +0100 +++ new/mutter-49.4/po/ro.po 2026-02-10 14:40:27.000000000 +0100 @@ -5,14 +5,14 @@ # Adi Roiban https://launchpad.net/~adiroiban, 2008, 2009 # Lucian Adrian Grijincu <[email protected]>, 2011. # Daniel Șerbănescu <daniel [at] serbanescu [dot] dk>, 2015, 2018. -# Antonio Marin <[email protected]>, 2025. +# Antonio Marin <[email protected]>, 2025-2026. # msgid "" msgstr "" "Project-Id-Version: metacity.HEAD.ro\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/mutter/issues/\n" -"POT-Creation-Date: 2025-11-26 19:35+0000\n" -"PO-Revision-Date: 2025-12-02 14:08+0100\n" +"POT-Creation-Date: 2026-01-14 16:17+0000\n" +"PO-Revision-Date: 2026-01-22 11:31+0100\n" "Last-Translator: Antonio Marin <[email protected]>\n" "Language-Team: Romanian <[email protected]>\n" "Language: ro\n" @@ -293,8 +293,7 @@ #: data/org.gnome.mutter.gschema.xml.in:39 msgid "Enable edge tiling when dropping windows on screen edges" -msgstr "" -"Activează plasarea pe margine la așezarea ferestrei pe marginea ecranului" +msgstr "Activează redimensionarea ferestrei la atingerea marginilor ecranului" #: data/org.gnome.mutter.gschema.xml.in:40 msgid "" @@ -377,14 +376,15 @@ #: data/org.gnome.mutter.gschema.xml.in:98 msgid "Place new windows in the center" -msgstr "Plasează ferestre noi în centru" +msgstr "Așează ferestrele noi în centru" #: data/org.gnome.mutter.gschema.xml.in:99 msgid "" "When true, the new windows will always be put in the center of the active " "screen of the monitor." msgstr "" -"Când este adevărat, ferestrele noi vor fi plasate în centrul ecranului activ." +"Când este „true” (adevărat), ferestrele noi vor fi așezate în centrul " +"ecranului activ." #: data/org.gnome.mutter.gschema.xml.in:108 msgid "Enable experimental features" @@ -702,7 +702,7 @@ #: mdk/mdk-main-window.ui:24 msgid "_Edit launchers" -msgstr "_Modifică lansatoare" +msgstr "Modifică lansatoar_e" #: mdk/mdk-main-window.ui:31 msgid "_About Mutter Development Kit" @@ -900,14 +900,14 @@ msgid "Failed to open X Window System display “%s”" msgstr "Nu s-a putut deschide afișajul „%s” al sistemului X Window" -#: src/x11/meta-x11-display.c:1462 +#: src/x11/meta-x11-display.c:1460 #, c-format msgid "Screen %d on display “%s” is invalid" msgstr "Ecranul %d cu afișajul „%s” este greșit" #. This probably means that a non-WM compositor like xcompmgr is running; #. * we have no way to get it to exit -#: src/x11/meta-x11-display.c:2790 +#: src/x11/meta-x11-display.c:2788 #, c-format msgid "" "Another compositing manager is already running on screen %i on display “%s”." @@ -920,7 +920,7 @@ msgid "Format %s not supported" msgstr "Formatul %s nu este acceptat" -#: src/x11/window-props.c:564 +#: src/x11/window-props.c:562 #, c-format msgid "%s (on %s)" msgstr "%s (pe %s)" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mutter-49.3/src/backends/meta-idle-monitor-private.h new/mutter-49.4/src/backends/meta-idle-monitor-private.h --- old/mutter-49.3/src/backends/meta-idle-monitor-private.h 2026-01-14 20:47:34.000000000 +0100 +++ new/mutter-49.4/src/backends/meta-idle-monitor-private.h 2026-02-10 14:40:27.000000000 +0100 @@ -35,6 +35,7 @@ guint64 timeout_msec; int idle_source_id; GSource *timeout_source; + gboolean inhibitable; } MetaIdleMonitorWatch; struct _MetaIdleMonitorClass diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mutter-49.3/src/backends/meta-idle-monitor.c new/mutter-49.4/src/backends/meta-idle-monitor.c --- old/mutter-49.3/src/backends/meta-idle-monitor.c 2026-01-14 20:47:34.000000000 +0100 +++ new/mutter-49.4/src/backends/meta-idle-monitor.c 2026-02-10 14:40:27.000000000 +0100 @@ -127,6 +127,9 @@ if (!watch->timeout_source) return; + if (!watch->inhibitable) + return; + if (monitor->inhibited) { g_source_set_ready_time (watch->timeout_source, -1); @@ -255,9 +258,11 @@ guint64 timeout_msec, MetaIdleMonitorWatchFunc callback, gpointer user_data, - GDestroyNotify notify) + GDestroyNotify notify, + MetaIdleMonitorWatchFlags flags) { MetaIdleMonitorWatch *watch; + gboolean start_now = !!(flags & META_IDLE_MONITOR_WATCH_FLAGS_START_NOW); watch = g_new0 (MetaIdleMonitorWatch, 1); @@ -267,6 +272,7 @@ watch->user_data = user_data; watch->notify = notify; watch->timeout_msec = timeout_msec; + watch->inhibitable = !(flags & META_IDLE_MONITOR_WATCH_FLAGS_UNINHIBITABLE); if (timeout_msec != 0) { @@ -275,11 +281,12 @@ g_source_set_name (source, "[mutter] Idle monitor"); g_source_set_callback (source, NULL, watch, NULL); - if (!monitor->inhibited) + if (!watch->inhibitable || !monitor->inhibited) { - g_source_set_ready_time (source, - monitor->last_event_time + - timeout_msec * 1000); + int64_t start_time = + start_now ? g_get_monotonic_time () : monitor->last_event_time; + + g_source_set_ready_time (source, start_time + timeout_msec * 1000); } g_source_attach (source, NULL); g_source_unref (source); @@ -310,6 +317,11 @@ * meta_idle_monitor_remove_watch(), or can be used to tell idle time * watches apart if you have more than one. * + * The idle watch is affected by idle inhibitors and takes into account + * the idle time from before the watch was added. + * meta_idle_monitor_add_idle_watch_full() allows creating idle watches + * with different behavior. + * * Also note that this function will only care about positive transitions * (user's idle time exceeding a certain time). If you want to know about * when the user has become active, use @@ -322,6 +334,38 @@ gpointer user_data, GDestroyNotify notify) { + return meta_idle_monitor_add_idle_watch_full (monitor, + interval_msec, + callback, + user_data, + notify, + META_IDLE_MONITOR_WATCH_FLAGS_NONE); +} + +/** + * meta_idle_monitor_add_idle_watch_full: + * @monitor: A #MetaIdleMonitor + * @interval_msec: The idletime interval, in milliseconds + * @callback: (nullable): The callback to call when the user has + * accumulated @interval_msec milliseconds of idle time. + * @user_data: (nullable): The user data to pass to the callback + * @notify: A #GDestroyNotify + * @flags: Flags for the idle watch + * + * Returns: a watch id + * + * This function is identical to meta_idle_monitor_add_idle_watch(), + * with the addition of a flags parameter to modify the behavior + * of the idle watch. + */ +guint +meta_idle_monitor_add_idle_watch_full (MetaIdleMonitor *monitor, + guint64 interval_msec, + MetaIdleMonitorWatchFunc callback, + gpointer user_data, + GDestroyNotify notify, + MetaIdleMonitorWatchFlags flags) +{ MetaIdleMonitorWatch *watch; g_return_val_if_fail (META_IS_IDLE_MONITOR (monitor), 0); @@ -331,7 +375,8 @@ interval_msec, callback, user_data, - notify); + notify, + flags); return watch->id; } @@ -366,7 +411,8 @@ 0, callback, user_data, - notify); + notify, + META_IDLE_MONITOR_WATCH_FLAGS_NONE); return watch->id; } @@ -429,7 +475,7 @@ } else { - if (monitor->inhibited) + if (watch->inhibitable && monitor->inhibited) { g_source_set_ready_time (watch->timeout_source, -1); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mutter-49.3/src/backends/meta-monitor-manager-private.h new/mutter-49.4/src/backends/meta-monitor-manager-private.h --- old/mutter-49.3/src/backends/meta-monitor-manager-private.h 2026-01-14 20:47:34.000000000 +0100 +++ new/mutter-49.4/src/backends/meta-monitor-manager-private.h 2026-02-10 14:40:27.000000000 +0100 @@ -431,3 +431,6 @@ MetaOutput * meta_monitor_manager_find_output (MetaMonitorManager *monitor_manager, MetaOutput *old_output); + +float meta_monitor_manager_derive_configured_global_scale (MetaMonitorManager *manager, + MetaMonitorsConfig *config); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mutter-49.3/src/backends/meta-monitor-manager.c new/mutter-49.4/src/backends/meta-monitor-manager.c --- old/mutter-49.3/src/backends/meta-monitor-manager.c 2026-01-14 20:47:34.000000000 +0100 +++ new/mutter-49.4/src/backends/meta-monitor-manager.c 2026-02-10 14:40:27.000000000 +0100 @@ -295,23 +295,6 @@ } static float -derive_configured_global_scale (MetaMonitorManager *manager, - MetaMonitorsConfig *config) -{ - GList *l; - - for (l = config->logical_monitor_configs; l; l = l->next) - { - MetaLogicalMonitorConfig *monitor_config = l->data; - - if (is_global_scale_matching_in_config (config, monitor_config->scale)) - return monitor_config->scale; - } - - return 1.0; -} - -static float calculate_monitor_scale (MetaMonitorManager *manager, MetaMonitor *monitor) { @@ -405,7 +388,7 @@ g_assert (capabilities & META_MONITOR_MANAGER_CAPABILITY_GLOBAL_SCALE_REQUIRED); if (config) - global_scale = derive_configured_global_scale (manager, config); + global_scale = meta_monitor_manager_derive_configured_global_scale (manager, config); else global_scale = derive_calculated_global_scale (manager); @@ -4711,3 +4694,20 @@ return NULL; } + +float +meta_monitor_manager_derive_configured_global_scale (MetaMonitorManager *manager, + MetaMonitorsConfig *config) +{ + GList *l; + + for (l = config->logical_monitor_configs; l; l = l->next) + { + MetaLogicalMonitorConfig *monitor_config = l->data; + + if (is_global_scale_matching_in_config (config, monitor_config->scale)) + return monitor_config->scale; + } + + return 1.0; +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mutter-49.3/src/backends/meta-screen-cast-stream-src.c new/mutter-49.4/src/backends/meta-screen-cast-stream-src.c --- old/mutter-49.3/src/backends/meta-screen-cast-stream-src.c 2026-01-14 20:47:34.000000000 +0100 +++ new/mutter-49.4/src/backends/meta-screen-cast-stream-src.c 2026-02-10 14:40:27.000000000 +0100 @@ -97,6 +97,13 @@ static guint signals[N_SIGNALS]; +typedef struct _MetaSpaFractionRange +{ + struct spa_fraction def; + struct spa_fraction min; + struct spa_fraction max; +} MetaSpaFractionRange; + typedef struct _MetaPipeWireSource { GSource source; @@ -233,10 +240,11 @@ } static struct spa_pod * -push_format_object (enum spa_video_format format, - uint64_t *modifiers, - int n_modifiers, - gboolean fixate_modifier, +push_format_object (enum spa_video_format format, + uint64_t *modifiers, + int n_modifiers, + gboolean fixate_modifier, + const MetaSpaFractionRange *max_framerate, ...) { struct spa_pod_dynamic_builder pod_builder; @@ -290,7 +298,21 @@ } } - va_start (args, fixate_modifier); + spa_pod_builder_add (&pod_builder.b, + SPA_FORMAT_VIDEO_framerate, + SPA_POD_Fraction (&SPA_FRACTION (0, 1)), + 0); + if (max_framerate) + { + spa_pod_builder_add (&pod_builder.b, + SPA_FORMAT_VIDEO_maxFramerate, + SPA_POD_CHOICE_RANGE_Fraction (&max_framerate->def, + &max_framerate->min, + &max_framerate->max), + 0); + } + + va_start (args, max_framerate); spa_pod_builder_addv (&pod_builder.b, args); va_end (args); return spa_pod_builder_pop (&pod_builder.b, &pod_frame); @@ -1420,9 +1442,12 @@ struct spa_rectangle default_size = DEFAULT_SIZE; struct spa_rectangle min_size = MIN_SIZE; struct spa_rectangle max_size = MAX_SIZE; - struct spa_fraction default_framerate = DEFAULT_FRAME_RATE; - struct spa_fraction min_framerate = MIN_FRAME_RATE; - struct spa_fraction max_framerate = MAX_FRAME_RATE; + MetaSpaFractionRange max_framerate_values = { + .def = DEFAULT_FRAME_RATE, + .min = MIN_FRAME_RATE, + .max = MAX_FRAME_RATE, + }; + MetaSpaFractionRange *max_framerate = &max_framerate_values; struct spa_pod *pod; int width; int height; @@ -1431,14 +1456,21 @@ if (meta_screen_cast_stream_src_get_specs (src, &width, &height, &frame_rate)) { - MetaFraction frame_rate_fraction; + if (G_APPROX_VALUE (frame_rate, 0.0f, FLT_EPSILON)) + { + max_framerate = NULL; + } + else + { + MetaFraction frame_rate_fraction; - frame_rate_fraction = meta_fraction_from_double (frame_rate); + frame_rate_fraction = meta_fraction_from_double (frame_rate); + max_framerate_values.min = SPA_FRACTION (1, 1); + max_framerate_values.max = SPA_FRACTION (frame_rate_fraction.num, + frame_rate_fraction.denom); + max_framerate_values.def = max_framerate_values.max; + } - min_framerate = SPA_FRACTION (1, 1); - max_framerate = SPA_FRACTION (frame_rate_fraction.num, - frame_rate_fraction.denom); - default_framerate = max_framerate; min_size = max_size = default_size = SPA_RECTANGLE (width, height); } @@ -1476,14 +1508,10 @@ pod = push_format_object ( spa_video_formats[i], (uint64_t *) modifiers->data, modifiers->len, FALSE, + max_framerate, SPA_FORMAT_VIDEO_size, SPA_POD_CHOICE_RANGE_Rectangle (&default_size, &min_size, &max_size), - SPA_FORMAT_VIDEO_framerate, SPA_POD_Fraction (&SPA_FRACTION (0, 1)), - SPA_FORMAT_VIDEO_maxFramerate, - SPA_POD_CHOICE_RANGE_Fraction (&default_framerate, - &min_framerate, - &max_framerate), 0); g_ptr_array_add (params, g_steal_pointer (&pod)); } @@ -1491,14 +1519,10 @@ { pod = push_format_object ( spa_video_formats[i], NULL, 0, FALSE, + max_framerate, SPA_FORMAT_VIDEO_size, SPA_POD_CHOICE_RANGE_Rectangle (&default_size, &min_size, &max_size), - SPA_FORMAT_VIDEO_framerate, SPA_POD_Fraction (&SPA_FRACTION (0, 1)), - SPA_FORMAT_VIDEO_maxFramerate, - SPA_POD_CHOICE_RANGE_Fraction (&default_framerate, - &min_framerate, - &max_framerate), 0); g_ptr_array_add (params, g_steal_pointer (&pod)); } @@ -1639,6 +1663,21 @@ return supported != 0; } +static gboolean +did_video_format_changed_for_log (MetaScreenCastStreamSrc *src, + struct spa_video_info_raw *video_format) +{ + MetaScreenCastStreamSrcPrivate *priv = + meta_screen_cast_stream_src_get_instance_private (src); + + return (video_format->size.width != priv->video_format.size.width || + video_format->size.height != priv->video_format.size.height || + video_format->framerate.num != priv->video_format.framerate.num || + video_format->framerate.denom != priv->video_format.framerate.denom || + video_format->max_framerate.num != priv->video_format.max_framerate.num || + video_format->max_framerate.denom != priv->video_format.max_framerate.denom); +} + static void on_stream_param_changed (void *data, uint32_t id, @@ -1649,6 +1688,7 @@ meta_screen_cast_stream_src_get_instance_private (src); MetaScreenCastStreamSrcClass *klass = META_SCREEN_CAST_STREAM_SRC_GET_CLASS (src); + struct spa_video_info_raw video_format = {}; struct spa_pod_dynamic_builder pod_builder; struct spa_pod *pod; struct spa_pod_frame pod_frame; @@ -1662,8 +1702,22 @@ params = g_ptr_array_new_full (16, (GDestroyNotify) free); - spa_format_video_raw_parse (format, - &priv->video_format); + spa_format_video_raw_parse (format, &video_format); + + if (meta_is_topic_enabled (META_DEBUG_SCREEN_CAST) && + did_video_format_changed_for_log (src, &video_format)) + { + meta_topic (META_DEBUG_SCREEN_CAST, + "Video format changed to %dx%d (framerate: %d/%d (max: %d/%d))", + video_format.size.width, + video_format.size.height, + video_format.framerate.num, + video_format.framerate.denom, + video_format.max_framerate.num, + video_format.max_framerate.denom); + } + + priv->video_format = video_format; prop_modifier = spa_pod_find_prop (format, NULL, SPA_FORMAT_VIDEO_modifier); @@ -1724,14 +1778,16 @@ priv->video_format.size.height, &preferred_modifier)) { + MetaSpaFractionRange max_framerate = { + .def = priv->video_format.max_framerate, + .min = MIN_FRAME_RATE, + .max = priv->video_format.max_framerate, + }; pod = push_format_object ( priv->video_format.format, &preferred_modifier, 1, TRUE, + &max_framerate, SPA_FORMAT_VIDEO_size, SPA_POD_Rectangle (&priv->video_format.size), SPA_FORMAT_VIDEO_framerate, SPA_POD_Fraction (&SPA_FRACTION (0, 1)), - SPA_FORMAT_VIDEO_maxFramerate, - SPA_POD_CHOICE_RANGE_Fraction (&priv->video_format.max_framerate, - &MIN_FRAME_RATE, - &priv->video_format.max_framerate), 0); g_ptr_array_add (params, g_steal_pointer (&pod)); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mutter-49.3/src/backends/x11/meta-monitor-manager-xrandr.c new/mutter-49.4/src/backends/x11/meta-monitor-manager-xrandr.c --- old/mutter-49.3/src/backends/x11/meta-monitor-manager-xrandr.c 2026-01-14 20:47:34.000000000 +0100 +++ new/mutter-49.4/src/backends/x11/meta-monitor-manager-xrandr.c 2026-02-10 14:40:27.000000000 +0100 @@ -379,6 +379,30 @@ return FALSE; } +static gboolean +is_scaling_changed (MetaMonitorManager *manager, + MetaMonitorsConfig *config) +{ + GList *l; + float global_scale; + MetaMonitorManagerCapability capabilities; + + capabilities = meta_monitor_manager_get_capabilities (manager); + g_assert (capabilities & META_MONITOR_MANAGER_CAPABILITY_GLOBAL_SCALE_REQUIRED); + + global_scale = meta_monitor_manager_derive_configured_global_scale (manager, config); + + for (l = manager->logical_monitors; l; l = l->next) + { + MetaLogicalMonitor *logical_monitor = l->data; + + if (global_scale != logical_monitor->scale) + return TRUE; + } + + return FALSE; +} + static void apply_crtc_assignments (MetaMonitorManager *manager, gboolean save_timestamp, @@ -650,7 +674,8 @@ (MetaOutputAssignment **) output_assignments->pdata, output_assignments->len); } - else + + if (is_scaling_changed (manager, config)) { meta_monitor_manager_rebuild_derived (manager, config); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mutter-49.3/src/compositor/compositor.c new/mutter-49.4/src/compositor/compositor.c --- old/mutter-49.3/src/compositor/compositor.c 2026-01-14 20:47:34.000000000 +0100 +++ new/mutter-49.4/src/compositor/compositor.c 2026-02-10 14:40:27.000000000 +0100 @@ -696,6 +696,8 @@ G_CALLBACK (on_top_window_actor_destroyed), compositor); } + + meta_display_queue_check_fullscreen (priv->display); } static void diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mutter-49.3/src/meta/meta-idle-monitor.h new/mutter-49.4/src/meta/meta-idle-monitor.h --- old/mutter-49.3/src/meta/meta-idle-monitor.h 2026-01-14 20:47:34.000000000 +0100 +++ new/mutter-49.4/src/meta/meta-idle-monitor.h 2026-02-10 14:40:27.000000000 +0100 @@ -23,6 +23,23 @@ #include "meta/types.h" +/** + * MetaIdleMonitorWatchFlags: + * @META_IDLE_MONITOR_WATCH_FLAGS_NONE: No flag set + * @META_IDLE_MONITOR_WATCH_FLAGS_UNINHIBITABLE: Ignore inhibitors + * @META_IDLE_MONITOR_WATCH_FLAGS_START_NOW: Start idle timer now and ignore any + * previous idle time + * + * Flags affecting the behavior of the idle watch created by + * meta_idle_monitor_add_idle_watch_full(). + */ +typedef enum +{ + META_IDLE_MONITOR_WATCH_FLAGS_NONE = 0, + META_IDLE_MONITOR_WATCH_FLAGS_UNINHIBITABLE = 1 << 0, + META_IDLE_MONITOR_WATCH_FLAGS_START_NOW = 1 << 1, +} MetaIdleMonitorWatchFlags; + #define META_TYPE_IDLE_MONITOR (meta_idle_monitor_get_type ()) META_EXPORT G_DECLARE_FINAL_TYPE (MetaIdleMonitor, meta_idle_monitor, @@ -34,6 +51,14 @@ gpointer user_data); META_EXPORT +guint meta_idle_monitor_add_idle_watch_full (MetaIdleMonitor *monitor, + guint64 interval_msec, + MetaIdleMonitorWatchFunc callback, + gpointer user_data, + GDestroyNotify notify, + MetaIdleMonitorWatchFlags flags); + +META_EXPORT guint meta_idle_monitor_add_idle_watch (MetaIdleMonitor *monitor, guint64 interval_msec, MetaIdleMonitorWatchFunc callback, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mutter-49.3/src/wayland/meta-wayland-popup.c new/mutter-49.4/src/wayland/meta-wayland-popup.c --- old/mutter-49.3/src/wayland/meta-wayland-popup.c 2026-01-14 20:47:34.000000000 +0100 +++ new/mutter-49.4/src/wayland/meta-wayland-popup.c 2026-02-10 14:40:27.000000000 +0100 @@ -86,10 +86,10 @@ META_WAYLAND_POPUP_SURFACE_GET_IFACE (popup_surface)->dismiss (popup_surface); } -static void +static gboolean meta_wayland_popup_surface_finish (MetaWaylandPopupSurface *popup_surface) { - META_WAYLAND_POPUP_SURFACE_GET_IFACE (popup_surface)->finish (popup_surface); + return META_WAYLAND_POPUP_SURFACE_GET_IFACE (popup_surface)->finish (popup_surface); } static MetaWaylandSurface * @@ -212,15 +212,17 @@ void meta_wayland_popup_grab_finish (MetaWaylandPopupGrab *grab) { - MetaWaylandPopup *popup, *tmp; - - wl_list_for_each_safe (popup, tmp, &grab->all_popups, link) + while (!wl_list_empty (&grab->all_popups)) { + MetaWaylandPopup *popup = wl_container_of (grab->all_popups.next, + popup, link); MetaWaylandPopupSurface *popup_surface = popup->popup_surface; meta_wayland_popup_surface_done (popup_surface); meta_wayland_popup_destroy (popup); - meta_wayland_popup_surface_finish (popup_surface); + + if (meta_wayland_popup_surface_finish (popup_surface)) + break; } } @@ -292,9 +294,7 @@ meta_wayland_popup_destroy (popup); - if (wl_list_empty (&popup_grab->all_popups)) - meta_wayland_popup_surface_finish (popup_surface); - else + if (!meta_wayland_popup_surface_finish (popup_surface)) meta_wayland_popup_grab_repick_keyboard_focus (popup_grab); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mutter-49.3/src/wayland/meta-wayland-popup.h new/mutter-49.4/src/wayland/meta-wayland-popup.h --- old/mutter-49.3/src/wayland/meta-wayland-popup.h 2026-01-14 20:47:34.000000000 +0100 +++ new/mutter-49.4/src/wayland/meta-wayland-popup.h 2026-02-10 14:40:27.000000000 +0100 @@ -37,7 +37,7 @@ void (*done) (MetaWaylandPopupSurface *popup_surface); void (*dismiss) (MetaWaylandPopupSurface *popup_surface); - void (*finish) (MetaWaylandPopupSurface *popup_surface); + gboolean (*finish) (MetaWaylandPopupSurface *popup_surface); MetaWaylandSurface *(*get_surface) (MetaWaylandPopupSurface *popup_surface); }; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mutter-49.3/src/wayland/meta-wayland-xdg-shell.c new/mutter-49.4/src/wayland/meta-wayland-xdg-shell.c --- old/mutter-49.3/src/wayland/meta-wayland-xdg-shell.c 2026-01-14 20:47:34.000000000 +0100 +++ new/mutter-49.4/src/wayland/meta-wayland-xdg-shell.c 2026-02-10 14:40:27.000000000 +0100 @@ -1711,7 +1711,7 @@ meta_wayland_xdg_popup_unmap (xdg_popup); } -static void +static gboolean meta_wayland_xdg_popup_finish (MetaWaylandPopupSurface *popup_surface) { MetaWaylandXdgPopup *xdg_popup = META_WAYLAND_XDG_POPUP (popup_surface); @@ -1725,7 +1725,10 @@ { meta_wayland_popup_grab_destroy (xdg_shell_client->popup_grab); xdg_shell_client->popup_grab = NULL; + return TRUE; } + + return FALSE; } static MetaWaylandSurface * diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mutter-49.3/src/x11/window-x11.c new/mutter-49.4/src/x11/window-x11.c --- old/mutter-49.3/src/x11/window-x11.c 2026-01-14 20:47:34.000000000 +0100 +++ new/mutter-49.4/src/x11/window-x11.c 2026-02-10 14:40:27.000000000 +0100 @@ -2087,7 +2087,6 @@ meta_window_x11_constructed (GObject *object) { MetaWindow *window = META_WINDOW (object); - MetaDisplay *display = window->display; MetaWindowX11 *window_x11 = META_WINDOW_X11 (object); MetaWindowX11Private *priv = meta_window_x11_get_instance_private (window_x11); XWindowAttributes attrs = priv->attributes; @@ -2134,12 +2133,6 @@ attrs.border_width, 0, &priv->border_width, NULL); - /* O-R windows bypass mutter window-management path, this ensures - * they get fullscreen checked properly. - */ - if (window->override_redirect) - meta_display_queue_check_fullscreen (display); - g_signal_connect (window, "notify::decorated", G_CALLBACK (meta_window_x11_update_input_region), NULL); ++++++ mutter.obsinfo ++++++ --- /var/tmp/diff_new_pack.dWhMd0/_old 2026-02-12 17:25:32.838658685 +0100 +++ /var/tmp/diff_new_pack.dWhMd0/_new 2026-02-12 17:25:32.862659703 +0100 @@ -1,5 +1,5 @@ name: mutter -version: 49.3 -mtime: 1768420054 -commit: 61659d33d6046c0af99db38c6adb956634c2da04 +version: 49.4 +mtime: 1770730827 +commit: e6379ecf07e7962d796fc057c50d0e6b2d803b7e
