Commit graph

17845 commits

Author SHA1 Message Date
Jonas Dreßler
37dbc370ee closeDialog: Actually set key focus to button when grabbing key focus
When setting the key focus to `this._dialog`, the default button is not
automatically focused and no button has key focus.

Use the `initialKeyFocus` property of the dialog instead, and set focus
to the default button if the dialog is not already focused.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/786>
(cherry picked from commit de834fe307)
2024-02-11 21:20:53 +01:00
Florian Müllner
95a2ea93ad boxpointer: Clamp alignments to expected range
The values are expected to be between 0 (start) and 1 (end),
enforce that with appropriate clamp() calls.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3150>
(cherry picked from commit d0b2351036)
2024-02-11 21:20:40 +01:00
Florian Müllner
b7ddc8527f boxpointer: Swap arrow alignment on RTL
The current code uses the arrow alignment to align the menu between
the top/left (0) and bottom/right(1), regardless of the text direction.

Instead of adjusting code everywhere, reinterpret the parameter
to refer to start/end instead, and swap the alignment with an
RTL text direction.

Credit to Sebastian Keller for spotting the cause of the issue.

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

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3150>
(cherry picked from commit 4e70315fbb)
2024-02-11 21:20:31 +01:00
Florian Müllner
80f4b3c97d windowManager: Keep dim effect in overview
Removing the effect dates back to the time when we didn't show
attached dialogs in the overview. Since we do show attached
dialogs as such nowadays, it makes sense to keep the effect.

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

Part-of:
<https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3151>
(cherry picked from commit 7b4054564e)
2024-02-11 21:20:22 +01:00
Florian Müllner
094d8954cb closeDialog: Close existing dialogs on shutdown
Otherwise mutter will request to hide the dialog when the meta
context is destroyed, but at the JS context has already shut down,
resulting in a crash.

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

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3117>
(cherry picked from commit 17b7162121)
2024-02-11 21:19:11 +01:00
Daniel Rusek
b715bb9fde Update Czech translation 2024-01-22 00:56:27 +00:00
Daniel Rusek
81e31eea27 Update Czech translation 2024-01-21 23:48:22 +00:00
Daniel Rusek
f743742061 Update Czech translation 2024-01-21 23:28:18 +00:00
Florian Müllner
f0d1174522 Bump version to 44.8
Update NEWS.
2024-01-06 23:26:04 +01:00
Jonian Guveli
117aae395f 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:55:23 +01:00
Julian Sparber
98c29ff3aa 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:53:34 +01:00
Florian Müllner
f45330e708 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:52:30 +01:00
Julian Sparber
6126f65b36 st/scroll-view: Allow removing edge fade
Remove the fade effect when the css property `-st-vfade-offset` is removed
from a widget. The effect isn't added when the property never existed.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3047>
(cherry picked from commit 33c074c738)
2024-01-06 22:52:21 +01:00
Sebastian Keller
74c4138cc8 st/widget: Don't allow adding/removing "" style class
strstr() in find_class_name() will always consider "" a match so the
loop was not stopping at the end of the class_list. None of the matches
within the class_list would satisfy the return conditions, unless the
class_list was either an empty string as well or has a trailing space.
So this ends up with a match outside of the allocated string that
happens to satisfy these conditions by chance which then leads to the
class string containing some of this unrelated memory. Or it might lead
to a segfault.

