* Set the right accessibility relations, as
AdwPreferencesGroup does not manage it
for custom listboxes
* Handle `keynav-failed` for proper behavior with arrow keys
* Set `selection-mode` to none
This should significantly simplify these panels, by not forcing
them to override GObject.constructed all the time. Most panels
were quite straightfoward.
Make the panel class provide a cancellable that will be cancelled when the panel
is destroyed. Panel implementations can use this and not have to mangage the
cancellable themselves. Consolidate cases where panels had multiple cancellables
that were all being used for this behaviour.
This decouples the user interface parts from the control logic,
making it easy for designers to tweak the look & feel of the rows.
Besides, it makes it easier to introduce Drag & Drop capabilities.
The search and notification panels have similar list rows,
as they both list applications. This gives the list rows more
consistent layouts - application icons are made to be 32px
throughout and row heights are made to be the same.
Note that the row widths are unfortunately still different.
https://bugzilla.gnome.org/show_bug.cgi?id=786384
Currently, the search panel looks for search providers in
DATADIR/gnome-shell/search-providers. This won't work when providers are
located in a different directory which is still part of XDG_DATA_DIRS,
which is a valid use case and supported by gnome-shell.
This commit refactors the loader code to scan all the directories
upfront in a separate thread.
https://bugzilla.gnome.org/show_bug.cgi?id=739148
Search providers that should be disabled by default come with
a DefaultDisabled=true key in their keyfile, and are enabled
with the "enabled" whitelist, not with the "disabled" blacklist.
https://bugzilla.gnome.org/show_bug.cgi?id=734109
Search providers can either have an explicitly configured sort order,
or be in the default alphabetical order based on their name.
Previously, when moving we would always assume that all providers had
a sort order, so moving an unsorted provider would put at the top.
The right thing to do, instead, is to walk the list in visual order
and assign an appropriate sort order, that is then flushed to gsettings.
https://bugzilla.gnome.org/show_bug.cgi?id=694975
Previously, we kept the last panel in the configured order last,
after non configured ones.This would assign a sort order to the last
panle that would place it in the middle, but visually sort it last,
and that caused problems when moving it (it would jump into an apparently
random position in the middle, according to the sort ID, and would
move the nearby provider too).
https://bugzilla.gnome.org/show_bug.cgi?id=694975
This makes loading faster, with less I/O, avoids unnecessary
code duplication (around 1k lines shaved), and ensures that
all the panels link and work appropriately.
By the same token, it will stop external panels from being
created, and loaded.
https://bugzilla.gnome.org/show_bug.cgi?id=690036
Instead of either hard-depending on Tracker being installed, or crashing
when the Tracker GSettings schema is not found, make the configuration
insensitive if the schema is not available.
https://bugzilla.gnome.org/show_bug.cgi?id=687490