Commit Graph

16182 Commits

Author SHA1 Message Date
Carlos Garnacho
047691b0d3 inputMethod: Do not communicate preedit text change on reset
This is now done in the ClutterInputFocus for us, since
https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1940. There
is no need to duplicate this call, and it happens to cause undesired
scrolling to content in some cases when this reset happens during
a change in the IM focused client state.

Fixes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/4647
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2011>
2021-11-01 17:02:50 +00:00
Carlos Garnacho
286cfdc6d4 inputMethod: Equate empty preedit string to null
If we get '' from the IM as the preedit string, it is pretty safe
to handle it as "no preedit" altogether.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2011>
2021-11-01 17:02:50 +00:00
Florian Müllner
b93342f72e dbusServices/extensions: Only allow one dialog at a time
Showing multiple preference dialogs at the same time (for instance
by repeated `gnome-extensions prefs` calls) may or may not work as
expected, depending on whether any of the dialogs is modal or not
(read: opened via the Extensions app).

The easiest way to address this is to disallow more than a single
dialog at the time. It's arguably also the more predictable behavior,
and means extensions don't have to deal with inconsistent state
caused by multiple dialogs.

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

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2013>
2021-10-30 21:50:47 +00:00
Florian Müllner
4d2b008966 dbusServices/extensions: Fix shutdown after showing prefs
GTK4 relies entirely on refcounting for cleanup (that is,
there is no longer a destroy() method that forces a dispose
run regardless of the refcount).

Unfortunately that makes cleanup harder in (some) language
bindings, where an object may be kept alive implicitly by
closures etc.

Address this by releasing the hold count when the window
is closed rather than when it is destroyed.

This isn't the most elegant, but it ensure that the service
doesn't get stuck if an extension doesn't carefully clean
up everything in its prefs widget.

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

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2013>
2021-10-30 21:50:47 +00:00
Florian Müllner
09ed1c533c extensions-tool/prefs: Log D-Bus errors
We currently ignore any error that may occur when calling the
OpenExtensionPrefs D-Bus method. Right now such an error is highly
unlikely, given that we already checked that we are running under
gnome-shell and the extension in question exists and has prefs.

We'll soon make sure that only one dialog is shown at any time,
which is an error that we can realistically expect, so handle that
properly.

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

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2013>
2021-10-30 21:50:47 +00:00
Florian Müllner
79f448958b extensions-tool: Add missing newline
Unlike g_warning() and friends, g_printerr() does not append
a trailing newline.

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

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2013>
2021-10-30 21:50:47 +00:00
Sebastian Keller
bc32a52108 shell/app: Don't move all workspace windows to their startup workspace
Windows from some applications, such as guake, are created as showing on
all workspaces. When these windows are put on the workspaces via
set_workspace_state() during construction, the first time the window is
added to a workspace in the loop triggers the shell app tracker which
then tries to move the window to its startup workspace. This makes the
window unsticky which triggers another set_workspace_state() which
tries to remove the window from all workspaces, but currently it is only
on the first one and then adds it to the startup workspace. Once that is
finished, the first set_workspace_state() continues adding the window
to the remaining workspaces, despite the window now no longer having
on_all_workspaces set to true.

When the window is now unmanaged, the window according to its internal
state is only found on the startup workspace, so it will only be removed
from that. This causes the assertion to fail that checks that the window
is no longer present on any workspace after this.

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

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2014>
2021-10-30 13:21:17 +02:00
Carlos Garnacho
ff4ff66498 Revert "st: Only use clutter_actor_invalidate_paint_volume() if the API exists"
Since we are past the 40 API change hurdle, it is safe to revert this
commit.

This reverts commit 1cefd589da.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2010>
2021-10-27 19:51:27 +02:00
eshagh shahidani
69c66b0946 Update Persian translation
(cherry picked from commit 025588b89a)
2021-10-25 20:42:38 +00:00
Rūdolfs Mazurs
1d2c85d1b7 Update Latvian translation
(cherry picked from commit ce2ae0642f)
2021-10-25 17:56:55 +00:00
Florian Müllner
cc5cc0d653 environment: Apply autoReverse/repeatCount to all transitions
Like the old Tweener API, ease() allows to transition multiple
properties at once. If autoReverse or repeatCount are specified,
they should apply to all transitions, but right now we only set
them for the first one.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2007>
2021-10-21 19:52:33 +02:00
Selyan Slimane AMIRI
e7a90d98ae Update Kabyle translation
(cherry picked from commit 8c5d552cc2)
2021-10-16 14:35:26 +00:00
Ray Strode
d7b1264897 sessionMode: Drop allowExtensions property
Now that we allow extensions at the lock screens, extensions
are allowed for every session mode gnome-shell would typically
change to at runtime.

This means there's little advantage to having an allowExtensions
property in the session mode definition.

This commit simplifies the code a bit by dropping the property.

