workspaceThumbnail: Pass MetaWindow to _updateDialogPosition
This function was mistakenly called with a MetaWindow as first
argument inside the ::position-changed callback, instead of a
MetaWindowActor as it should.
However, that function quickly grabs the MetaWindow from the
actor, and all calling places have the MetaWindow readily available,
so switch to handing it as first function parameter.
Fixes warnings on ::position-changed, because of the aforementioned
typo.
We may end up with window-added emitted multiple times on the
same window, which results on:
1) Extra clones being created, all taking the same size and
stacking.
2) JS exceptions because handle each clone actor being destroyed
one by one, but all clones already have a NULL source when the
first destroy handler is called, so we step on null objects
inside _computeBoundingBox().
Keep accounting of those windows in order to avoid multiple
additions, which fixes both issues.
keyboard: defer position-changed till we have a rect
Emitting it that soon results in JS warnings, as we don't have
everything in place yet. The position-changed signal will be
emitted from other locations as soon as we have it.
tools: fix XDG desktop syntax in gnome-shell-overrides-migration
Reported by desktop-file-validate:
error: value "True" for boolean key "NoDisplay" in group "Desktop
Entry" contains invalid characters, boolean values must be "false" or
"true"
workspace: Simplify detecting added dialogs after closing a window
When trying to close a window in the overview by clicking the close
button and the window doesn't get closed but a dialog is added to the
window afterwards, we close the overview and show the dialog.
Instead of adding a separate listener for the window-added signal to the
WindowOverlay, let the WindowClones remember that the close button was
pressed and activate themselves if a dialog is added after that.
workspace: Fix infinite loop when finding parent window of dialogs
When a dialog is added to a window while the overview is shown, we get
its parent using get_transient_for() so we can add it to the right
window clone.
If we have multiple layers of dialogs we have to do this recursively
until we find the root ancestor. This case currently results in an
infinite loop: Since parent is always set to the same window, the
while-condition will always be true.
9f436ce...
by
=?utf-8?q?Florian_M=C3=BCllner?= <email address hidden>
data: Fix comment in schema
d908940...
by
=?utf-8?q?Florian_M=C3=BCllner?= <email address hidden>
showOSD: Fix handling of defined 'falsy' parameters
For the OSD, all parameters except for the icon are optional - if the
caller doesn't include the 'label' option, the OSD won't show a label
etc.
While this makes sense for an API, it means that we have to be careful
to correctly differentiate an option that was omitted and an option
that has a 'falsy' value like false or 0.
Unfortunately since commit ccaae5d3c we no longer do, with the result
that OSDs meant for the first monitor will show up on all, and a level
of 0 is presented as no level bar instead of an empty one, whoops.