Commit graph

49 commits

Author SHA1 Message Date
Matthijs Velsink
98604e92ae shell, cc-panel: Remove unused struct member
The `subpage` struct member was previously used to communicate subpage
changes via a notify signal.

That's not done anymore, so we can remove it.
2024-05-27 08:00:46 +00:00
Matthijs Velsink
a10ca6d29a shell, cc-panel: Use GTYPE_TO_POINTER/GPOINTER_TO_GTYPE
A `GType` is not an integer, but either `size_t` or `uintptr_t`. So
casting it to int might lose bits of info, resulting in an invalid
`GType`.

Fixes #3062
2024-05-27 08:00:46 +00:00
Matthijs Velsink
6339f2e6d8 shell, cc-panel: Reuse set_subpage() for navigation.push
The `set_subpage()` function already has good error checking for valid
tags, so reuse that for the `navigation.push` action callback.

Note that this likely won't fix #3062, as there the tag must exist in
the hashtable, as `g_object_new()` won't crash if you pass `NULL` to it.
2024-05-27 08:00:46 +00:00
Felipe Borges
ba74864b61 cc-panel: Require explicit "subpage" widget child type for subpages
Require the use of <child type="subpage"> for when an AdwNavigationPage
is expected to be added to CcPanel.navigation.

This way we can avoid programming errors when a child widget is wrongly
packed in the navigation view.

See also https://gitlab.gnome.org/GNOME/gnome-control-center/-/wikis/shell/CcPanel#child-packing

Co-authored-by: Matthijs Velsink <mvelsink@gnome.org>
2024-05-17 09:18:00 +00:00
Felipe Borges
baf3b3bb2b shell, cc-panel: Drop CcPanel.subpage property
CcPanel now handles subpage activation internally, so we no longer
need to make the subpage a public property.
2024-05-17 09:18:00 +00:00
Felipe Borges
725d2490af shell, cc-panel: Add CcPanel.add_static_subpage () method
So that we have an API for adding subpages that are build-conditional.
For example, CcPrivacy.bolt_page and CcPrivacy.location_page.

Normal static subpages should be statically defined in the respective
CcPanel .ui file.
2024-05-17 09:18:00 +00:00
Felipe Borges
d366789bfe shell, cc-panel: Add CcPanel.pop_visible_subpage () method 2024-05-17 09:18:00 +00:00
Felipe Borges
ae00f58136 shell, cc-panel: Add CcPanel.get_visible_subpage () method
So that hub panels can dynamically query what's been shown, since they
lost control over the navigation directly.

This is useful in Privacy, for example, where we check for the current
visible subpage to decide which documentation page to show.
2024-05-17 09:18:00 +00:00
Felipe Borges
12b93138e0 shell, cc-panel: Handle subpage navigation in CcPanel
When CcPanel.subpage is set it also now will check for the existence of
the subpage and handle its presenting itself.

This way hub panels will no longer need to do any static subpage
handling. (e.g. connecting to the "subpage" property).
2024-05-17 09:18:00 +00:00
Felipe Borges
efc6b2d50d shell, cc-panel: Add CcPanel.push_subpage method
So that CcPanel implementations have a method to add their subpages to
the builtin CcPanel.navigation.

Hub panels like System and Privacy have their main landing page composed
in an AdwNavigationPage. Therefore we overwrite the CcPanel.child setter
to add these pages to CcPanel.navigation instead of overwriting
CcPanel.child like we do for all the other panels.
2024-05-17 09:18:00 +00:00
Felipe Borges
522b04643e shell, cc-panel: Add mechanism to overwrite CcPanel.child setter
So that in the future we can pack children based on their types.
2024-05-17 09:18:00 +00:00
Felipe Borges
b01549f853 Shell, cc-panel: Bundle an AdwNavigationView in every CcPanel
So that in the future panels with subpages don't need to have their own
navigation views.

