Commit graph

24041 commits

Author SHA1 Message Date
Automeris naranja
cd97e4f518 apps: Put the search entry instead a GtkSearchBar
Doing so, when the window is narrow, the search entry will
have some padding, avoiding the search entry being too near
to the window borders.
2024-05-19 23:49:05 +00:00
Automeris naranja
d5a055b96c apps: Set the search entry as a top child of AdwToolbarView
Doing so, the search entry won't get hidden when scrolling
through the app list. This is neeeded to stop using the
"No Apps Found" together with AdwPreferencesPage, because
both widgets have a GtkScrolledWindow; this can cause
scrolling to break.
2024-05-19 23:49:05 +00:00
Automeris naranja
870b26ecdc pp-details-dialog: Modernize the UI
- Use modern widgets like AdwPreferencesPage/Group,
AdwEntryRow and AdwPropertyRow

- Set a minimum size for the window

- Add .error class to the printer name entry
when the name is invalid

- Restyle the printer name error message

- Add missing mnemonics
2024-05-19 22:17:12 +00:00
Jordi Mas i Hernandez
0bbeba5124 Update Catalan translation 2024-05-19 07:37:12 +00:00
Automeris naranja
d639a95457 usage: Minor style fixes
- Sort widget and callback names alphabetically in the
C code
- Fix indentation
2024-05-18 11:04:58 +02:00
Automeris naranja
2771714a58 usage: Remove unused stuff
- Remove the "run_warning" method, as it's no longer needed
now that all AdwAlertDialogs are located in the .ui file
- Remove "clear_recent_button" object ID, as it's unused by
the C code
2024-05-18 11:04:58 +02:00
Automeris naranja
e2f68721a5 usage: Port "Delete all the temporary files" to AdwAlertDialog
Also:
- Move the dialog to the .ui file, as this dialog is UI-related
- Don't destroy/force close the dialog, as it will be closed
automatically after the responses are triggered
2024-05-18 11:04:58 +02:00
Automeris naranja
47110c25f1 usage: Port "Empty all items from Trash?" to AdwAlertDialog
Also:
- Move the dialog to the .ui file, as this dialog is UI-related
- Don't destroy/force close the dialog, as it will be closed
automatically after the responses are triggered
2024-05-18 11:04:58 +02:00
Automeris naranja
51f8742df8 usage: Port "Clear File History?" to AdwAlertDialog
Also:
- Move the dialog to the .ui file, as this dialog is UI-related
- Don't destroy/force close the dialog, as it will be closed
automatically after the responses are triggered
2024-05-18 11:04:58 +02:00
Balázs Úr
731d164277 Update Hungarian translation 2024-05-17 23:49:13 +00:00
Martin
f9bc5648f7 Update Slovenian translation 2024-05-17 17:17:10 +00:00
Matthijs Velsink
04338e89e0 po: Add missing POTFILES entry
Fixes commit 73d60296.
2024-05-17 12:36:27 +02: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
24a07fbef4 system: Drop mistaken <child type="child"> xml node in UI file 2024-05-17 09:18:00 +00:00
Felipe Borges
a620b9572f system: Use CcPanel.add_static_subpage
So that we can use CcPanel's mechanism to dynamically create pages on
demand.
2024-05-17 09:18:00 +00:00
Felipe Borges
3f273bee0b privacy: Use CcPanel.navigation rather than own navigation-view 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
632643f992 applications: Use CcPanel.navigation rather than own navigation 2024-05-17 09:18:00 +00:00
Felipe Borges
8eba7d6edd applications: Push navigation page by id not tag 2024-05-17 09:18:00 +00:00
Felipe Borges
8efbae3c8f display: Use CcPanel.navigation instead of own navigation view 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
170842e90a universal-access: Use CcPanel.navigation rather than own navigation 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
d721c0c7ca system: Remove CcSystem.navigation in favour of CcPanel.navigation
Makes use of the cc_panel_push_subpage method.

The changes in cc-system-panel.ui are better reviewed without identation
changes, using "git diff -w", "git show -w".
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
0656fc9f06 system, about: Force untranslated text for system info text content
Fixes #3047
2024-05-17 08:51:40 +00:00
Felipe Borges
44ad87bef7 system, about: Drop translatable strings from "Copy" content
So that users can share the content in English while copying it
into bug trackers.
2024-05-17 08:51:40 +00:00
Christopher Davis
73d60296d1 sharing-networks: Port to AdwPreferencesGroup
Also, make the list box to be a11y-labelled.

