18563 Commits

Author SHA1 Message Date
Florian Müllner
d243a9ba93 st/scroll-view: Expose adjustments as properties
The adjustments are currently only accessible indirectly via
the scroll bars. It is a bit odd to expose internal children,
and as nearly all users only access them for the adjustments,
it makes sense to expose those instead.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3020>
2023-11-18 18:00:43 +00:00
Florian Müllner
5b84967deb lookingGlass: Don't hide scroll bar manually
The code predates the policy properties, which provide a cleaner
way of achieving the desired behavior.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3020>
2023-11-18 18:00:43 +00:00
Jonas Dreßler
65e56183b1 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>
2023-11-18 12:22:51 +01:00
Jonas Dreßler
a59a992daa 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>
2023-11-18 12:22:51 +01:00
Sebastian Keller
8d7dc098b1 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>
2023-11-15 10:21:35 +01:00
Zander Brown
d013555392 iconGrid: Use class handlers for ::child-{added,removed}
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3014>
2023-11-14 11:11:03 +00:00
Zander Brown
0204920d8c st/bin: Use class handlers for ::child-{added,removed}
Now these signals are directly on ClutterActor, we can use class handlers
instead

Note we don't make the same change to StScrollView as it would clash
with the internal children.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3014>
2023-11-14 11:10:53 +00:00
Zander Brown
552f1456eb st/scroll-view: Adapt for ::child-{added,removed}
These were previously known as ::actor-{added,removed}

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3014>
2023-11-14 11:09:03 +00:00
Zander Brown
596efc3fa9 js: Adapt for ::child-{added,removed}
These were previously known as ::actor-{added,removed}

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3014>
2023-11-14 11:09:02 +00:00
Zander Brown
ab7ed393cb st: Adapt for ClutterContainer removal
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3014>
2023-11-14 11:09:02 +00:00
Zander Brown
f9ee0c9e45 shell/window-preview-layout: Adapt for ClutterContainer removal
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3014>
2023-11-14 11:09:02 +00:00
Sam Hewitt
0bc6a024be style: Improved monitor label osd
- drops OSD style for blue
- fixes #7140

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3016>
2023-11-13 15:44:32 -03:30
Sebastian Keller
ee5819f870 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>
2023-11-11 22:36:02 +01:00
Ngọc Quân Trần
7f3dad225b Update Vietnamese translation 2023-11-11 06:59:07 +00:00
Ngọc Quân Trần
b8a58564a1 Update Vietnamese translation
(cherry picked from commit cf682750c36fcbe4dad774fd016882b00c7ad1ad)
2023-11-11 06:48:04 +00:00
Zander Brown
a830edf8cf js: Cleanup use of StBin
StBins (inc StButton) should have their content managed via :child
rather than add_child()

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3010>
2023-11-10 20:19:13 +00:00
Zander Brown
49cca32ca5 js: Cleanup usage of StScrollView
Whilst you *can* use add_actor() with ScrollView, it's more idiomatic to
work on :child

Cleanup a few extras along the way

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3010>
2023-11-10 20:19:13 +00:00
Zander Brown
c72742486f environment: Stop patching StBoxLayout
Child properties are long gone, and add() can be directly replaced with
add_child()

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3010>
2023-11-10 20:19:13 +00:00
Zander Brown
350cd296fa js: Stop using ClutterContainer API
These have been long deprecated over in clutter, and (via several
vtables) simply forward the call to the equivalent ClutterActor methods

Save ourselves the hassle and just use ClutterActor methods directly

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3010>
2023-11-10 20:19:13 +00:00
Zander Brown
ed3b8d093e st/bin: Stop implementing a ClutterContainer
Instead we react to ::actor-{added,removed} and delegate to ClutterActor

Code should still interact with :child rather than {add,remove)_child(),
but at least we now avoid the footgun where the different APIs did
different things

Fix: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/3172
Fix: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/2661
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3010>
2023-11-10 20:19:13 +00:00
Zander Brown
35cb2b5385 screenshot: Don't abuse StButton
It's an StBin, so can only have one child, yet we are adding multiple —
something we get away with by overriding allocate

Instead of doing that, move the content to it's own actor

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3010>
2023-11-10 20:19:13 +00:00
Zander Brown
42fc986e91 st/scroll-view: Stop implementing ClutterContainer
Instead, listen to ::actor-{added,removed} allowing ClutterActor's
regular add/remove API to work as expected — at least so long only one
child is added

We also no longer inherit StBin as we actually have up to three
children (including the two scrollbars), but by implementing :child
ourselves the API seen by JS is unchanged