As of now this is useless as implementations of CcPanel will reset the
CcPanel.child object.
2024-05-17 09:18:00 +00:00
Felipe Borges
89c28d3f7f shell, cc-panel: Make CcPanel use gtk widget templates 2024-05-17 09:18:00 +00:00
Felipe Borges
6be167ce95 shell, cc-panel: Make CcPanel a derivable class
Rather than an abstract class, so that we can later provide a base implementation with widget templates.
2024-05-17 09:18:00 +00:00
Felipe Borges
d62f048058 shell: Add CcShell.subpage string property 2024-03-12 10:03:07 +01:00
Marco Melorio
e6ac0b8eed panel: Remove unused and undefined declarations 2023-10-12 10:09:44 +02:00
Marco Melorio
d91f9381f9 misc: Remove unused variables 2023-10-12 10:09:44 +02:00
Marco Melorio
7b8a756a57 shell: Remove unused "sidebar-activated" signal from CcPanel 2023-09-22 11:45:02 +00:00
Marco Melorio
46021b152d shell: Remove sidebar subpages support from panels
They are now unused and they should not be used anymore in new panels.
2023-09-22 11:45:02 +00:00
Alice Mikhaylenko
4e75534b2e Port sidebar widget to AdwNavigationView 2023-08-25 08:00:43 +00:00
Alice Mikhaylenko
4680f362f3 Port to AdwNavigationSplitView 2023-08-25 08:00:43 +00:00
Benjamin Berg
cfc5fdb7c6 shell: Deactivate old panel before creating new one
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
2022-06-20 03:18:30 +00:00
Georges Basile Stavracas Neto
acd59aec65 Rename app-id to org.gnome.Settings
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
2022-01-21 13:08:50 +00:00
Georges Basile Stavracas Neto
4073c881d1 panel: Remove cc_panel_get_title_widget
This is now unused.
2022-01-20 02:23:42 +00:00
Georges Basile Stavracas Neto
d2d3669d34 panel: Add titlebar to panels
Make CcPanel override GtkBuildable, and special-case two types
of children: "content" for the main content, and "titlebar" for
the titlebar. Those two child types exist merely for convenience,
since it's still possible to override the entire panel with
adw_bin_set_child().

For now, no panel is using any of these conveniences.
2022-01-20 02:23:42 +00:00
Georges Basile Stavracas Neto
3d06a71b38 panel: Add empty UI template file
The UI file currently has nothing, but we'll increment it soon
with the headerbar.
2022-01-20 02:23:42 +00:00
Georges Basile Stavracas Neto
48a9141bed panel: Add "title" property
Will be used by the panel titlebar to have the proper title.
2022-01-20 02:23:42 +00:00
Georges Basile Stavracas Neto
7476bef815 panel: Add 'folded' property
This property keeps track of whether the panel is folded
into the main leaflet. Will be used when moving headerbars
into the panel themselves.
2022-01-20 02:23:42 +00:00
Georges Basile Stavracas Neto
0818bf469c panel: Port to GTK4
Inherit AdwBin.
2021-12-14 22:34:21 -03:00
Robert Ancell
de2b8f305a shell: Remove dead code 2020-02-10 11:19:23 +13:00
Robert Ancell
93b14a4339 panel: Move shared GCancellable code into panel class
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.
2020-02-03 09:36:24 +13:00
Robert Ancell
19ccad96ae Whitespace fixes for g_autoptr coding style 2019-11-08 09:42:10 +13:00
Adrien Plazas
dbfc3e4c7a panel: Add the sidebar-activated signal
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.
2019-01-21 21:53:21 +00:00
Georges Basile Stavracas Neto
6541c128df
trivial: Update code style 2018-11-16 15:19:08 -02:00
Georges Basile Stavracas Neto
75167f45fd
panel: Add get_sidebar_widget() vfunc
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.
2018-11-16 15:19:08 -02:00
Georges Basile Stavracas Neto
3e9425aee3
panel: Remove size negotiation machinery overrides
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.
2018-11-16 15:18:59 -02:00
Georges Basile Stavracas Neto
7e2865131b
panel: Remove unused macro 2018-11-16 15:18:59 -02:00
Robert Ancell
c0f41daff0 shell: Remove the lock button from the shell
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.
2018-10-18 00:25:40 +00:00
Georges Basile Stavracas Neto
b261bcaf99 panel: Update code style
This is just an almost-trivial commit that ports
CcPanel to use the latest code practices around.
2018-05-29 16:07:04 -03:00
Carlos Garnacho
b24ccb9415 shell: Add cc_panel_get_title_widget() vmethod
So the panel implementations will be able to set a custom widget
in the shell headerbar. It defaults to NULL, so by default panels
set the plain label with the panel title.
2016-11-04 23:26:23 +01:00
Christophe Fergeau
c84722248e shell: Revert "Let panels have their own commandline flags"
This reverts commit 31a8a99440.

