Commit Graph

9021 Commits

Author SHA1 Message Date
Carlos Garnacho
7e4f7c7e5b keyboard: Explicitly destroy swipeTracker after emoji panel destruction
Even though the emoji panel may be destroyed with the OSK, the swipeTracker
that is set up to navigate between pages is left lingering, and handling
events for some gestures in the stage. This results in warnings like:

  JS ERROR: TypeError: this._panel is null
  set delta@resource:///org/gnome/shell/ui/keyboard.js:720:9
  _onSwipeUpdate@resource:///org/gnome/shell/ui/keyboard.js:750:22
  _updateGesture@resource:///org/gnome/shell/ui/swipeTracker.js:670:14
  vfunc_gesture_progress@resource:///org/gnome/shell/ui/swipeTracker.js:288>

on touch interaction after the OSK was shown and dismissed. In order to fix
this, issue explicit destruction of the swipeTracker when the emoji pager
actor is destroyed.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2543>
2022-11-16 18:06:27 +00:00
Alessandro Bono
2326721561 appDisplay: Connect to hidden signal after content initialization
When the overview is hidden just after starting GNOME Shell the app
grid is not populated yet. Thus, this._grid.nPages is 0. When the
overview is about to be hidden, we call goToPage(0) on the AppGrid.
This results in pageNumber being clamped to -1 and leads to the
following exception:

```
JS ERROR: Exception in callback for signal: hidden: Error: Page -2 does not exist at IconGrid
getItemsAtPage@resource:///org/gnome/shell/ui/iconGrid.js:1383:19
_translatePreviousPageIcons@resource:///org/gnome/shell/ui/appDisplay.js:323:34
_syncPageIndicators@resource:///org/gnome/shell/ui/appDisplay.js:396:14
goToPage@resource:///org/gnome/shell/ui/appDisplay.js:445:14
goToPage@resource:///org/gnome/shell/ui/appDisplay.js:1237:29
goToPage@resource:///org/gnome/shell/ui/appDisplay.js:1584:15
_init/<@resource:///org/gnome/shell/ui/appDisplay.js:1328:52
_emit@resource:///org/gnome/gjs/modules/core/_signals.js:89:42
_hideDone@resource:///org/gnome/shell/ui/overview.js:589:18
_animateNotVisible/<@resource:///org/gnome/shell/ui/overview.js:566:55
onStopped@resource:///org/gnome/shell/ui/overviewControls.js:753:21
_makeEaseCallback/<@resource:///org/gnome/shell/ui/environment.js:150:22
_easeActorProperty/<@resource:///org/gnome/shell/ui/environment.js:316:60
```

Connect to the overview hidden signal only after initializing the
AppDisplay content, so that goToPage(0) is not called when there
is no page yet.

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/5837
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2536>
2022-11-16 17:06:32 +00:00
Carlos Garnacho
bcafa512e3 quickSettings: Make parent StWidget have a 0x0 size
The quick settings menu is child of an actor at 0,0 coordinates,
simply transformed to look in place. However the parent actor stays
at 0,0, and gets a width/height that is able to contain the child
menu (even though the transform will push it outside the parent
actor).

This makes the parent actor (not meant to handle pointer/touch
input) to cover parts of the shell. Since this actor is also where
the Clutter grab happens, the menu is not dismissed either.

Make this parent actor have a 0x0 size, so that it can still act
as the parent for the quick settings menu, but does not actually
cover any area. This makes clicks around the top left corner work
again while the quick settings menu is opened.

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/5887
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2535>
2022-11-16 16:51:49 +00:00
Alessandro Bono
5d390d9899 windowManager: Get the active workspace index directly
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2540>
2022-11-14 20:03:32 +01:00
Florian Müllner
144daf200c screenshot: Cache ScreencastSupported property
The screencast service shuts down when not in use, so it is almost
certainly not running when handling the screencast shortcut.

Instead of making sure the service is restarted, just cache the
property when initializing the proxy.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2533>
2022-11-09 11:15:04 +00:00
Florian Müllner
a2acecb491 dbusService/screencast: Hold during gstreamer checks
Some gstreamer plugins require a connection to the display server,
so they block until the server is up and running. That's why we
moved the check into the D-Bus service, so that the blocking would
not lock up the compositor itself.

However the block can still delay the service initialization so
much that auto-shutdown hits immediately when returning from the
constructor. If that happens, the proxy on the shell side is no
longer backed by a remote object when the init callback runs, and
all properties therefore resolve as `null`.

As a result, gnome-shell thinks that screencasts aren't supported
and hides the screencast button.

