Commit graph

9445 commits

Author SHA1 Message Date
Philip Chimento
40618b3ee7 init: Improve error message formatting
Instead of manually formatting the error message and stack, use the same
formatting mechanism as we do when displaying errors to the user that
occur while opening extension preferences. This should correctly
indicate where syntax errors from imported modules occur.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3041>
(cherry picked from commit 1692004b6b)
2024-01-06 22:44:07 +01:00
Philip Chimento
070b170f9c scripting: Use logError to format error stack
Instead of manually formatting the error stack, use logError() to
display the error. logError() displays the stack already.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3041>
(cherry picked from commit e3ea12b8d5)
2024-01-06 22:44:07 +01:00
Philip Chimento
2eb54e33c5 dbusServices/extensions: Improve error message formatting
See https://gitlab.gnome.org/GNOME/gjs/-/issues/584 for a user report.

This uses the new formatter added in the previous commit to format
errors in the extension preferences loader.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3041>
(cherry picked from commit e4691d2717)
2024-01-06 22:44:07 +01:00
Philip Chimento
7c0675e2fa main: Improve error formatting in logError()
We override GJS's default logError(). This adds the improved formatting
of error stack traces that gjs-console would otherwise do as part of
logError().

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3041>
(cherry picked from commit e6f35c5e88)
2024-01-06 22:44:07 +01:00
Philip Chimento
8421846cff js: Add utility to improve error message formatting
Previously, when we formatted SyntaxErrors with toString(), they
wouldn't display the file/line/column where the syntax error occurred.
This adds a utility function that performs a more comprehensive
formatting that displays location information for SyntaxErrors, as well
as the .cause property of the error if it is present. This formatting is
equivalent to what we do in gjs-console when logging an error.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3041>
(cherry picked from commit a1a320d3d1)
2024-01-06 22:44:07 +01:00
Philip Chimento
4b0065a058 js: Alphabetize JS resources
These look like they are supposed to be alphabetized, but are not quite.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3041>
(cherry picked from commit 5fe6e5c865)
2024-01-06 22:44:07 +01:00
Jonian Guveli
afe12ba9c4 appMenu: Move setApp to null before destroy
Calling `setApp` after the menu has been destroyed results in error.
Moving the method before `super.destroy()` fixes the issue.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2998>
(cherry picked from commit 6615d69985)
2024-01-06 22:42:45 +01:00
Florian Müllner
b7089e9ed9 animation: Use appropriate spinner asset in light variant
Ideally we would replace the sliced-image based animation with a
themed `process-working-symbolic` icon and rotate it, so the spinner
simply picks up the current foreground color.

Unfortunately the `repeat-count` property does not work for rotations,
so to fix the broken spinner in the light variant
in the meantime, include assets for both variants and swap them
out at runtime.

Not everything in the light variant is actually light (overview,
OSDs, ...), so use a simple heuristic on the text color to decide
which asset to use.

Close https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/6783

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3080>
(cherry picked from commit 1dda339395)
2024-01-06 22:42:35 +01:00
Florian Müllner
e7969b0ea2 animation: Save file and dimensions in properties
The properties passed to the constructor are currently used
directly in anonymous functions. Store them in properties
instead, so they become accessible outside the constructor,
including for changing them.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3080>
(cherry picked from commit 74445249db)
2024-01-06 22:42:27 +01:00
Florian Müllner
7ef77b5e24 main: Override global logError() function
logError() prints an exception with an optional prefix, and is
used fairly commonly through-out the code base.

The problem is that by being defined in gjs, it uses "Gjs" as the
GLib log domain, not our own as expected.

Address this by adding a small override that implements the function
with console.error().

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3072>
(cherry picked from commit dc655b9ed0)
2024-01-06 22:42:00 +01:00
Julian Sparber
5349fc187c panel: Ensure signal is disconnected when the panel is destroyed
This fixes a warning when terminating GNOME Shell

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3064>
(cherry picked from commit b66dee80f6)
2024-01-06 22:41:20 +01:00
Scott Buchanan
1c3089515f screenshot: Allow any enter key activate capture
We currently only consider enter/return on the main keyboard
area, but not on the numpad.

Fix that.

