4a6f550acb
We're currently using the hack of telling mutter that our effect is completed (even though it isn't) in order to unfreeze updates of the window actor. This causes a bug with detecting the wl_outputs a window is visible on, because the MetaWindowActor emits its "effects-completed" signal too early, making Mutter update the wl_outputs while we're doing the animation. Now since meta_wayland_actor_surface_is_on_logical_monitor() uses the transformed position and size of the MetaSurfaceActor and is being called right after we setup the animation (but before it actually starts, that happens at the next paint cycle) it will use a "very wrong" rectangle: The transformation has been set to move the actor back to its old position, and while we did already unfreeze updates and called clutter_actor_set_position() in meta_window_actor_sync_actor_geometry(), the actual allocation is not updated yet; this makes clutter_actor_get_transformed_position() return a position including in the new transformation, but not including the new allocation, and the rectangle ends up being moved to the next monitor or completely out of the stage. To fix this issue properly, we need to decouple unfreezing actor updates from emitting the "effects-completed" signal, which is now possible with the new meta_window_actor_freeze() and meta_window_actor_thaw() APIs. So use those new methods to freeze and thaw actor updates ourselves and make sure to call shellwm.completed_size_change() only after the animation has finished. Mutter MR: https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1250 Fixes https://gitlab.gnome.org/GNOME/mutter/-/issues/513 https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1251 |
||
---|---|---|
.gitlab/issue_templates | ||
.gitlab-ci | ||
.settings | ||
data | ||
docs/reference | ||
js | ||
lint | ||
man | ||
meson | ||
po | ||
src | ||
subprojects | ||
tests | ||
tools | ||
.eslintrc.yml | ||
.gitignore | ||
.gitlab-ci.yml | ||
.gitmodules | ||
config.h.meson | ||
COPYING | ||
gnome-shell.doap | ||
HACKING.md | ||
meson_options.txt | ||
meson.build | ||
NEWS | ||
README.md |
GNOME Shell
GNOME Shell provides core user interface functions for the GNOME 3 desktop, like switching to windows and launching applications. GNOME Shell takes advantage of the capabilities of modern graphics hardware and introduces innovative user interface concepts to provide a visually attractive and easy to use experience.
For more information about GNOME Shell, including instructions on how to build GNOME Shell from source and how to get involved with the project, see the project wiki.
Bugs should be reported to the GNOME bug tracking system.
Contributing
To contribute, open merge requests at https://gitlab.gnome.org/GNOME/gnome-shell.
Commit messages should follow the GNOME commit message guidelines. We require an URL to either an issue or a merge request in each commit.
License
GNOME Shell is distributed under the terms of the GNU General Public License, version 2 or later. See the COPYING file for details.