This was meant for bgo#695885 which has stalled for a while, so this
feature has no in-tree user. This commit removes it for now, this can be
readded when users for it materialize.

https://bugzilla.gnome.org/show_bug.cgi?id=751597
2015-07-16 11:49:34 +02:00
Daniel Mustieles
2c5951819d Updated FSF's address 2014-01-29 11:27:38 +01:00
Bastien Nocera
ce0387d54f shell: Assert when the panel is empty
Rather than getting a segfault.

https://bugzilla.gnome.org/show_bug.cgi?id=719711
2013-12-06 11:59:03 +01:00
Emanuele Aina
4e42a36133 shell: Fix warnings for the GVariant-encoded parameters
This fixes a spurious warning about ignored parameters due to the
variant not being NULL since it now contains the flags dictionary.

https://bugzilla.gnome.org/show_bug.cgi?id=700530
2013-05-17 17:01:28 +01:00
Emanuele Aina
31a8a99440 shell: Let panels have their own commandline flags
Add a class method to CcPanel to get a GOptionGroup which will be added
to the main commandline parser. This gives panels the chance to have
commandline "--flags" in addition to the already available parameters.

This changes changes the way parameters are passed to panels: the first
entry in the GVariant array is always the a{sv} dictionary of
commandline flags, followed by the remaining free-form arguments.

https://bugzilla.gnome.org/show_bug.cgi?id=696054
2013-04-03 18:09:11 +02:00
Emanuele Aina
9977bb200e shell: Use GVariant to convey panel arguments instead of a string array
By using a GVariant of type "av" we can potentially pass more structured
data to panels, which will become relevant with the ability to invoke
them by GAction-based DBus-activation introduced in the following patch.

https://bugzilla.gnome.org/show_bug.cgi?id=696054
2013-04-03 18:02:10 +02:00
Bastien Nocera
876d41b141 shell: Pass args to existing panels
When re-activating the same panel, we could destroy and recreate the
panel, or better reuse the panel, and set the new argv
(usually to switch pages).

Since we're changing the "argv" property of panels to not be construct-
only anymore, we reviewed the panels for potential memory leaks as well.

https://bugzilla.gnome.org/show_bug.cgi?id=684490
2012-09-20 22:58:32 +02:00
Florian Müllner
6827068ade cc-panel: Add get_help_uri() vfunc
We want to allow panels to point to a specific help page, so add
a vfunc for that.

https://bugzilla.gnome.org/show_bug.cgi?id=675471
2012-05-18 18:48:37 +02:00
Bastien Nocera
27c45abda3 shell: Merge libgnome-control-center into main binary
This fixes problems with the CcEditableEntry type not being
registered and causing the printers and user-accounts panels not to
work. As we do not need to work on Windows, we do not need to split
out the library.
2011-11-07 18:03:14 +00:00
Renamed from libgnome-control-center/cc-panel.c (Browse further)