Third party session modes can still lock down extensions through
gsettings if they need to.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1967>
2021-10-14 18:40:53 +00:00
Ray Strode
2bf31dc49f sessionMode: Allow extensions at the login and unlock screens
Now extensions can specify which session modes they work in,
but specifying the login screen or unlock screen session modes in
an extensions metadata still won't work, because those session
modes disallow extensions.

This commit fixes that.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1967>
2021-10-14 18:40:53 +00:00
Ray Strode
242cff7abf extensionSystem: Allow extensions to run on the login screen
At the moment it's not realy possible to extend the login screen to do
things it doesn't have built-in support for. This means in order
to support niche use cases, those cases have to change the main
code base. For instance, oVirt and Vmware deployments want to be able
to automaticaly log in guest VMs when a user pre-authenticates through a
console on a management host. To support those use cases, we added
code to the login screen directly, even though most machines will never
be associated with oVirt or Vmware management hosts.

We also get requests from e.g. government users that need certain features
at the login screen that wouldn't get used much outside of government
deployments. For instance, we've gotten requests that a machine contains
prominently displays that it has "Top Secret" information.

All of these use cases seem like they would better handled via
extensions that could be installed in the specific deployments. The
problem is extensions only run in the user session, and get
disabled at the login screen automatically.

This commit changes that. Now extensions can specify in their metadata
via a new sessionModes property, which modes that want to run in. For
backward compatibility, if an extension doesn't specify which session
modes it works in, its assumed the extension only works in the user
session.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1967>
2021-10-14 18:40:53 +00:00
Ray Strode
7e5ee2c282 extensionSystem: Get rid of _enabled boolean optimization
At the moment a session mode either allows extensions or it doesn't.
If it allows extensions, then the entire available list of
configured extensions get enabled as soon as the session mode is
entered.

Since enabling or disabling extensions is an all or nothing situation,
the code tracks whether extensions are already enabled when entering
the session mode, and if so, avoids iterating through the extension list
needlessly. It does this using a boolean named _enabled.

In the future, the extensions themselves will be given some say on
whether or not they should be enabled in a given session mode. This
means, the configured extension list may contain extensions that
shouldn't be enabled for a given session mode, and the _enabled boolean
will no longer be appropriated.

This commit drops the _enabled boolean optimization.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1967>
2021-10-14 18:40:53 +00:00
Florian Müllner
7bde02c1cf Post-branch mutter API bump
Since the CI pipeline now runs `meson dist` which includes a test
for an up-to-date NEWS entry, post-branch/release version bumps
have become unwieldy.

It's still useful to increase the API version right after branching
though, so return to bumping it manually and do so now.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2005>
2021-10-14 19:01:41 +02:00
Florian Müllner
2dcbf5f33b theme: Fix high-contrast switches
Commit 9d6fcfdc85 dropped the different us/intl switches, but
the high-contrast theme was left out at the time (and therefore
ends up with the regular assets now).

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

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2000>
2021-10-14 14:12:10 +00:00
Ray Strode
ddb6276a49 st/password-entry: Fix crash when DConf changes after StEntry is destroyed
commit 8721c5db37 made StPasswordEntry
honor the 'disable-show-password' setting.

Unfortunately, it introduced a lifecycle bug where the signal handler
for noticing setting changes can out live the entry itself.

This commit fixes the problem by using g_signal_connect_object

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2004>
2021-10-12 15:27:35 -04:00
Marek Černocký
c1c0b34d77 Updated Czech translation 2021-10-10 17:18:11 +02:00
Carlos Garnacho
4e5ddc5459 ci: Install mutter again on coverity job
This job "needs" the build job and thus gets its artifacts, but
it will not inherit the environment where we already installed
Mutter in /usr. This apparently broke once there was a more
recent mutter-clutter .pc file to look up.

Install Mutter in /usr again in this job, so the new build for
coverity finds all dependencies.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1979>
2021-10-08 16:17:04 +00:00
Ray Strode
ceee53aa0a unlockDialog: Properly reset auth prompt when showing it
If a user hits escape twice really fast when coming back to
their machine to unlock it, they made end up getting presented
with a non-functional unlock screen that doesn't show their
user icon and doesn't ask for a password.

This is because showPrompt assumes that if an auth prompt already
exists, it's ready to go. That may not be true, if it's in the
process of getting torn down at the time because it's in the middle
of a cancel animation.

This commit solves the problem by ensuring the auth prompt is always
in a fresh reset state before showing it.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1999>
2021-10-08 11:56:23 -04:00
Ray Strode
5d5bfe492c unlockDialog: Don't create AuthDialog just to finish it
If the the unlock dialog gets finished before an auth dialog is
created, the code currently creates one just to tell it to finish.

