mutter:gnome-44

Last commit made on 2024-02-11
Get this branch:
git clone -b gnome-44 https://git.launchpad.net/mutter

Branch merges

Branch information

Name:
gnome-44
Repository:
lp:mutter

Recent commits

e80c004... by =?utf-8?q?Florian_M=C3=BCllner?= <email address hidden>

Bump version to 44.9

Update NEWS.

927b5e7... by Carlos Garnacho

backends/native: Translate keycodes with xkb_key_state_get_one_sym()

There's two aspects from its documentation
(https://xkbcommon.org/doc/current/group__state.html#gae56031a8c1d48e7802da32f5f39f5738)
affecting us here:

1. "This function is similar to xkb_state_key_get_syms(), but intended for
    users which cannot or do not want to handle the case where multiple
    keysyms are returned (in which case this function is preferred)."

   We are indeed in that field, and have been for a long time.

2. "This function performs Capitalization Keysym Transformations."

   This is unlike the xkb_key_get_syms() function that we use, and
   convenient here for parity with X11 since it behaves exactly that
   way.

Fixes cases where the keysym for some keys is not properly capitalized
when caps lock is toggled, due to the output of capslock+key being
different from shift+key. An example of this is 'é' in french(azerty)
layout (bound to the '2' key). Even though shift+2 outputs '2',
capslock+é should output 'É'.

Closes: https://gitlab.gnome.org/GNOME/mutter/-/issues/3058
(cherry picked from commit 6fe1b3145f840d39240046c0812b1406d23fe569)

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3547>

a836aa5... by =?utf-8?q?Florian_M=C3=BCllner?= <email address hidden>

Bump version to 44.8

Update NEWS.

519de5d... by Sebastian Wick <email address hidden>

Revert "background: Make the final monitor texture RGB instead of RGBA"

This reverts commit 93e938e22fa2cf1c13c3abde49e174f31b3c5f0f.

The alpha channel is required for the background-color to show where the
background-image is not visible.

Closes: https://gitlab.gnome.org/GNOME/mutter/-/issues/1911
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3459>

(cherry picked from commit 5dc92aa134a9b8452faa5628a5d7c28f94067525)

1ad3f73... by Mart Raudsepp <email address hidden>

build: Fix building without wayland headers

Fixes: https://gitlab.gnome.org/GNOME/mutter/-/issues/3046
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3471>

(cherry picked from commit d7db784b5458b46839775163dab4d25bf0328bee)

4a67be6... by Carlos Garnacho

frames: Notify borders on first content resize

This addresses the following race condition:
1. Window+MetaFrame are created non-fullscreen, _MUTTER_FRAME_EXTENTS
   is initialized through widget measuring, accounting for frame.
2. Window and MetaFrame become fullscreen.
3. MetaFrameContent gets first size allocation, already fullscreen.
4. Borders were initialized to 0,0,0,0, become set to 0,0,0,0 correctly
   reflecting fullscreen, however notify::borders is not emitted.
5. _MUTTER_FRAME_EXTENTS stays accounting for the frame extents.

It sounds sensible to have the borders initialized to a meaningful value,
so account for the first time the border would be set due to the content
being (re)sized, and let this first value trigger notify::borders resulting
in _MUTTER_FRAME_EXTENTS updates.

Since all later _MUTTER_FRAME_EXTENTS changes happen through content
resizes, we only have to cater for this initial handover between the
frame/content initialization paths done through widget measuring and
the later paths done through MetaFrameContent resizes.

Closes: https://gitlab.gnome.org/GNOME/mutter/-/issues/2937
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3476>

(cherry picked from commit 4f68713020cbb4eefbcd4e134480255ba4a43643)

140471f... by Ivan Molodetskikh

clutter/pick-stack: Add an allocation check to calculate_clear_area ()

We might pick an actor that needs relayout. I've seen this happen inside
hiding / unmapping in particular. In this case, calculate_clear_area ()
will call clutter_actor_get_abs_allocation_vertices () which in turn
will force a relayout. However, this is not what we want, because:

1. We don't want to run layout during picking.
2. If the actor needs an allocation, then the pick stack could not have
   used an up-to-date allocation, because it is not computed. Therefore
   this clear area would use a potentially completely different
   allocation than the one stored in the pick stack.

Thankfully, clear area seems to be used as a cache/optimization, so
let's just avoid computing it if the actor is not allocated.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3425>

(cherry picked from commit edbc9a20863fd226e377787f4e75c32d2e359399)

fa10ce7... by Sebastian Keller <email address hidden>

clutter/actor: Don't write uninitialized out values on failed transform

clutter_actor_get_transformed_position() would write the uninitialized
values of v2 when clutter_actor_apply_transform_to_point() fails in
_clutter_actor_fully_transform_vertices() because the actor has not been
added to the stage yet.

When called from JS this would overwrite the zero initialized values
passed in from gjs. If the uninitialized values now happen to correspond
to one of the NaN float values used by mozjs to represent a pointer
type, this would lead to seemingly random crashes in mozjs code later
on.

Avoid this by using _clutter_actor_fully_transform_vertices() directly,
which allows us to check if it failed.

Related: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/issues/469
Related: https://gitlab.gnome.org/GNOME/gjs/-/issues/591
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3453>

(cherry picked from commit c86d8a23c3464f75b976af915f0926b5dfc10241)

b9207c2... by =?utf-8?q?Florian_M=C3=BCllner?= <email address hidden>

Bump version to 44.7

Update NEWS.

1864006... by Sebastian Wick <email address hidden>

core/window: Propagate focus appearance to all ancestors

The loop in meta_window_propagate_focus_appearance breaks if any
ancestor has attached_focus_window == focus_window but further ancestors
might still have a different attached_focus_window.

Continue the loop until the root ancestor instead.

Closes: https://gitlab.gnome.org/GNOME/mutter/-/issues/2913
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3356>

(cherry picked from commit 4e088cac0e64f58967cca2365287f1edf2680128)