https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/6128

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2777>
(cherry picked from commit 95daa577cf)
2024-01-06 22:40:21 +01:00
Florian Müllner
f913c700ed dbusService: Exempt org.gnome.Shell from sender tracking
If an interface has any signals, we don't want to auto-shutdown
while a caller is still connected to a signal.

Unfortunately we can't tell whether there are any signal connections,
so we track all callers instead, and keep the service alive while
any of them is still on the bus.

For services that we call from gnome-shell itself - like screencasts
or extensions - this has the unintended side effect of effectively
disabling auto-shutdown.

Address this by exempting the org.gnome.Shell name from sender
tracking.

Services that we expect to keep running for the lifetime of the
shell already disable auto-shutdown, so the only downside is a
small startup delay to resolve the well-known shell name.

https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/7250

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3052>
(cherry picked from commit ebe1a4d303)
2024-01-06 22:40:01 +01:00
Florian Müllner
197769ec07 windowPreview: Don't hide overlay while hovering icon
We should treat the icon like we do the caption or close button,
and still consider the preview hovered when the pointer is over
the icon.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3049>
(cherry picked from commit 39d2988865)
2024-01-06 22:39:48 +01:00
Peter Hutterer
09ab8fdcba padOsd: Fix rings and strips event handling
JS ERROR: TypeError: event.get_pad_event_details is not a function
    vfunc_captured_event@resource:///org/gnome/shell/ui/padOsd.js:824:53
    @resource:///org/gnome/shell/ui/init.js:21:20

These were renamed in mutter@97213041e8e7

Fixes https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/7210

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3029>
(cherry picked from commit e367a2713b)
2023-11-30 18:46:14 +01:00
Florian Müllner
8083df5e35 dbusServices/extensions: Only show dialog when loaded
After the port to ESM, an extension's `prefs.js` file is imported
asynchronously. An unintended side effect of that is that we now
show the dialog before anything can be added to the window (either
by the extension, or the fallback error UI).

The delay almost always won't be noticeable to users, but it's
bad practice and prevents extensions from using some API that
only works before the window is realized.

To address the issue, add a `loaded` signal to the dialog that allows
the caller to postpone showing the window until the UI is ready.

Close: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/7201
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3025>
(cherry picked from commit 7f7ae31fa3)
2023-11-30 18:44:58 +01:00
Charles Wong
6040602d5e main: Instantiate EndSessionDialog
Using an exported `init()` function to create the object is an odd
pattern, and not having the object referenced anywhere makes it harder
to access for debugging or extensions.

Just export the `EndSessionDialog` class and instantiate it like we
do for other objects.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2997>
(cherry picked from commit 6ff08fd9bd)
2023-11-30 18:44:58 +01:00
Florian Müllner
a2939f1ece slider: Request a size
Sliders (and level bars) currently don't request any size, so it's
up to the caller (or stylesheet) to explicitly set a size big
enough to fit the bar/handle.

That's rather unexpected, we should request the size we need ourselves.

Closes https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/7133

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2994>
(cherry picked from commit 99d49f787b)
2023-11-30 18:44:58 +01:00
Florian Müllner
be54cc7178 slider: Cache custom style properties
Custom properties are not cached by the theme node itself, so
looking them up repeatedly at every repaint is relatively
expensive.

Avoid this by caching the values ourselves at style changes.

Part-of:
<https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2994>
(cherry picked from commit a6706bd2ca)
2023-11-30 18:44:56 +01:00
Florian Müllner
9ffef40899 barLevel: Cache custom style properties
Custom properties are not cached by the theme node itself, so
looking them up repeatedly at every repaint is relatively
expensive.

Avoid this by caching the values ourselves at style changes.

Part-of:
<https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2994>
(cherry picked from commit a639fb0fc4)
2023-11-30 18:44:09 +01:00
Florian Müllner
5b494fd121 barLevel: Stop capping border-width at 1 pixel
I can't think of a reason why limiting the border to a maximum
would make any sense.

The original intention was probably to set a minimum border width
to avoid having to deal with border/no-border complexity in the code,
but as cairo accepts a line width of 0, it just works.

However limiting the size to the overall height seems reasonable,
as at that size a bigger height and different fill color can
achieve the same effect without requires special handling of
other values like the radius.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2994>
(cherry picked from commit 77a72cec1e)
2023-11-30 18:40:37 +01:00
Florian Müllner
3361e03cc7 status/volume: Always look up device objects
Gvc may clean its device cache after we set up the device menu,
which can lead to failed assertions when using the "old" object
to later switch the device from a callback.