This commit changes the code to skip creating the auth dialog in
that case.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1999>
2021-10-08 11:13:11 -04:00
Florian Müllner
4d1ce0de41 notificationDaemon: Fix sound-file support
When commit 25bfe99ed5 replaced the thin libcanberra wrapper
with the (then) new MetaSoundPlayer API, it missed that the latter
expects files as GFile instead of a file path.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1991>
2021-10-06 17:39:01 +00:00
Florian Müllner
a3dcdaae30 screenshot: Unrestrict PickColor
Commit dd2cd6286c restricted callers of the screenshot methods to
portal implementations, gnome-settings-daemon and gnome-screenshot.

That restriction does make sense for the actual screenshot methods,
but `PickColor` is actually used by GTK in its color picker (and
therefore may be called from arbitrary applications).

Fix this by unrestricting access to `PickColor` again. Considering that
the method is always interactive, it's not very privacy/security-sensitive
anyway.

https://gitlab.gnome.org/GNOME/gtk/-/issues/4283

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1990>
2021-10-06 17:34:18 +00:00
Jakub Steiner
82e16a206f Add screen protect status icons
- OSD needs them

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

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1996>
2021-10-06 17:29:25 +00:00
Goran Vidović
c0b89381ac Update Croatian translation 2021-10-06 17:08:50 +00:00
Florian Müllner
7f77b6f054 welcomeDialog: Fix title translation
Translators translate the format string ('... GNOME %s'), not the
substituted one ('... GNOME 41').

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

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1998>
2021-10-05 15:05:18 +02:00
Christian Hergert
380d2db1d9 inputMethod: Clear preeditStr before reset
Previously, these were performed in a different order before GNOME 41.
During some other changes they were swapped.

However, this causes both GTK 3 and GTK 4 applications to scroll to
incorrect positions from the preedit change.

Fixes #4647
Fixes GNOME/gtk#4289
Fixes GNOME/gnome-builder#1536
Fixes GNOME/gnome-builder#1531

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1993>
2021-09-30 17:12:02 +00:00
Marco Trevisan (Treviño)
2bcc6c09ed st/icon: Ensure icons are updated if theme node is invalid
Icons that are changed while an actor is not mapped may not have a theme
node associated with, and thus we'd end up not updating them at all.
In fact we return early in st_update_icon(), and this was not an issue
until commit 0b1dfbf6f3, because we'd end up to update the icon anyways
once the style was changed (and so with a valid theme node), but since
such change we might not updating the icon if no theme detail changed.

To prevent this, add a flag to require an icon update when the theme
changed, if no successfully update happened earlier.

Fixes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/4568
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1983>
2021-09-30 18:55:11 +02:00
Sveinn í Felli
3685cb15c6 Update Icelandic translation 2021-09-30 13:09:18 +00:00
Yaron Shahrabani
5dfc3c1ef8 Update Hebrew translation 2021-09-27 08:14:57 +00:00
Emin Tufan Çetin
b837ca4031 Update Turkish translation 2021-09-26 12:18:02 +00:00
Ngọc Quân Trần
20c937f5a0 Update Vietnamese translation 2021-09-26 01:29:27 +00:00
Jonas Ådahl
563437de91 Always assume GLSL is supported
The support for GLSL has been advertised as unconditionally supported by
mutter for a while, and has now lost the 'GLSL' feature completely. Lets
remove the checks.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1985>
2021-09-21 16:37:01 +02:00
Марко Костић
1bf446b373 Update Serbian translation 2021-09-20 04:23:46 +00:00
Florian Müllner
0bf515eb10 Bump version to 41.0
Update NEWS.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1981>
2021-09-19 12:47:55 +02:00
Efstathios Iosifidis
8cb689e2c5 Update Greek translation 2021-09-17 18:42:18 +00:00
Jordi Mas
8a5361c05c Update Catalan translation 2021-09-16 21:31:00 +02:00
Alan Mortensen
bee43816f4 Updated Danish translation 2021-09-16 17:06:09 +02:00
Alexander Shopov
f394f2d14a Update Bulgarian translation 2021-09-15 12:04:45 +00:00
Jiri Grönroos
e6c903f4aa Update Finnish translation 2021-09-14 10:18:57 +00:00
Quentin PAGÈS
ffbbdf62fe Update Occitan translation 2021-09-13 19:52:55 +00:00
Nathan Follens
dbdeeff0a0 Update Dutch translation 2021-09-13 14:59:11 +00:00
Piotr Drąg
9cb6d0d4a9 Update Polish translation 2021-09-11 13:49:13 +00:00
Balázs Úr
b1bcf2be7a Update Hungarian translation 2021-09-10 23:09:03 +00:00
Aman Alam
767f2c533a Update Punjabi translation 2021-09-09 03:40:05 +00:00
Jordi Mas
a2d003cde6 Update Catalan translation 2021-09-07 22:32:37 +02:00
Goran Vidović
9ef7e0cf8c Update Croatian translation 2021-09-07 19:49:49 +00:00
Goran Vidović
f8ec7ea1b5 Update Croatian translation 2021-09-07 19:48:16 +00:00