Fix this by holding the service during the gstreamer checks, so
that the auto-shutdown timeout only starts after the service is
ready.

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

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2533>
2022-11-09 11:15:04 +00:00
Colin Kinloch
50bc2c6529 systemActions: Add poweroff without space
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2523>
2022-11-04 18:14:11 +00:00
Cassidy James Blaede
092a069214 darkMode: Update string to "Dark Style"
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2499>
2022-11-04 14:31:29 +00:00
Alessandro Bono
7bd98f3f5f environment: Set time zero when animations are disabled
In commit ee09c5c853 we chose to pick
the minimum value in order to preserve 0 instead of replacing it with
1. While returning 0 unconditionally when animations are disabled
seems the more logic thing to do, we were unsure about possible side
effects. Do the change now. Since we are early in the development cycle
we should be able to deal with side effects (if any) on time for the
next release.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2528>
2022-11-04 14:14:34 +01:00
Florian Müllner
3cdcd075ef dbusServices/screencast: Check for all require elements
Instead of assuming that gst-plugins-good has been compiled with
all the plugins we need enabled, explicitly check for the ones
we use.

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

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2519>
2022-11-04 09:51:20 +00:00
Florian Müllner
f266c2ca15 screenshot: Move HAVE_RECORDER check into screencast service
Some gstreamer plugins require a connection to the display server,
so if we end up initializing gstreamer before we are ourselves
fully initialized, we may end up with a locked compositor.

Avoid this by moving the runtime recorder check into the screencast
D-Bus service, so that all gstreamer calls happen out of process.

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

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2519>
2022-11-04 09:51:20 +00:00
Florian Müllner
cff56d4b03 config: Check for correct Gst element
We use filesink, not filesrc ...

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

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2519>
2022-11-04 09:51:20 +00:00
Marco Trevisan (Treviño)
a25d0f6d22 js/portal-resources: Add missing fileUtils to js path
gnome-shell-portal-helper was failing with:

  (gnome-shell-portal-helper:646052): Gjs-CRITICAL **: 12:24:30.852:
    JS ERROR: ImportError: No JS module 'fileUtils' found in search path
    @resource:///org/gnome/shell/portalHelper/main.js:13:30
    @<main>:1:14

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/6020
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2524>
2022-11-03 18:02:27 +00:00
Carlos Garnacho
ecc3cf8ab1 inputMethod: Manually reset input context state before unfocus
The IBusInputContext currently seems to be a bit sloppy wrt propagating
the current state to engines after those are changed, this results in
engines possibly ending with purpose/hint/etc that do not actually
correspond to the current state.

Ensure this state is cleared on unfocus of our IBusInputContext, so
that the next time the input method receives an input focus, the new
state makes it all the way to the currently active engine.

Fixes situations in the GDM/lock screen password entry that IBus
would miss the PASSWORD hint set on the StEntry, and let passwords
be fed to engines.

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/5966
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2512>
2022-10-26 10:00:37 +00:00
Carlos Garnacho
12032dcc50 ibusManager: Make more resilient to completion/engine independent changes
Besides user interaction, there's two users of IBusManager.setEngine():

- The code that toggles all IBus engines off on entries with PASSWORD
  purpose.
- The code that toggles completion support on OSK presence.

These are currently pretty oblivious to each other. Make this
interaction more resilient by making all external IBusManager changes
more cautious about directly changing the engine, and revoke properly
the completion mode if it needs be (e.g. changing to a non-XKB engine).

But another notable change is that ibus-typing-booster is now preferred
always, over PASSWORD purpose hints. This is done to avoid possible
doubled attempts to change the current engine (and ensuing IBusInputContext
confusion).

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2512>
2022-10-26 10:00:37 +00:00
Carlos Garnacho
b2f2266199 keyboard: Synchronize input method state after toggling completion
Make the input method synchronize its state after the engine changes
resulting from completion being toggled.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2512>
2022-10-26 10:00:37 +00:00
Carlos Garnacho
ff09c4efc1 inputMethod: Cache cursor rectangle
This may need to be synchronized in other places, so keep
the rectangle around.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2512>
2022-10-26 10:00:37 +00:00
Carlos Garnacho
290dd38a3a ibusManager: Allow passing callbacks after enabling/disabling completion
Since this is an async operation, we may want to let some things happen
after the engine is changed due to completion being enabled/disabled.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2512>
2022-10-26 10:00:37 +00:00
Sebastian Keller
d7b443197b screencast: Don't force buffer copies on recent gstreamer versions
Gstreamer 1.20.4 includes a fix in the videoconvert element that makes
it no longer necessary to always copy buffers in pipewiresrc to have
smooth recordings. This change now skips those otherwise unnecessary
copies when using a new enough videoconvert.

