We need to cancel internal operations before starting to create a new
panel, otherwise panels might be creating the same object for the cache
in parallel and this is not supported by the object cache.
The alternative to this would be to handle this inside the object
store to allow parallel creation of the same key.
Fixes: #1685
Rename the app-id to org.gnome.Settings since this is what
we've been calling it for many years now. Adjust all files
that derive from the app-id, such as the desktop file, D-Bus
service file names, search providers, GSettings schemas, to
match that.
Closes https://gitlab.gnome.org/GNOME/gnome-control-center/-/issues/344
Moving the headerbar to the panels accentuated a pre-existing
problem: transitioning between panels is flickery because we
immediately remove the old panel, while the new panel fades
in.
Improve this transition by delaying the removal of the old
panel to after the stack transition finishes.
The CcWindow tries to unset the focus when first mapping the window.
However this pretty wide check intercepts mapping events from other
windows than the toplevel (e.g. subsurfaces, for popovers). This
causes the focus to move away from the popover, overriding its
modality.
Check that the event received is addressed to the CcWindow's
GDK window before unsetting the focus, so we don't mess with popover
focus.
Fixes: https://gitlab.gnome.org/GNOME/gnome-control-center/-/issues/1327
As per the latest mockups, the Details section is a toplevel
section, and not an actual subsection.
Remove all the code that implemented Details as a subsection,
and simply treat these panels as toplevel ones.
The panel swarms details/devices/privacy show this icon. Since the applications
panel is not made from sub-panels, this doesn't show. For consistency this shows
the icon so the transition isn't as jarring for the user.
Add a flat into the panel .desktop file to enable this - other panels might
require this in the future
When the panel list is folded, either the panel items list or the
panel itself is shown, not both. And when the list is shown it
doesn’t mean anything for an item to be marked as selected.
This allows the window to be folded to show either the sidebar or the
panel when not enough space is available.
This reverts commit 2854669f5c8280a32d0b5fa6c5399cc391ef06f3.
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.
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.
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.
Only the date time panel used it, all other panels add their own shell using
cc_shell_embed_widget_in_header which was added after the date time panel was
written. Update the date time panel to use this method.