This adds checks to the public API that uses find_class_name() to
prevent extensions from accidentally triggering a crash this way or
having some otherwise unexpected results.

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/7152
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3006>
(cherry picked from commit dc931e82cd)
2024-01-06 22:52:14 +01:00
Florian Müllner
c0a74acafd st/bin: Fix height request
The request currently mixes up y-align and x-align.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3043>
(cherry picked from commit c8dae24645)
2024-01-06 22:52:02 +01:00
Florian Müllner
583894c0f5 build: Actually bump version
Yikes, sorry for that :-(
2023-12-02 18:41:03 +01:00
Florian Müllner
51ec18d48d Bump version to 44.7
Update NEWS.
2023-12-01 20:48:47 +01:00
Florian Müllner
d4e5ec0bac 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 19:18:25 +01:00
Julian Sparber
e8cdf361a4 st/viewport: Set adjustment properties all at once
This ensures that that property changes are notified all at the same
time and only after all were set. If we notify too early handlers
may act on a "broken" viewport.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3023>
(cherry picked from commit 5b8347f90b)
2023-11-30 19:17:59 +01:00
Julian Sparber
363368260a st/adjustment: Ensure changed signal emission is compressed
The docs say that `st_adjustment_set_values()` emits the `changed`
signal only once but it's actually emitted for each changed property,
this uses the `dispatch_properties_changed` vfunc to emit the `changed`
signal only per call to `st_adjustment_set_values()`. As a positive
side effect this also makes it possible to use `g_object_freeze/thaw_notify`
to compress the `changed` signal emission when using the setters for
properties.

This also fixes the wrong emission of the `changed` signal in
`st_adjustment_set_values()` when only the `value` property is changed.

Side note: the code is heavily inspired by GtkAdjustment

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3023>
(cherry picked from commit 78eb5f2a68)
2023-11-30 19:17:48 +01:00
Jonas Dreßler
e7b6850574 st/scroll-view: Hide scroll bar from layout when its hidden
We hide scrollbars with POLICY_AUTOMATIC when the content of the scroll
view fits completely inside the view without having to scroll. In this case
it seems like a good idea to give the content the full available size
without subtracting scroll bars from that size.

So subtract the scroll bar from the size we give to the child only when
the scroll bar is actually visible, when it's invisible subtract 0 instead.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2190>
(cherry picked from commit 65e56183b1)
2023-11-30 19:17:32 +01:00
Jonas Dreßler
1e5c791913 st/scroll-view: Allocate the scrollbars 0-size instead of not painting them
StScrollView applies the policy of whether to show or hide the scroll
bar,
and with the AUTOMATIC policy the scroll bar should be hidden as soon as
the
content of the scroll view is small enough to fit without scrolling.

Now we only know about the final size of the content when we're inside
st_scroll_view_allocate(), so that's where we can decide whether the
scroll
bar should be visible or not. Clutter really doesn't like calling
clutter_actor_show/hide() in the middle of an allocation cycle though,
so
what we do instead is saving the state into priv->vscrollbar_visible,
and
then just not painting the scroll bar based on that in a paint() vfunc
override.

This approach is not great for several reasons, it means we also have to
override pick() and finally it means the paint volume of the scroll bar
is
incorrect.

While the greatest solution to this would be to just hide/show the
scroll
bar inside the allocate() function as it is possible in gtk, we have an
established pattern for this kind of case too: We usually allocate a
0-sized
rect for the thing we want to hide, so let's do that instead.

A nice side effect is that we can conveniently drop another paint() and
pick() vfunc override.

Part-of:
<https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2190>
(cherry picked from commit a59a992daa)
2023-11-30 19:17:21 +01:00
Sebastian Keller
a03769c207 main: Move g_setenv() calls before calls that may start threads
setenv() is not thread-safe and must happen before starting threads. The
g_setenv() calls in main() happened after meta_context_configure(),
which will start a thread via meta_profiler_new() which in its init
calls g_bus_get().

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/6974
Part-of:
<https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3018>
(cherry picked from commit 8d7dc098b1)
2023-11-30 19:17:10 +01:00
Sebastian Keller
18f288bb51 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 19:13:30 +01:00
Barnabás Pőcze
3acab65968 st/texture-cache: Always close GdkPixbufLoader before disposal
As per the warning emitted when destroying without closing first

  GdkPixbufLoader finalized without calling gdk_pixbuf_loader_close() - this is not allowed.
  You must explicitly end the data stream to the loader before dropping the last reference.

closing it is necessary.

Create the GdkPixbufLoader after loading the file contents so that
the loader is guaranteed to be closed before it is destroyed.
(`gdk_pixbuf_loader_write()` closes it on failure.)

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3008>
(cherry picked from commit 3e7027821d)
2023-11-30 19:13:03 +01:00
Carlos Garnacho
adc9f459c2 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 19:12:57 +01:00
Carlos Garnacho
9146293b26 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 19:12:49 +01:00
Sebastian Keller
60ce3b23d8 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 19:12:15 +01:00
Sebastian Keller
5f8210de5d 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 19:10:42 +01:00
Florian Müllner
fe45754550 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 19:09:11 +01:00
Florian Müllner
265ed3088d Bump version to 44.6
Update NEWS.
2023-11-01 00:22:53 +01:00
Sebastian Keller
495967905c 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-11-01 00:20:59 +01:00
Florentina Mușat
198e6f5cfc Update Romanian translation 2023-10-22 13:43:26 +00:00
robert.mader@collabora.com
958616fd16 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>

(cherry picked from commit a94fcee961)
2023-09-27 12:29:30 +02:00
Florian Müllner
d49cc6fa35 Bump version to 44.5
Update NEWS.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2958>
2023-09-16 11:55:20 +02:00
Khalid Abu Shawarib
9be6db83a3 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>
(cherry picked from commit 405b549a05)
2023-09-16 09:44:38 +00:00
Khalid Abu Shawarib
d430f4dc65 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>
(cherry picked from commit c777425d39)
2023-09-16 09:44:38 +00:00
xiaofan
c634612560 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>
(cherry picked from commit 050d0e10c7)
2023-09-16 09:44:38 +00:00
Carlos Garnacho
0c6eaac0a1 keyboard: Only reset to the default level on unlocked latched levels
Reportedly, non-alphanumeric key levels were able to stick by
happenstance, and let the user press multiple keys until explicitly
switching to a different mode. Reportedly, this broke, switching to
the default level after the first key press on the additional levels.

Since we have this information in the OSK key models (each level has
a "mode" field to either default/latched/locked), retrieve this
information for them for each level, and only reset to the default
level if on one of those latched levels, and the relevant key was not
locked through long-press.

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/5763
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2945>
(cherry picked from commit bc3b890e75)
2023-09-16 09:44:38 +00:00
Carlos Garnacho
d7d502225e keyboard: Reset latched levels on string commit on all situations
The _commitAction() paths have early returns, which made resetting the
latched mode inconsistent depending on the paths taken to commit the
string. This made latched modes not return to normal on e.g. Shell
entries.

Make this happen outside the function, and after the only calling
point, so that the level is correctly reset on all situations.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2945>
(cherry picked from commit 08f3ad3835)
2023-09-16 09:44:38 +00:00
Florian Müllner
23e24a4eba screenshot: Only handle mode-switch shortcut when supported
We currently handle the 'v' key to switch between recording- and
screenshot mode regardless of whether screen recordings are
supported.

This is clearly wrong, don't do that.

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

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2944>
(cherry picked from commit 671df28a50)
2023-09-16 09:44:38 +00:00
Florian Müllner
39b0c0030b screenshot: Do not wrongly enable window button
The window button is disabled when
 - there are no windows
 - we are in screen-recording mode
 - the session mode doesn't allow windows

However the last condition is only taken into account when
opening the dialog, but not when switching from recording-
to screenshot mode.

Address this by updating the button's sensitivity in a separate
function, so the different conditions are considered consistently.

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

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2944>
(cherry picked from commit 521525948e)
2023-09-16 09:44:38 +00:00
Matej Urbančič
2a46048663 Update Slovenian translation 2023-09-11 13:54:53 +00:00
Rafael Fontenelle
5e052b227c Update Brazilian Portuguese translation 2023-09-11 13:50:36 +00:00
Daniel Mustieles
10d09cf334 Update Spanish translation 2023-09-11 07:50:43 +00:00
Milo Casagrande
d24ce97d3c Update Italian translation 2023-08-30 07:24:34 +00:00
Nathan Follens
d826c9eadc Update Dutch translation 2023-08-27 12:05:20 +00:00
Florian Müllner
9329a600bd Bump version to 44.4
Update NEWS.
2023-08-22 16:51:21 +02:00
Florian Müllner
c0c366c1c6 ci: Include .desktop files in POTFILES check
.desktop files always include translatable strings, so make sure
they are added to either POTFILES.in or POTFILES.skip.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2904>
(cherry picked from commit 168b306ffe)
2023-08-22 15:19:12 +02:00
Florian Müllner
8b20809e48 po: Update POTFILES.in
We include a .desktop file for the Extensions D-Bus
service, to provide name and icon to the preference
dialog when used without a parent window.

However we missed adding it to POTFILES.in, so it is
currently untranslated, whoops.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2904>
(cherry picked from commit 3f0d3381ee)
2023-08-22 15:19:12 +02:00