The CcSystemDetailsWindow is fairly slow to create, making the first
opening of it feel slightly unresponsive.
Resolve this by creating the window when idle.
The window should be destroyed and unreferenced when the About page is
disposed to prevent leaking it.
We need to take the reference in order to not repeat #2823, since the
AdwWindow is initially floating.
Initializing the About page involves creating a CcSystemDetailsWindow
too. This costs time, making the System panel open slower because it has
to wait for the About page to finish initializing.
By creating the CcSystemDetailsWindow only when it should be opened, we
save at least 0.1 s when opening the System panel.
Pad and tablet grouping has become more irrelevant to the
Settings UI since commit 39402f21ba, as the EKR is the only
known case of an additional pad with distinct vendor/product
that is tied to another device.
But we preserved the grouping of pads (for the tablet EKRs
get paired with), thus possibly still requesting the pad OSD
to be shown on one of these arbitrarily.
In order to ensure that each "Map Buttons..." button in the
UI goes to the right pad being mapped, drop this grouping of
tablets, and make a CcWacomPage only observe a stylus/pad
pair in the same group (i.e. belonging to the same device, if
multiple similar ones are plugged) and with the same vendor+product
(i.e. coming from the same device).
Closes: https://gitlab.gnome.org/GNOME/gnome-control-center/-/issues/2876
libwacom_has_eraser tells us if this non-eraser tool has an
associated eraser (same serial, different tool id)
libwacom_is_eraser tells us if the current tool is an eraser device.
Now that we always have the stylus for the tool in proximity (see the
previous commit), switch this back to the has_eraser function and
rename it in the process so it's more obviously not the seemingly
obvious interpretation.
This reverts commit 9bd0b94527.
Pens with an integrated eraser share the serial number with the
corresponding pen but differ in the tool ID. libwacom provides a
"paired_id" mapping to look up one from the other.
If the user brings the eraser into proximity the very first time the
tool is seen, the eraser's tool ID is stored in the keyfile instead of
the associated stylus id. This leads to otherwise wrong behavior since
erasers share the serial number with the stylus but don't have any
buttons, don't have any erasers themselves, etc.
Fix this by looking up a matching stylus when we see an eraser. This
effectively filters our CcWacomTool to always be the pen, which is an
inadvertent assumption anyway.
AdwBanner isn't a toolbar and AdwToolbarView won't
be able to style it correctly.
Wrap AdwPreferencesPage and AdwToolbarView into a
GtkBox and place it inside the content widget.
Commit f3f81d37 added a signal connection between dark mode changes and
updating the OS logo in the About page. However, this signal was not
disconnected, causing a crash when changing the dark mode after leaving
the About page.
Fix this by using `g_signal_connect_object ()` instead.
Fixes#2854
Let's not show the page neither crash when there are issues with
finding the remote desktop gsettings in the system, or when the
RemoteDesktop name didn't appear on dbus.
Fixes#2874
This required some archeology: 52d28579 introduced virtual device
support. This was done by getting the virtual device name and testing if
that was `NULL`. Then came 8861d440, which removed virtual devices, but
did not revert fully to the behavior before 52d28579. Combined with
9183d349, this meant that any VPN that has an interface name set, will
never be displayed.
Fix this by reverting to the behavior before 52d28579, while keeping
wireguard support. The added check from ddc35609 is left in, although it
is not clear to me if that is still needed.
Fixes#2822
The theme is considered deprecated in favor of symbolic icons from
the regular theme, and both gnome-shell and the gnome portal stopped
linking it to the high-contrast setting.
We currently hide "Device Security" when running in a VM or an
undefined systemd-hostnamed chassis-type.
This makes our existing check use the CcHostname utility.
The switches from app rows in the Location, Camera
and Microphone pages can't be interacted by clicking
on the rows. Mark these switches as activatable-widgets
to fix that.
Ditch GtkListBox and use AdwActionRow to display
the key options, adding them directly to the
preferences group.
This fixes two issues:
- Orca not reading the key options and their states
- The xkb-modifier-dialog rows looking inconsistent
with other rows with radio buttons, such as the ones
from the Multitasking and Keyboard panels
Also, remove visible=true from the AdwActionRow,
since GTK4 shows all widgets by default.