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