Fix: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/2661
Fix: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/3172
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3010>
2023-11-10 20:19:13 +00:00
Florian Müllner
b36f81b955 st: Adjust to ClutterBinAlignment removal
The custom alignment property was removed, so the convenience
constructor lost the corresponding parameters.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3013>
2023-11-10 00:29:50 +01:00
Sebastian Keller
4722dd0d32 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>
2023-11-08 15:01:10 +01:00
Barnabás Pőcze
3e7027821d 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>
2023-11-05 03:29:12 +01:00
Carlos Garnacho
a93465ed69 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>
2023-11-03 20:47:44 +00:00
Carlos Garnacho
7b1223a254 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>
2023-11-03 20:47:44 +00:00
Sebastian Keller
9153876764 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>
2023-11-03 20:39:28 +00:00
Sebastian Keller
f1b7af2ab0 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>
2023-11-03 20:33:23 +00:00
Robert Mader
c032bb62a5 shell/screenshot: Use MtkRegion
Remove the last user of cairo_region_t in favor of MtkRegion, fixing a
build warning.
2023-11-03 16:21:51 +01:00
Florian Müllner
5fa08fe533 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>
2023-11-02 17:50:04 +01:00
Sebastian Keller
bf742c3926 Revert "shell/window-tracker: Exclude screen recorder window"
This reverts commit 575ba13b9b4efa40f07d57d87d50d8f0466f2e16.

That commit did not actually prevent the "Unknown" application from
showing up in the dash or app switcher when the recorder was running,
but it introduced a problem with Proton which also uses gstreamer OpenGL
elements in its transcoder. This was causing the overview to get stuck
while the transcoder was running due to the app for the
"OpenGL Renderer" window being null.

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/7042
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3000>
2023-10-30 12:58:05 +01:00
Bilal Elmoussaoui
fe292ac941 st: Use correct type for CoglTexture
No idea how come CoglPipeline was used here but the fact that everything
was a CoglHandle, made things just work despite being wrong?

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2964>
2023-10-29 21:28:31 +00:00
Bilal Elmoussaoui
71accdd978 st: Adapt to CoglObject removal
Also use more memory management macro helpers

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2964>
2023-10-29 21:28:31 +00:00
Hugo Carvalho
8f09b2f4a5 Update Portuguese translation
(cherry picked from commit 92780927cdb07f37d2d41f70cabe6152b92ce214)
2023-10-26 22:09:37 +00:00
Bilal Elmoussaoui
198dde2696 st: Stop using Clutter cairo helpers
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2808>
2023-10-25 21:35:18 +02:00
Bilal Elmoussaoui
ef9113da43 ui/environment: Add a setSourceColor helper
To simplify porting away from Clutter cairo helpers

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2808>
2023-10-25 21:35:18 +02:00
Bilal Elmoussaoui
64c8d94d2b Adapt to Clutter -> Cogl pixel format
As the pixel format made more sense to be part of CoglPixelFormat and
was moved there

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2808>
2023-10-25 21:35:18 +02:00
Sebastian Wick
d383f4acac shell-app: Make recent all app windows on the target workspace
meta_window_raise_and_make_recent_on_workspace now works on a target
workspace instead of the active workspace. We call this before another
workspace is made active so the previous behavior made the window the
MRU window on the wrong workspace. If an app got activated and one
window closed, the stacking and focus diverged.

Related: https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3315
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2991>
2023-10-25 14:05:40 +02:00
Марко Костић
c6dc2c1974 Update Serbian translation
(cherry picked from commit acf5593bf86fc7c9ca015bada2535978c3007b13)
2023-10-24 04:04:34 +00:00
Sebastian Keller
23bcff3348 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>
2023-10-23 01:29:12 +02:00
Artur S0
2f19a8cc4d Update Russian translation 2023-10-22 16:04:07 +00:00
Alessandro Bono
1c05a64622 dash: Update comment
The dash is at the bottom of the overview now.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2988>
2023-10-21 15:09:35 +00:00
Alessandro Bono
552d2172bc dash: Move item declaration on top
Otherwise it is not clear what is the item variable that we are
passing to _itemMenuStateChanged().

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2988>
2023-10-21 15:09:35 +00:00
Alessandro Bono
b4676f0e9e 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 ee09c5c85312f571e14abe69bb6674a361c16d65 we are sure that
duration 0 is always preserved.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2987>
2023-10-21 15:02:55 +00:00
Alessandro Bono
46219b1101 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 ee09c5c85312f571e14abe69bb6674a361c16d65 we are sure that
duration 0 is always preserved.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2987>
2023-10-21 15:02:55 +00:00
Alessandro Bono
1571171a21 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 ee09c5c85312f571e14abe69bb6674a361c16d65 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>
2023-10-21 15:02:55 +00:00
Alessandro Bono
be49c8efc2 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 ee09c5c85312f571e14abe69bb6674a361c16d65 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>
2023-10-21 15:02:55 +00:00
Martin Zurowietz
7d835bf455 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>
2023-10-21 14:04:10 +00:00
Ekaterine Papava
c7769da797 Update Georgian translation 2023-10-18 20:47:04 +00:00