Currently you can get stuck in the applications panel if you do this:
1) Click "Applications" in the sidebar. The top left icon is a back
icon.
2) Click the back icon to return to the panel list. The top left icon
changes to a search icon.
3) Click "Applications" again. The top left icon remains a search icon
and you're stuck in the panel.
The basic problem is that the headebar icon is update when the panel
changes, but not when the sidebar view changes. To fix this, we connect
to the signal that is emitted when the sidebar view changes, and update
the headerbar.
Use the new designs:
https://wiki.gnome.org/Design/SystemSettings/Sound
The existing panel was very old and had a very traditional layout that didn't
align with the new designs. Initialy this patch modified existing elements of
the old panel but the change was so great that new widgets were written. Some
of the widgets have algorithms taken from the old panel.
The sound files and icons are from the old panel.
Ensure all panels take at least 300pt of width to ensure a minimum of
usability, readability of the panels and consistency of when the shell
folds itself.
This is necessary for the application panel to warn that an element of
its sidebar has been activated so the window can focus on it when the
window will use a leaflet.
Our public name is Settings not Control Center.
In the description, simplify and use "system" instead of "desktop".
"GNOME desktop" is still mentioned in the summary but that seems
ok to me.
This is an initial implementation of most of the
intended functionality for this panel. Flatpak
integration itself is implemented by spawning
"flatpak info -m $appid", which gives us the
metadata in key file format, and allows flatpak
to be a runtime dependency.
Even after removing the .desktop suffix, there can
still be a difference between the app ID generated
in this way and the flatpak ID, since flatpaks are
allowed to export files whose prefix is the flatpak
ID. Fix this by pulling the X-Flatpak key out of
the desktop file. This would cause trouble for
org.libreoffice.LibreOffice-math.
Add initialize_dependencies() to factorize the dependecies
initialization functions for better readability as another dependency
to initialize will be added in a following commit.
With the new sidebar view in place, a new problem arose: we
need the current panel to be configured to update the title,
but cc_panel_list_add_sidebar_widget() changes the view while
activating the panel. That makes Settings crash.
Fix that by explicitly updating the headerbar widget, instead
of using notify::view of the panel list.
Instead of directly selecting the view that the panel
list will have, let it decide which is the previous
view instead.
This does not change anything functionality wise, but
in the future where we have sidebar widget (and thus
the main window does not control which view the sidebar
is display) this will be important.
This vfunc is the entry point for panels that have
a sidebar widget. It must never return NULL.
At this point, nothing uses it and this vfunc does
not impact execution of the program.
These overrides were added eight years ago, as a port from
GTK3's size_request() deprecation, in commit f5f5aac5c0.
These overrides are not necessary these days, since they
just reproduce the default behavior now.
Remove these overrides then.
It will be used by the next commits to look for the panel
name. That is because the panel name is what will be used
as the first headerbar title of panels with a sidebar widget.
This commit does a few different bit interwined things to the
build steps:
* Make libtestshell and gnome-control-center share more of the
variables and resouces;
* Use 'dependencies' instead of 'link_with' for libshell;
* Add some visual marks as comments;
Add documentation comments to the public functions, which
has the additional benefit of adding visual marks for
public functions and making it easier to navigate through
this file.
In order to introduce test panels, which are a nice to have
feature before actually moving to working on the custom
widget on sidebar feature, add a way to override the panels
vtable and load whatever panels we might want.
We will allow test panels to be added, so the vtable must
be overridable. The first step into making it overridable
is exposing the actual vtable struct.