Partial rebase of https://gitlab.gnome.org/GNOME/gnome-control-center/-/merge_requests/1239
2024-05-17 08:50:58 +00:00
Jose Riha
dc916f5961 Update Slovak translation
(cherry picked from commit 7f9b65ee04)
2024-05-17 08:01:49 +00:00
Automeris naranja
2867c3e761 user-page: Re-add the notice about the "Automatic Login" option
In [1], CcListRowInfoButton was added to the "Automatic Login"
row to explain what the automatic login option does. However,
it was accidentally removed in [2], so re-add-it.

See also https://gitlab.gnome.org/GNOME/gnome-control-center/-/issues/2235

[1] d586df5c87
[2] d52ec68f8d (679a0ff6735df8f5a352572f78592e3c8610ec9e_136_0)
2024-05-17 07:44:33 +00:00
Matthijs Velsink
354b6f4243 general: Use gtk_widget_dispose_template instead of unparenting
Since GTK 4.8, gtk_widget_dispose_template() is available to
automatically unparent child widgets from templated GtkWidgets. This is
only needed for GtkWidget derived classes, as most other classes will
automatically unparent their children.

This makes widget implementations slightly simpler, and is also
recommended at
https://developer.gnome.org/documentation/tutorials/widget-templates.html

So, start using that function where we can.
2024-05-17 07:41:52 +00:00
Matthijs Velsink
6275e1a165 ce-8021x-security-page: Don't manually unparent child
Commit 340ee1dc fixed #1671, but the real cause of that issue was that
the widget is part of a GtkBox, which will always automatically unparent
child widgets. That caused #1671.

Also, the check for the parent is a left-over from the GTK3 days, and
its GtkContainer usage. In GTK4 there is no way a new widget will
already be inside the GtkBox to begin with.

So, don't unparent the widget at all, and stop checking for its parent.
2024-05-17 07:41:52 +00:00
Matthijs Velsink
e45ae68a5b vertical-row: Don't manually unparent child anymore
In the GTK3 days, HdyPreferencesRow (and GtkListBoxRow) did not
automatically unparent children.

In GTK4, AdwPreferencesRow (and GtkListBoxRow) do, so stop manually
unparenting child widgets.
2024-05-17 07:41:52 +00:00
Automeris naranja
80d86f9d89 add-user-dialog: Port GtkMessageDialog to AdwAlertDialog 2024-05-17 00:23:36 +00:00
Automeris naranja
d014202c3e wifi: Port "Turn Off Wi-Fi Hotspot?" to AdwAlertDialog
Also:
- Move the dialog to the .ui file, as this dialog is UI-related
- Don't destroy/force close the dialog, as it will be closed
automatically after the responses are triggered
2024-05-17 00:20:26 +00:00
Automeris naranja
9a967bc1a9 user-page: Use detailed reponse in AdwAlertDialog
Doing so, the callback doesn't need to have a string to compare.
2024-05-17 00:10:33 +00:00
Automeris naranja
231ea8ccb4 keyboard-shortcut-dialog: Port "Reset All Shortcuts?" to AdwAlertDialog
Also:
- Move the dialog to the .ui file, as this dialog is UI-related
- Don't destroy/force close the dialog, as it will be closed
automatically after the responses are triggered
2024-05-17 00:09:26 +00:00
Jose Riha
917e53eef6 Update Slovak translation
(cherry picked from commit 35105d0f81)
2024-05-16 21:18:28 +00:00
Matthijs Velsink
8e300ae3b9 meson: Fix gtk4 build option name
The option `demos` was already deprecated for a while, but gtk@70cd0e28
dropped it fully. So start using `build-demos` instead.
2024-05-16 21:17:11 +02:00
Philip Withnall
ea014f24eb general: Fix various strict-aliasing warnings with g_clear_pointer()
This is just unfortunate. It’s an aliasing violation to cast a pointer
to a pointer (and there’s no way round that), although in practice it
will not cause a problem. People do quite often compile with
`-Werror=strict-aliasing`, though, so fixing the warnings is helpful.