Make sure this doesn't happen by looking up the ID again from
the callback.

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/7173
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3011>
(cherry picked from commit 7a04d92bc0)
2023-11-30 18:39:41 +01:00
Florian Müllner
1fdcd6d5f8 shellDBus: Await Eval() result
The Eval() method currently evaluates the provided string, and
returns the result immediately. This isn't useful when a promise
is returned, which has become much more likely now that accessing
any module requires import().

Simply await the result, to handle both sync and async code.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3021>
(cherry picked from commit f2601e6888)
2023-11-30 18:39:06 +01:00
Sebastian Keller
f43301212d searchController: Use ClutterText::cursor_position instead of position
The deprecated position property has been removed in mutter commit
31849868 in favor of the otherwise identical cursor_position property.

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/7186
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3015>
(cherry picked from commit ee5819f870)
2023-11-30 18:36:11 +01:00
Sebastian Keller
96b3d1890c keyboard: Fix backspace not getting released after deleting preedit
When deleting is toggled while a preedit string is present, this causes
_toggleDelete() to use keyvalPress(). After the entire preedit string
has been deleted, _toggleDelete() will no longer hit the code path that
would call keyvalRelease() due to hasPreedit() now being false.

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/7171
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3009>
(cherry picked from commit 4722dd0d32)
2023-11-30 18:35:37 +01:00
Carlos Garnacho
9cd1346e4b networkAgent: Fetch environment from launch context before spawn_async()
This will fetch the right environment for the launched application,
without using GNOME Shell's environment.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2993>
(cherry picked from commit a93465ed69)
2023-11-30 18:34:18 +01:00
Carlos Garnacho
2969a77041 misc: Fetch environment from launch context before spawn_async()
This will fetch the right environment for the launched application,
without using GNOME Shell's environment.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2993>
(cherry picked from commit 7b1223a254)
2023-11-30 18:34:08 +01:00
Sebastian Keller
39b774a5fc search: Allow grid using search providers to specify maximum of results
When GridSearchResults::_getMaxDisplayedResults() is called after the
first character has been entered in the search, GridSearchResults has
no children yet. _getMaxDisplayedResults() tries to determine the
maximum number of search results based on how often the largest child
would fit into the allocated size or -1 (i.e. no limit) if there are no
children. So for the initial search there is no limit and in the app
search all matching apps get added as possible results, which due to the
search term being only a single character is almost all installed apps.
This now causes allocation to be run for all these results, despite the
vast majority of them never being visible, which on slower machines can
cause noticeable delays before the search results are displayed.

This now adds the ability for search providers to specify a maximum
number of results that gets used instead of -1 when specified. By being
provider specific this means extensions implementing their own providers
will not be affected by this.

Further this sets the maximum for the app search provider to 6 as per
the current designs.

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/7155
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3004>
(cherry picked from commit 9153876764)
2023-11-30 18:32:22 +01:00
Sebastian Keller
36a07fed64 popupMenu: Only connect to notify::key-focus when needed
PopupMenuManager was connecting to notify::key-focus on the stage on
construction, but only ever reacting to it when one of its menus was
open. Given that every single app icon and text entry creates a
PopupMenuManager this was causing a lot of these handlers to be created.
Every single handler meant calling into JS code only for the vast
majority of them to determine that they would not do anything.

Additionally these handlers were leaked for the whole lifetime of the
stage due to never getting disconnected.

This now only connects the handler when a menu is open and disconnects
again when it is closed, significantly reducing the number of active
handlers at a time.

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/7143
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3001>
(cherry picked from commit f1b7af2ab0)
2023-11-30 18:32:16 +01:00
Florian Müllner
0ffc092942 config: Add missing semicolon
The .in file isn't valid javascript, so it's excluded from eslint
and style issues like this can slip through.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3005>
(cherry picked from commit 5fa08fe533)
2023-11-30 18:32:05 +01:00
Florian Müllner
b13cce579e Revert "screencastService: Add dmabuf/GL pipeline"
The pipeline contains a GST plugin that pops up an unclosable
window. That's utterly confusing, so back out of the change
until this is figured out.

