In order to make the CcBackgroundPaintable more reusable, the way it
draws itself either light, dark, or both needs to be adjustable. We
therefore introduce CcBackgroundPaintFlags that indicate the desired
drawing behavior.
Similar to the previous crashes, if you switch panels after forgetting a
network while the toast is still alive, Settings crashes. This is
because the AdwToastOverlay is not properly disposed because the Saved
Networks dialog is also not destroyed.
However, destroying the saved networks dialog still leaves a crash,
because the overlay disposal first unreferences its child, but we still
need that for the dismissal of the waiting toasts. Therefore, we keep an
extra reference to the saved networks list.
To prevent further crashing, we cannot set "list" to NULL, because there
may be multiple async calls. Also, we have to keep a reference to self
in the async call, otherwise it does not work when you remove many
networks and then switch panels.
As an added bonus, we can now use the saved networks list inside the UI
refresh function.
It is cleaner to define the dialog in a .ui file. Moreover, since we are
initializing the main Visible Networks list in the code, we can
initialize the Saved Networks list in the same location, in the same
style.
When a network is forgotten from the Saved Networks dialog and the
dialog is closed, the toast remains active. However, when you then
quickly reopen the dialog, a new CcWifiConnectionList gets made, which
causes a crash when the toast expires or is dismissed, as the row for
the toast has now become invalid.
Fix this by only setting up the CcWifiConnectionList for saved networks
once.
When forgetting more than one network from the Saved Networks dialog,
there are multiple overlapping toasts. When the first toast expires or
is dismissed, the underlying CcWifiConnectionList is already thawed,
meaning previous rows get cleaned up and new ones generated. When the
next toast then expires or is dismissed, this results in a crash, as the
row belonging to that toast is now invalid.
Fix this by freezing the connection list earlier.
Fixes#2793
Move the page description to AdwPreferencesPage, since
it's the correct place to put the page description.
Also, set up the page description in the C code to
help translators.
- Use the up-to-date style for symbolics (2px outline). Notifications, Printers and Info/About
work fine as outlines.
- filled silouehette symbolic are only to be used where a 2px outline is impossible
to cram to 16x16px canvas.
Some applications have symlinks that point outside of their folder
in their cache/data directories, leading to incorrect, slower
measurements. Namely, Builder has a symlink to the home directory
in its cache folder, which also contains the Builder app directory,
creating recursion and (very) wrong measurements.
By adding the `FTW_PHYS` flag to the function that traverses the
directory and measures folder size, symlinks are ignored.
Closes#2375
Fix many warnings of the shape:
warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
Consequence of casting the pointers during g_clear_pointer
The current system related entries are ambiguous, as it isn't clear
what the actual notifications are.
System services should handle their own notification settings
instead.
Fixes#527Fixes#1175
Row subtitles in Settings are typically a description of the main label or setting.
You can see this in Mouse & Touchpad, Privacy, Sharing, and Wi-Fi.
For the System panel we did something a bit different and used the subtitle to show
the status of each panel.
Given the standard use of subtitles elsewhere, this feels a bit surprising which,
as a result, makes the panel harder to read. I think that a standard description
would probably also be more useful than the current labels.
Mockups https://gitlab.gnome.org/Teams/Design/settings-mockups/-/blob/master/system/system-panel.png?ref_type=heads
This also removes the thin CcSystemPage abstract class because it was
only introduced to add the support for dynamic System row subtitle. Now
this abstraction is no longer necessary.
Fixes#2776
- Use AdwStatusPage
- Use .pill and .suggested-action style classes in
the button from airplane mode status page
And use valign=center, otherwise AdwStatusPage
won't be vertically centralized.
So that the main switch and the page summary are updated when the
backend changes.
With this, the UI reacts to external calls such as
`grdctl rdp enable`.
The Remote Desktop page subtitle was updated asynchronously when
the System panel was loaded but after the following steps:
1. Connection established to `org.gnome.SettingsDaemon.Sharing`
(handled on `sharing_proxy_ready`).
2. Then a check whether Remote Desktop is available by watching
the `org.gnome.Mutter.RemoteDesktop` bus name appear.
3. Then we are finally populating the UI (and updating the
subtitle).
Now we bypass the panel initialization and check directly for the
"enable" state of the backend GSetting and the availability of the
gnome-remote-desktop.service, using `is_remote_desktop_enabled()`.
Fixes#2772
Commit ef644deb made the routes labels for the IPv4 and IPv6 center
properly. However, when stretching the dialog, this centering is lost
because the labels do not horizontally expand.
So let's make all of them horizontally expand.
This option was previously called "Allow Using Keyboard With Touchpad".
Since option label was saying "allow", the switch state needed to be reversed.
Now that the option is called "Disable Touchpad While Typing" again,
the switch state is inverted and, thus, incorrect. Fix that.
In the previous commits we added scrolled windows on all pages, these
scrolled windows propagate their natural size and hence the dialog will
try to present itself with that size.
By having all pages inside of a scrolled window we can now use the
connection editor on mobile devices.
Fixes: https://gitlab.gnome.org/GNOME/gnome-control-center/-/issues/2764
When enabling some a11y options, the a11y menu is automatically
shown in the shell top bar, even when the "Accessibility Menu"
option is disabled. Change the option name to
"Always Show Accessibility Menu" to avoid misunderstandings.
Closes https://gitlab.gnome.org/GNOME/gnome-control-center/-/issues/2690
This icon gets shown when an app cannot be found in the App search.
This change makes us rely on an icon that is part of the theme
instead of assuming gnome-software is properly installed and the
org.gnome.Software-symbolic is available in the system.
Fixes#2561
Previously, when editing a connection that doesn't have native editor
support, nm-connection-editor is spawned to do the work. But after
closing nm-connection-editor, an empty editor dialog still exists.
Fix that in this commit.
When the Bolt page gets disposed before it finishes initializing
its client object we get a crash. See #2700
A way to trigger the crash is to switch panels fast enough so that
the sync dbus call is not finished by the time the panel is disposed.
This is not a guaranteed fix since I can't reproduce the issue
consistently.