Warnings are of the form:
```
../../source/gnome-control-center/panels/keyboard/cc-keyboard-shortcut-dialog.c: In function ‘cc_keyboard_shortcut_dialog_finalize’:
../../source/gnome-control-center/panels/keyboard/cc-keyboard-shortcut-dialog.c:518:20: error: dereferencing type-punned pointer will break strict-aliasing rules [-Werror=strict-aliasing]
  518 |   g_clear_pointer ((GtkWindow**)&self->shortcut_editor, gtk_window_destroy);
/opt/gnome/install/include/glib-2.0/glib/gmacros.h:871:47: note: in definition of macro ‘G_STATIC_ASSERT’
  871 | #define G_STATIC_ASSERT(expr) _Static_assert (expr, "Expression evaluates to false")
      |                                               ^~~~
../../source/gnome-control-center/panels/keyboard/cc-keyboard-shortcut-dialog.c:518:3: note: in expansion of macro ‘g_clear_pointer’
  518 |   g_clear_pointer ((GtkWindow**)&self->shortcut_editor, gtk_window_destroy);
      |   ^~~~~~~~~~~~~~~
In file included from /opt/gnome/install/include/glib-2.0/glib/gatomic.h:30,
                 from /opt/gnome/install/include/glib-2.0/glib/gthread.h:34,
                 from /opt/gnome/install/include/glib-2.0/glib/gasyncqueue.h:34,
                 from /opt/gnome/install/include/glib-2.0/glib.h:34:
../../source/gnome-control-center/panels/keyboard/cc-keyboard-shortcut-dialog.c:518:20: error: dereferencing type-punned pointer will break strict-aliasing rules [-Werror=strict-aliasing]
  518 |   g_clear_pointer ((GtkWindow**)&self->shortcut_editor, gtk_window_destroy);
/opt/gnome/install/include/glib-2.0/glib/glib-typeof.h:39:36: note: in definition of macro ‘glib_typeof’
   39 | #define glib_typeof(t) __typeof__ (t)
      |                                    ^
../../source/gnome-control-center/panels/keyboard/cc-keyboard-shortcut-dialog.c:518:3: note: in expansion of macro ‘g_clear_pointer’
  518 |   g_clear_pointer ((GtkWindow**)&self->shortcut_editor, gtk_window_destroy);
      |   ^~~~~~~~~~~~~~~
cc1: all warnings being treated as errors
```

I believe it’s better to fix these by expanding out the
`g_clear_pointer()` call, than by changing the types of variables — the
latter approach means everything becomes a `GtkWidget` or a `GtkWindow`,
which loses type specificity. So this approach is in contrast to that
taken in commit 1bafd46ea3, for example.

Alternative approaches would be:
 1. Add internal `cc_clear_window()` and `cc_clear_widget()` helpers
    which do this in a single line without aliasing violations.
 2. Enforce compiling with `-Wno-strict-aliasing` if strict aliasing is
    not something that g-c-c maintainers want to care about (which would
    be fine, aliasing checks probably won’t catch any bugs in this kind
    of code).

Signed-off-by: Philip Withnall <pwithnall@gnome.org>

Fixes: #2563
2024-05-16 14:01:02 +00:00
Philip Withnall
d2f4fe0447 wwan: Fix an uninitialised variable warning
This is another false positive, where the control flow conditions on
`modem_signal` prevent any reading of `refresh_rate` until after it’s
been initialised.

Compilers aren’t good at static analysis of conditional control flow,
though, so let’s just initialise both variables to safe defaults.

Signed-off-by: Philip Withnall <pwithnall@gnome.org>
2024-05-16 14:01:02 +00:00
Philip Withnall
b86e0e069b wacom: Fix an uninitialised variable error
This fixes an error when building with `-Werror=maybe-uninitialized`.
It’s a false positive, because the `for` loop conditions ensure that a
`default:` case in the `switch` is never needed. However, compilers are
historically quite bad at static analysis of loop iteration count, so
let’s just initialise the variable to a safe default.

Signed-off-by: Philip Withnall <pwithnall@gnome.org>
2024-05-16 14:01:02 +00:00
Philip Withnall
63fbcbfaf9 privacy: Add subfolders to include paths
This fixes commit f00dc11f38. It’s needed
because the generated `enums.c` files refer to files in the
subdirectories by filename with no path.

Signed-off-by: Philip Withnall <pwithnall@gnome.org>
2024-05-16 14:01:02 +00:00
Philip Withnall
3d201fabb1 general: Fix several uninitialised-autoptr variables
autoptr variables must *always* be initialised at the time of
declaration, as the compiler unconditionally inserts the free function
based on the control flow, and constantly re-checking the declarations
whenever you change the control flow in a function is tedious.

Better to just always initialise them to a safe value.

In particular, in these cases, a precondition failure in the function
would have caused the free function to be called on undefined memory,
which would have turned a potentially-graceful error recovery into a
crash.

Spotted by building with `-Werror=maybe-uninitialized`.

Signed-off-by: Philip Withnall <pwithnall@gnome.org>
2024-05-16 14:01:02 +00:00