This reverts commit b916ced2e6.
Related: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/6763
2023-10-31 22:45:56 +00:00
Sebastian Keller
38bf547ce7 calendar: Emit selected-date-changed before rebuilding the calendar
If the cursor was placed on one of the widgets that get removed when
rebuilding the calendar due to a month change, destroying the hovered
widget will trigger a repick. This repick can then trigger an allocation
while not all buttons of the calendar are present.

If the last allocation before selected-date-changed is emitted was from
such an incomplete state, DateMenuButton will still freeze the layout in
this state in its signal handler.

What freezing the layout in DateMenuButton is supposed to do is to
prevent size changes of the menu when changing days, but for this the
layout needs to be frozen before potentially rebuilding calendar. This
change ensures that by emitting the signal earlier.

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/5411
Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/5469
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2989>
(cherry picked from commit 23bcff3348)
2023-10-31 22:45:56 +00:00
Alessandro Bono
ae5e8fa924 screenShield: Use duration 0 when not animating
Instead of using a special branch for the not animate case, just use
the same path with duration 0.

Since commit ee09c5c853 we are sure that
duration 0 is always preserved.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2987>
(cherry picked from commit b4676f0e9e)
2023-10-31 22:45:56 +00:00
Alessandro Bono
7d2014da71 popupMenu: Use duration 0 when not animating
Instead of using a special branch for the not animate case, just use
the same path with duration 0.

Since commit ee09c5c853 we are sure that
duration 0 is always preserved.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2987>
(cherry picked from commit 46219b1101)
2023-10-31 22:45:56 +00:00
Alessandro Bono
ef7a14c69d messageTray: Use duration 0 when not animating
Instead of using a special branch for the not animate case, just use
the same path with duration 0.

Since commit ee09c5c853 we are sure that
duration 0 is always preserved.

In the not animate case, we now call this._updateState(). This was not
happening before.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2987>
(cherry picked from commit 1571171a21)
2023-10-31 22:45:56 +00:00
Alessandro Bono
902c373249 messageList: Use duration 0 when not animating
Instead of using a special branch for the not animate case, just use
the same path with duration 0.

Since commit ee09c5c853 we are sure that
duration 0 is always preserved.

In the not animate case, we now call this._actionBin.hide(). This was not
happening before.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2987>
(cherry picked from commit be49c8efc2)
2023-10-31 22:45:56 +00:00
Martin Zurowietz
0226bd273d js: Export variables and classes for Workspace Matrix extension
Most of these were "var" before the port to ESM (!1499). Here they
are exported again.

References !1499

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2978>
(cherry picked from commit 7d835bf455)
2023-10-31 22:45:56 +00:00
Sundeep Mediratta
5e6ce1cce6 workspaceAnimation: Handle DESKTOP windows
Windows of type DESKTOP are currently handled like all other sticky
windows, and stick to the monitor while the animation happens in the
background.

This behavior is odd for desktop windows, which are otherwise always
kept underneath regular windows.

Instead, make them part of the background, so they keep the expected
stacking position and animate together with the workspace.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2865>
2023-10-11 13:10:18 +02:00
Daniel van Vugt
4e2dddd18e layout: Destroy panel barrier on shutdown
It was being leaked, which is detected on mutter shutdown.

Closes: https://gitlab.gnome.org/GNOME/mutter/-/issues/3011
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2975>
2023-10-03 15:00:45 +08:00
robert.mader@collabora.com
a94fcee961 overview: Handle unredirection in OverviewShown state machine
Under certain unknown circumstances currently not every
`disable_unredirect_for_display()` gets matched with an
`enable_unredirect_for_display()` when closing the overview.

As we only want to not disable unredirection when hidden and we nowadays
have a state machine that ensures we transition to and from one state to
another only once, handle unredirection en-/disablement as part of the
state transition.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2970>
2023-09-27 11:38:16 +02:00
Florian Müllner
6f7f0f369b status/system: Use Intl to format battery percentage
The exact way of formatting a percentage value is locale specific:
https://en.wikipedia.org/wiki/Percent_sign#Correct_style.

We account for that by marking the string for translations, but then
get it wrong for the default US locale (go us!).