Related: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2928
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2503>
2022-10-20 13:56:47 +00:00
Florian Müllner
cbbc066d6f powerProfiles: Avoid warnings on missing power-profiles-daemon
GDBusProxy transparently handles the remote object appearing and
vanishing. It is therefore not an error if the service is not
running at the time the proxy is initialized, so we proceed and
try to read the list of profiles which is null in that case,
resulting in (harmless but annoying) warnings.

Avoid this by only reading the initial list of profiles if the
service has a name owner.

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

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2518>
2022-10-20 13:55:06 +02:00
Sam Hewitt
ea7b29e049 css/quick-settings: Update icon-button styles
- add an entire	flat style to button drawing function
- clean	up the icon button css in quick	settings
- adjust padding in QS sliders
- fixes #5918

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2510>
2022-10-18 19:43:10 +00:00
Carlos Garnacho
76090c14eb inputMethod: Check return value when letting IM handle virtual keys
When propagating keys from the OSK, we usually feed these directly to
the IBusInputContext and let the IM handle the effects of this virtual
key event (which may also include feeding a key event back to us).

But these functions may also return a FALSE value if the key was "let
through" by the IM, which means the ball is in our yard again, and
we are responsible of letting this event get to its destination.

If that happens, just fall through, so the string is committed to
the client as an UTF-8 string, or propagated through keyboard events.

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/5930
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2508>
2022-10-18 19:31:51 +00:00
Carlos Garnacho
766314acb2 keyboard: Refactor code
Move inline anonymous function to be its own. This method
will become asynchronous in following commits.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2508>
2022-10-18 19:31:51 +00:00
Carlos Garnacho
9c262ad7bf status: Ignore prior single-element lists updating input sources MRU
Consider the existing input sources MRU only valid if it contained
more than one element to pick from. Fixes the following situation
with initial-setup sessions:

- Initial setup Session starts, with several input sources already
  configured ("us" between them)
- InputSourceManager initializes, only the default "us" keymap is
  available
- MRU list is constructed, "us" is picked
- InputSourceManager catches up with session configuration, the
  other extra sources are added
- MRU list is reconstructed, "us" is already the most recent
- Session ends up with "us" picked, regardless of its position in
  the list, and no MRU existing prior to startup

If we consider the intermediate single-element MRU list invalid,
it is still possible to pick the best default source between all
the configured ones (the one that was put first in the list,
basically), after initialization is complete.

But also, it is unnecessary to have if there is a single source to
pick from. After the sources list has two elements or more, the
MRU list will become effective and preserved during changes to
the available sources.

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/5873
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2495>
2022-10-18 18:38:27 +00:00
Florian Müllner
022c64961c altTab: Always include label in thumbnail
We currently special-case the no-window-title case when creating
items, but not when accessing labels later, for example during
allocation.

The easiest option it to create the label unconditionally, so do
that.

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

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2483>
2022-10-18 18:04:57 +00:00
Alessandro Bono
ee09c5c853 environment: Preserve time 0 when animations are disabled
There are cases where the animation time is set to 0 on purpose
in order to not animate. When animations are disabled via
/org/gnome/desktop/interface/enable-animations those animation
times are increased from 0 to 1. This makes the "Caps lock is on."
message appear unconditionally in the lockscreen for a brief moment.

Select the minimum between the two values. So that an animation time
0 is preserved instead of being replaced by 1.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2471>
2022-10-14 22:32:31 +00:00
Alessandro Bono
b392e913d6 shellEntry: Remove unused variable
Unused since 26235bbe54.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2471>
2022-10-14 22:32:30 +00:00
Jonas Ådahl
dfcab5a2b1 inputMethod: Also forward TERMINAL input purpose
It was added relatively recently (1.5.24), so check if it exists first.

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/5958
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2511>
2022-10-14 21:59:21 +02:00
Florian Müllner
8590e33501 inhibitShortcutsDialog: Don't override resource
PermissionStore's Set() method takes a complete permission
table, so when setting an app's permission, we are implicitly
removing all previously set entries for other apps.

Switch to the SetPermission() method which sets the permission
for a single app.

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

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2504>
2022-10-06 14:47:43 +02:00
Florian Müllner
0ce2bc343b status/volume: Include origin in device names
The description alone may not be descriptive enough, so include
the origin (if available) to disambiguate the name.

