When adding new input sources, the first dialog shows a list of
languages, when single clicking one item you go to a subdialog
that has a 'go back' item, that item only works if double-clicking
it, but that is unintuitive because if you entered the dialog by
single click you also expect the 'go back' button to work by
single click too.
The subdialog is a GtkListBox configured to be double click,
because it has an 'Accept' header bar button and we don't
really want to activate the subdialog items by single click,
but the 'go back' row is special and as explained before it is
expected to work by single click too.
So this commit adds the required single click handler for the
'go back' rows created in CCInputChooser.
Fixes#1954
Fixes following warning when activating Users panel:
user-accounts-cc-panel-WARNING **: Error retrieving app filter for user (null): User 4294967295 does not exist
Initialize CcAvatarChooser a bit earlier so it does
not get used by show_user() before creation.
Fixes#2219
The Wi-Fi panel displays an old fashioned status page when NM isn't running. Also, it shows a generic error message instead of explaining why the error occurred.
This commit updates this status page to an AdwStatusPage, Also, it makes clear that the error happens because of NM not running.
Currently, this dialog doesn't have a minimum width and height.
It's possible to shrink it to an unexpected small size.
This commit adds a minimum width and height for this dialog.
This dialog appears with a really small size, making elements almost invisible.
Also, it can be shrunken to an even smaller size.
This commit sets a minimum width and height for this dialog.
Fixes https://gitlab.gnome.org/GNOME/gnome-control-center/-/issues/1826
The current layout intersection algorithm compares pointers to strings.
It assumes that `gnome_xkb_info_get_layouts_for_country()` and
`gnome_xkb_info_get_layouts_for_language()` will return two GList
containing pointers to the same strings. Looking at libgnome-desktop[1]
it seems like this is the case: given the same layout, the same pointer
to the layout id will be stored in both lists. However, this is an
implementation detail and we should not rely on that.
Rewrite the intersection algorithm in order to compare the strings. While
at it, use a more efficient algorithm: add all the items of the first list
to a set, then iterate over the second list and check if the item is in
the set. If this happens, remove the item from the set and add it to the
intersection list.
Probably the layout lists are not big enough to notice the difference, but
the complexity goes from O(N*M) to O(N+M).
[1] 3c8834af09/libgnome-desktop/gnome-xkb-info.c (L281)
country_layouts are being appended to the layouts_with_locale which results in less relevant
layout groupings. for example, we if choose Hindi language which is an Indian language,
all Indian language layouts are shown within it - including Tamil, Bangla etc.
furthermore, language_layouts are also getting appended for countries where they may not
belong, for example, English (Ireland) is shown when we search India.
The layouts_with_locale table is filled as union however it yields better
search results if we change that to intersection.
Relates #2114
When NetworkManager doesn't give us any secrets for a connection, the
connection editor still needs to be opened. This change ensures that
initialization of the editor completes even when there's an error when
fetching secrets.
Fixes#2329
GtkCheckButton accepts a widget as its child and will toggle when
clicking its child, currently we put check button and label of metered
connection into a box, then clicking the label won't toggle the check
button, this differs from the other two check buttons.
This commit makes the label a child widget of the check button, so the
three check buttons behave the same.
When the dialog is closed using ESC key, the "close-request" signal is
emitted in addition to the "response" signal. When the "close-request"
is handled, it frees the memory to which info points. In the "response"
signal handler, the memory of info pointer is accessed again, leading
to a segmentation fault.
Fix this by removing the "close-request" function callback, which shares
the same behaviour as the "response" callback function.
Fixes: https://gitlab.gnome.org/GNOME/gnome-control-center/-/issues/2320
Previously this was problematic because the current layout is a bit
messy. The reasoning is a bit complex, but I'll try to explain below.
Basically the AdwPreferencesGroup has an integrated GtkListBox where the
rows should normally be added to it by declaring AdwPreferencesRow
subclasses as its direct children in the UI file. This is not currently
done in the sound panel and we instead have another GtkListBox as its
direct child, while the "No Devices" row is actually a AdwPreferencesRow
subclass, so we end up with two listboxes with .boxed-list style. The
problem is that we hide the "No Devices" row when there are devices
available, but the internal listbox is still there, so we still see its
shadows.
This commit just separates the "No Devices" row in a separate group so
that we are sure to hide everything correctly.
Just measure the label to make GTK not complain about allocating
children without measuring anything. Measuring all the buttons is an
overkill because we expect this widget to have the minimum size
overwritten by CSS either way.
Changing an active connection applies the changes onto the
NetworkManager connection, but not on the device. This is because
NetworkManager clones the connection when it is applied on a device.
This behavior is expected and documented in the NetworkManager
documentation [1]. To effectively apply the connection changes onto a
device, a reapply operation must be performed. This will make NetworkManager
apply the new connection onto the active device without having to
disable and re-enable the device.
Perform this reapply operation when the Apply button is pressed in the
Connection Editor so the changes effectively propagate to the network
device.
[1] https://networkmanager.dev/docs/api/1.32.10/gdbus-org.freedesktop.NetworkManager.Device.html#gdbus-method-org-freedesktop-NetworkManager-Device.Reapply
This is part of an initiative to use "app" instead of "applications",
see: https://gitlab.gnome.org/Teams/Design/initiatives/-/issues/123
Redo of !1539 that was closed by a ghosting user.
Replaces "application" with "app" in user facing strings in these
panels:
- applications
- camera, location, microphone
- default-apps
- multitasking
- notifications
- removable-media
- search
- usage
- user-accounts
Fixes: #2208.