But given that the javascript engine itself provides us with a way
of formatting a percentage in a locale-specific way, that seems the
better option than putting the burden on our own developers and
translators.

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/7005
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2966>
2023-09-22 17:03:17 +00:00
Carlos Garnacho
2baa298e39 slider: Ignore left/right scroll directions
Both of these ended up with a "undefined" delta, which turned
the final value into 0 no matter the previous state.

While this was already fixed for touchpads in the previous commit
(by not forwarding emulated discrete events), this looks somewhat
out of place even for the mice that have left/right discrete scroll
actions (e.g. tilting the scroll wheel left or right).

Let these unhandled directions have a delta of 0, and focus on
vertical scroll for both smooth and discrete events.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2967>
2023-09-22 17:55:12 +02:00
Carlos Garnacho
10b0e283e9 slider: Fix check for emulated scroll events
The name given by g-i is actually FLAG_POINTER_EMULATED, this
made the check slightly ineffective, handling both real and
emulated events in the case of touchpad scrolling.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2967>
2023-09-22 13:29:31 +02:00
Florian Müllner
41907e9a56 extensions: Fix ngettext convenience
It is hooked up to the extension's 'gettext' function rather
than 'ngettext'.

Fixes: f59d523694 ("extensions: Add static defineTranslationFunctions() method")
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2952>
2023-09-15 21:41:30 +00:00
Khalid Abu Shawarib
405b549a05 slider: Reverse handle direction in RTL
Rework slider handle to reverse directions when the slider is
Right-to-Left.

Fixes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/5107
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2943>
2023-09-15 20:52:14 +03:00
Khalid Abu Shawarib
c777425d39 barLevel: Reverse direction in RTL
Rework drawing and calculations to reverse the bar direction
when the bar is Right-to-Left.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2943>
2023-09-15 20:52:14 +03:00
Florian Müllner
ba46a1cf54 extensionSystem: Update immediately after major upgrades
Currently we periodically check for updated extensions, prepare
an update and perform it at the next login.

This is largely due to the fact that once an extension has been
loaded, its code is cached and reloading it would only make it
*appear* as updated, while in reality still running the old code.

Of course this only applies *once* we have loaded extensions.

Before that, it's possible to download and install updates, and
only then initialize extensions with their latest version.

The trade-off is that network requests, data download and extraction may
introduce a significant delay before extensions
are enabled. Most extensions modify the UI one way or another,
so that delay would likely be noticeable by the user.

Assuming that users are usually happy enough with the current
extension version, that trade-off doesn't seem worthwhile.

However there is an exception: After a major version update,
extensions are likely disabled as out-of-date, or at least
more likely to break (when the version check is disabled).

In that case delaying extension initialization to download
and install updates looks like the better trade-off, so do
that.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2951>
2023-09-15 12:54:41 +00:00
xiaofan
050d0e10c7 ibusManager: Add missing environment variables required to launch ibus-daemon
IBus requires XAUTHORITY and XDG_RUNTIME_DIR to be able to spawn its XIM
implementation correctly. Using launch context to get environment can correctly
launch on non-systemd setups.

Closes: #6998

Signed-off-by: xiaofan <xiaofan@iscas.ac.cn>
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2947>
2023-09-14 16:02:29 +00:00
Florian Müllner
ee11ecac46 main: Remove transitions from child adjustments
When commit 4d963c432b introduced the global workspace adjustment,
it mostly copied the adjustment handling from the overview that it
set out to replace.

That includes cancelling ongoing transitions when the number of
workspaces changed. However that missed that transitions don't
happen on the main adjustment, but on the "child" adjustments
returned from `createWorkspacesAdjustment()`.

Address this by tracking all child adjustments, and cancel transitions
there as well when necessary. Use weak refs to not
interfere with garbage collection, in case an extension creates
its own child adjustment.

Fixes: 4d963c432b ("main: Introduce global workspaces adjustment")
Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/7000
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2949>
2023-09-14 16:46:31 +02:00
Hollow Man
8a5a25e6d3 js: Fix calendar scroll
Update to Clutter.Event getter methods in Clutter.Actor vfuncs
as the old way no longer works

Related to https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2872

Signed-off-by: Hollow Man <hollowman@opensuse.org>
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2946>
2023-09-09 14:05:27 +02:00