This is consistent with the Sound Settings panel.

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

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2502>
2022-10-03 18:37:07 +02:00
Bastien Nocera
e7cf6d348c bluetooth: Remove unused 'had-bluetooth-devices-setup' setting
Now that we always show the Bluetooth switch when there's a Bluetooth
adapter hiding somewhere, remove all the settings it used as storage.

If the user wants to really really disable any Bluetooth adapters in
their system, the gnome-bluetooth documentation explains how to do that
irrespective of GNOME:
https://gitlab.gnome.org/GNOME/gnome-bluetooth/#multiple-bluetooth-adapters

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2488>
2022-09-17 18:24:15 +00:00
Bastien Nocera
57aa91e2b3 bluetooth: Show the Bluetooth switch in more cases
In older versions of GNOME, when a menu was used for Bluetooth devices,
we tried to avoid showing the Bluetooth menu to folks who didn't use
Bluetooth.

This kept causing problems as the menu would disappear if no
devices were setup and the platform "airplane mode" removed the
Bluetooth device from the USB bus, making it impossible to detect
whether a Bluetooth device existed, compared to a user unplugging a
removable Bluetooth device.

Closes: #5749
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2488>
2022-09-17 18:24:15 +00:00
Carlos Garnacho
13c9fd2a66 status: Use fixed sorting of input sources on empty MRU
When updating the MRU sources if there was no prior MRU, we want
to go with the unmodified list of sources in visibility order.

However iterating over object properties happens in an undetermined
order, so the initial MRU list ends up picking a value at random.

In order to prefer the sources list in the same order than they
appear in the menu if there was no prior MRU, order the keys
when accessing it and building the initial list of sources.

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/5873
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2487>
2022-09-17 18:18:43 +00:00
Jonas Ådahl
c080bc59a4 quickSettings: Update bind constraint offset on idle
Use Meta.LaterType.BEFORE_REDRAW to queue setting the bind constraint
offset in an idle callback. This is needed since the signals that
trigger updating the offset may be emitted during allocation, at which
point queuing new relayouts isn't ideal, since it could result in
relayout cycles. In this case, we really do want to relayout as a side
effect of another actors allocation, so make this explicit.

This fixes a few warnings such as:

The actor '<unnamed>[<StBoxLayout>:0x3138d70]' is currently inside an
allocation cycle; calling clutter_actor_queue_relayout() is not recommended

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2476>
2022-09-17 18:09:57 +00:00
Andy Holmes
990eb92bd9 panel: Add PanelMenu.Button menu when menu-set is emitted
When a `PanelMenu.Button` is added to the `statusArea`, its menu is
added to the `PopupMenuManager` if it has one at the time. If a menu is
added later or a new one set, the new menu is never added.

Move the call to `PopupMenuManager.addMenu()` from `_addToPanelBox()`
to `_onMenuSet()`, which is called when the `PanelMenu.Button` is added
and whenever it emits the `menu-set` signal.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2470>
2022-09-17 17:56:21 +00:00
Jonas Ådahl
fe9c2b8df6 overviewControls: Don't update work area box when headless
When headless, we don't have a monitor we can derive a size from, so
don't even try, just let it be updated when we actually have a monitor
that will show stuff.

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/5831
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2478>
2022-09-15 11:51:08 +00:00
Florian Müllner
c9efc137ac status/system: Add context to a11y label
"Lock Screen" can refer to the lock screen component or the action
of locking the screen. Add context to clarify that the button
refers to the latter.

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

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2485>
2022-09-14 22:07:06 +00:00
Florian Müllner
ebaf9aa4c5 status/system: Mark 'Power Off' menu header for translation
This was missed when the menu was added as part of quick settings.

Luckily we can re-use the msg-id/context from the shutdown dialog,
so the change is not subject to the string freeze.

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

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2484>
2022-09-14 22:01:20 +00:00
Florian Müllner
17a2726e64 loginManager: Fix canRebootToBootLoaderMenu() result
Since commit a3db909383, the `result` variable holds the
destructured result of the D-Bus call, not the results array
as previously.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2472>
2022-09-06 20:57:49 +00:00
sabriunal
4a1bfb45d5 quick-settings: Add ellipses to 'Log Out' string
According to GNOME HIG, if an item opens a new window or dialog,
it should be indicated with ellipses.

This change adds ellipses to the "Log Out" menu item
in the quick access menu.

Fixes #5821

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2467>
2022-09-05 17:35:58 +00:00
Sebastian Keller
d32c03488f screencast: Always copy buffers in pipewiresrc
Pipewire 0.3.52 via commit a1f33a99 introduced a change that affects how
long pipewiresrc holds onto the pw_buffers it dequeued. Before that
change the pw_buffer was held until the end of the videoconvert element
at the beginning of the pipeline. After that change the pw_buffer was
held onto until the filesink at the end of the pipeline. This was
starving MetaScreenCastStreamSrc of pw_buffers to record new frames
into, resulting in the majority of frames being missed, especially in
situations in which the encoder was taking longer.

Pipewire 0.3.57 via commit 1ea1d525 will allow queuing the pw_buffer
early again via the `always-copy` option. This however is only a
workaround until a proper solution is found in either pipewire or
gstreamer that does not depend on copying the buffer contents and
instead queues the pw_buffer again after videoconvert as prior to
a1f33a99.

Since it is not clear yet when a proper solution will arrive, this makes
use of `always-copy` as a workaround for now and should be reverted once
it is no longer needed.

Related: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/5585
Related: https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/2461
Related: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/283
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2436>
2022-09-03 15:15:31 +00:00
Sebastian Keller
91ce5ca960 signalTracker: Remove SignalTracker after its last signal got untracked
The object the SignalTracker belongs to is stored in a map managed by
the SignalManager which keeps a reference to that object. This map is
never destroyed nor is any entry ever removed. This leads to all objects
that ever had SignalTrackers used on them being kept alive even after
all references outside of the SignalTracker are long gone. This then
also extends to other objects which are leaked indirectly through
reference chains from these objects.

And if some of those objects are GObjects, this will prevent them from
being finalized, leaking further resources. A StWidget for example will
not release its shadow textures.

Fix this by destroying the SignalTracker and removing it from the
SignalManager once the last signal it was tracking has been untracked.

A WeakMap could have been used as well, but we need the Map to be
iterable in some of the following changes.

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/5807
Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/5796
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2466>
2022-09-03 15:11:46 +00:00
Sebastian Keller
54ee728aa0 signalTracker: Don't try to create a new SignalTracker for disconnecting
After the next commit, when some classes, such as PopupMenuManager try
to disconnect via a destroy handler, the SignalTracker might have
already been destroyed, so trying to get it from the SignalManager will
cause it to create a new one, which will then try to connect to the
destroy signal of the already destroyed object.

This could for example be triggered by changing backgrounds.

Fix this by not doing anything in disconnectObject if there is no
SignalTracker for that object.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2466>
2022-09-03 15:11:46 +00:00
Sebastian Keller
d57953ad94 Revert "signalTracker: Use WeakMap in SignalManager to avoid leaking objects"
This reverts commit 085102be74.

We need the SignalManager map top be iterable at shutdown for some of
the following changes. A WeakMap is not iterable. This revert changes it
back to a regular Map, which re-introduces the leaks caused by this.
Those will be fixed differently by the two followup commits.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2466>
2022-09-03 15:11:46 +00:00
Florian Müllner
6a23e8ee0f status/bluetooth: Indicate progress on toggle
Turning bluetooth on or off can be very slow ­– 10-15 seconds on
my system – and we currently don't provide any feedback that
something is indeed happening until the state changes at last.

Address this by using the `acquiring` icon when the adapter is
in a transitioning state.

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

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2444>
2022-09-03 15:05:57 +00:00
Florian Müllner
d54dc08a32 status/bluetooth: Expose adapter-state
GnomeBluetooth now exposes a more precise state than the binary
"adapter fully powerered on/off" property. Expose that on the
BtClient object to make it available to the toggle and indicator.

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

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2444>
2022-09-03 15:05:57 +00:00
Florian Müllner
9bda370636 config: Check for new required GnomeBluetooth API
Client.default_adapter_state is a recent API addition, so update
the HAVE_BLUETOOTH check accordingly before depending on it.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2444>
2022-09-03 15:05:57 +00:00
Carlos Garnacho
a89d2aed84 padOsd: Figure out label/edition UI positions from unchanged fonts
We can figure out the position to render the text without resorting to
font sizes that make the whole text element sub-pixel size. As the
original labels in the SVG are themed invisible anyway, calculate the
button/ring/strip label and configuration UI position from their unchanged
size/location.

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/5415
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2288>
2022-09-02 19:24:47 +00:00
Florian Müllner
646cb41e83 quickSettings: Override StButton:label property
StButton already has a :label property, so we should override it
instead of shadowing it with a new property of the same name, like
we already do for :icon-name.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2462>
2022-08-31 16:40:30 +00:00
Milan Crha
a6244e34de calendar: Correct handling of recurring events
When a recurring event has deleted a single instance, it's received
as an event modification, thus make sure all of the old instances
are removed before adding the event to the list of events.

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

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2328>
2022-08-31 16:35:14 +00:00