Bug#1107657: unblock: gnome-control-center/1:48.2-2
Package: release.debian.org
Severity: normal
X-Debbugs-Cc: gnome-control-center@packages.debian.org
Control: affects -1 + src:gnome-control-center
User: release.debian.org@packages.debian.org
Usertags: unblock
[ Reason ]
New upstream bugfix release
[ Impact ]
If not accepted, we'll be missing fixes for various upstream bugs, most
notably:
- some crashes
- System -> Remote Desktop can generate passwords that include offensive
or distracting words such as racial slurs
[ Tests ]
Manually tested on a laptop and a VM, with an attempt to focus on the
areas that changed:
- clicked around various bits of UI, e.g. can toggle wifi and bluetooth
- Flatpak app Apps -> Chromium shows a "Required Permissions" bubble,
.deb app Apps -> Chromium Web Browser does not show that bubble
(gnome-control-center!3144)
- Apps -> Calculator -> go back -> Calculator does not crash
(gnome-control-center#3455)
- System -> Remote Desktop -> Desktop Sharing -> Generate New Password
used to generate shorter passwords containing punctuation;
now it generates longer passwords with 5 capitalized words from the
EFF "short" wordlist, e.g. AcrobatPenguinGimmickBuzzardOomph
(gnome-control-center#3445)
- "LANGUAGE=ru gnome-control-center" wraps the longer labels in the
sidebar (gnome-control-center#3400)
- Power Saver leaf icon matches gnome-shell
(gnome-control-center#3446)
- Mouse and Touchpad shows rounded corners on scroll-direction
illustrations (gnome-control-center!3085)
I don't have a suitable system to test gnome-control-center#3375
(LP: #2037076) but Ubuntu already applied this patch and seems happy
with it.
I don't know how to reproduce gnome-control-center#3402, #3405, !3126.
I don't have a Wacom tablet conveniently available for !3140.
I don't think I have apps that register global shortcuts for !3058, but
the change is trivial anyway.
[ Risks ]
Key package for our default desktop environment and high profile, but
the changes are all narrowly targeted. We can revert anything that
turns out to be problematic.
The change to how random passwords are generated is quite noisy, but
it's easy to test and seems desirable to have.
[ Checklist ]
[x] all changes are documented in the d/changelog
[x] I reviewed all changes and I approve them
[x] attach debdiff against the package in testing
debdiff *.dsc | filterdiff -p1 -x.gitlab-ci.yml -x'po/*.po'
diff -Nru gnome-control-center-48.1/debian/changelog gnome-control-center-48.2/debian/changelog
--- gnome-control-center-48.1/debian/changelog 2025-05-03 12:41:18.000000000 +0100
+++ gnome-control-center-48.2/debian/changelog 2025-06-11 11:20:52.000000000 +0100
@@ -1,3 +1,54 @@
+gnome-control-center (1:48.2-2) unstable; urgency=medium
+
+ * Team upload
+ * Summarize upstream changes in previous changelog entry
+ * Upload to unstable
+
+ -- Simon McVittie <smcv@debian.org> Wed, 11 Jun 2025 11:20:52 +0100
+
+gnome-control-center (1:48.2-1) experimental; urgency=medium
+
+ * New upstream bugfix release
+ - Fix panel crashes that can occur if a type referenced by the UI
+ resource was not registered yet
+ (gnome-control-center!3126 upstream)
+ - Fix a crash due to use-after-free in the notifications page by
+ clearing a signal handler during object destruction
+ (gnome-control-center#3455 upstream)
+ - Use an EFF-supplied word list to generate random passwords
+ (for example for System -> Remote Desktop) instead of
+ /usr/share/dict, which in particular avoids generating passwords
+ that contain offensive or easily-confused words
+ (gnome-control-center#3445 upstream)
+ - Log a warning instead of crashing or emitting a blank image
+ if we cannot create a renderer while cropping a user's avatar
+ (gnome-control-center#3402, #3405 upstream)
+ - Wrap panel labels at 40 characters to ensure the list of panels
+ leaves enough horizontal space for window content in locales where
+ a panel has a long name, for example "Privacy and Security" translated
+ to "Конфиденциальность и безопасность" in ru_RU
+ (gnome-control-cetner#3400 upstream)
+ - Use motion history to get smoother lines when testing a Wacom tablet
+ (gnome-control-center!3140 upstream)
+ - Match the leaf icon that GNOME Shell uses for the Power Saver mode,
+ instead of having a different and worse-looking leaf icon
+ (gnome-control-center#3446 upstream)
+ - On multi-GPU desktop systems, describe non-Nvidia GPUs correctly
+ even if we cannot switch to them via DRI_PRIME
+ (gnome-control-center#3375 upstream, LP: #2037076)
+ - In the applications panel, hide the empty "Required Permissions"
+ section if there would be nothing shown there
+ (gnome-control-center!3144 upstream)
+ - In the application global shortcuts dialog, show the app name in
+ bold, making it easier to see and more consistent with other pages
+ (gnome-control-center!3058 upstream)
+ - Apply rounded borders to illustrations such as mouse wheel scroll
+ direction, hot corners and active screen edges
+ (gnome-control-center!3085 upstream)
+ - Translation updates
+
+ -- Jeremy Bícha <jbicha@ubuntu.com> Fri, 06 Jun 2025 14:37:54 -0400
+
gnome-control-center (1:48.1-2) unstable; urgency=medium
[ James Addison ]
diff -Nru gnome-control-center-48.1/meson.build gnome-control-center-48.2/meson.build
--- gnome-control-center-48.1/meson.build 2025-04-14 08:00:57.000000000 +0100
+++ gnome-control-center-48.2/meson.build 2025-05-26 09:23:41.000000000 +0100
@@ -1,6 +1,6 @@
project(
'gnome-control-center', 'c',
- version : '48.1',
+ version : '48.2',
license : 'GPL2+',
meson_version : '>= 0.58.0'
)
diff -Nru gnome-control-center-48.1/NEWS gnome-control-center-48.2/NEWS
--- gnome-control-center-48.1/NEWS 2025-04-14 08:00:57.000000000 +0100
+++ gnome-control-center-48.2/NEWS 2025-05-26 09:23:41.000000000 +0100
@@ -1,4 +1,36 @@
============
+Version 48.2
+============
+
+- Various translation updates
+- Wrap settings panel names in small window sizes
+- Call g_type_ensure for a custom class
+- Add rounded borders to illustrations
+
+About
+- Fix multiple GPU name display with NVIDIA GPU on Desktop PC
+
+Apps
+- Set bold style to the app name
+- Hide preference group if no permissions are shown
+
+Notifications
+- Fix crash when modifying app settings multiple times
+
+Power
+- Change power saver icon to leaf (matching GNOME Shell)
+
+System
+- Improve password generation logic
+- Use EFF's Wordlists for Random Passphrases for password generator
+
+Users
+- Don't crash when failing to crop avatar images
+
+Wacom
+- Get motion history from tablets in test drawing area
+
+============
Version 48.1
============
diff -Nru gnome-control-center-48.1/panels/applications/cc-application-shortcut-dialog.c gnome-control-center-48.2/panels/applications/cc-application-shortcut-dialog.c
--- gnome-control-center-48.1/panels/applications/cc-application-shortcut-dialog.c 2025-04-14 08:00:57.000000000 +0100
+++ gnome-control-center-48.2/panels/applications/cc-application-shortcut-dialog.c 2025-05-26 09:23:41.000000000 +0100
@@ -249,6 +249,7 @@
{
CcApplicationShortcutDialog *dialog;
g_autofree char *explanation_str = NULL;
+ g_autofree char *formatted_name = NULL;
g_autofree char *name = NULL;
dialog = g_object_new (CC_TYPE_APPLICATION_SHORTCUT_DIALOG, NULL);
@@ -258,9 +259,10 @@
name = cc_util_app_id_to_display_name (app_id);
+ formatted_name = g_strdup_printf ("<b>%s</b>", name);
/* TRANSLATORS: %s is an app name. */
explanation_str =
- g_strdup_printf (_("%s has registered the following global shortcuts"), name);
+ g_strdup_printf (_("%s has registered the following global shortcuts"), formatted_name);
adw_preferences_page_set_description (dialog->shortcut_list, explanation_str);
return dialog;
diff -Nru gnome-control-center-48.1/panels/applications/cc-applications-panel.c gnome-control-center-48.2/panels/applications/cc-applications-panel.c
--- gnome-control-center-48.1/panels/applications/cc-applications-panel.c 2025-04-14 08:00:57.000000000 +0100
+++ gnome-control-center-48.2/panels/applications/cc-applications-panel.c 2025-05-26 09:23:41.000000000 +0100
@@ -161,7 +161,7 @@
static void update_handler_dialog (CcApplicationsPanel *self, GAppInfo *info);
-static gboolean update_global_shortcuts_section (CcApplicationsPanel *self);
+static void update_usage_section (CcApplicationsPanel *self, GAppInfo *info);
enum
{
@@ -707,7 +707,7 @@
static void
dialog_closed_cb (CcApplicationsPanel *self)
{
- update_global_shortcuts_section (self);
+ update_usage_section (self, self->current_app_info);
}
static void
diff -Nru gnome-control-center-48.1/panels/common/cc-duration-editor.c gnome-control-center-48.2/panels/common/cc-duration-editor.c
--- gnome-control-center-48.1/panels/common/cc-duration-editor.c 2025-04-14 08:00:57.000000000 +0100
+++ gnome-control-center-48.2/panels/common/cc-duration-editor.c 2025-05-26 09:23:41.000000000 +0100
@@ -124,6 +124,8 @@
g_object_class_install_properties (object_class, G_N_ELEMENTS (props), props);
+ g_type_ensure (CC_TYPE_TIMELIKE_EDITOR);
+
gtk_widget_class_set_template_from_resource (widget_class, "/org/gnome/control-center/common/cc-duration-editor.ui");
gtk_widget_class_bind_template_child (widget_class, CcDurationEditor, editor);
diff -Nru gnome-control-center-48.1/panels/common/cc-duration-row.c gnome-control-center-48.2/panels/common/cc-duration-row.c
--- gnome-control-center-48.1/panels/common/cc-duration-row.c 2025-04-14 08:00:57.000000000 +0100
+++ gnome-control-center-48.2/panels/common/cc-duration-row.c 2025-05-26 09:23:41.000000000 +0100
@@ -147,6 +147,8 @@
g_object_class_install_properties (object_class, G_N_ELEMENTS (props), props);
+ g_type_ensure (CC_TYPE_DURATION_EDITOR);
+
gtk_widget_class_set_template_from_resource (widget_class, "/org/gnome/control-center/common/cc-duration-row.ui");
gtk_widget_class_bind_template_child (widget_class, CcDurationRow, current);
diff -Nru gnome-control-center-48.1/panels/common/cc-illustrated-row.c gnome-control-center-48.2/panels/common/cc-illustrated-row.c
--- gnome-control-center-48.1/panels/common/cc-illustrated-row.c 2025-04-14 08:00:57.000000000 +0100
+++ gnome-control-center-48.2/panels/common/cc-illustrated-row.c 2025-05-26 09:23:41.000000000 +0100
@@ -141,6 +141,8 @@
g_object_class_install_properties (object_class, N_PROPS, props);
+ g_type_ensure (CC_TYPE_MASK_PAINTABLE);
+
gtk_widget_class_set_template_from_resource (widget_class, "/org/gnome/control-center/common/cc-illustrated-row.ui");
gtk_widget_class_bind_template_child (widget_class, CcIllustratedRow, picture_box);
@@ -154,8 +156,7 @@
cc_illustrated_row_init (CcIllustratedRow *self)
{
gtk_widget_init_template (GTK_WIDGET (self));
- gtk_widget_set_name (GTK_WIDGET (self), "illustrated-row");
- gtk_widget_add_css_class (GTK_WIDGET (self), "illustrated-row");
+ gtk_widget_add_css_class (GTK_WIDGET (self), "illustrated");
}
void
diff -Nru gnome-control-center-48.1/panels/common/cc-split-row.c gnome-control-center-48.2/panels/common/cc-split-row.c
--- gnome-control-center-48.1/panels/common/cc-split-row.c 2025-04-14 08:00:57.000000000 +0100
+++ gnome-control-center-48.2/panels/common/cc-split-row.c 2025-05-26 09:23:41.000000000 +0100
@@ -324,8 +324,7 @@
cc_split_row_init (CcSplitRow *self)
{
gtk_widget_init_template (GTK_WIDGET (self));
- gtk_widget_set_name (GTK_WIDGET (self), "split-row");
- gtk_widget_add_css_class (GTK_WIDGET (self), "split-row");
+ gtk_widget_add_css_class (GTK_WIDGET (self), "illustrated");
}
const gchar *
diff -Nru gnome-control-center-48.1/panels/notifications/cc-app-notifications-page.c gnome-control-center-48.2/panels/notifications/cc-app-notifications-page.c
--- gnome-control-center-48.1/panels/notifications/cc-app-notifications-page.c 2025-04-14 08:00:57.000000000 +0100
+++ gnome-control-center-48.2/panels/notifications/cc-app-notifications-page.c 2025-05-26 09:23:41.000000000 +0100
@@ -61,6 +61,8 @@
AdwSwitchRow *notification_banners_content_row;
AdwSwitchRow *lock_screen_notifications_row;
AdwSwitchRow *lock_screen_content_row;
+
+ gulong notifications_page_change_signal_handler_id;
};
G_DEFINE_TYPE (CcAppNotificationsPage, cc_app_notifications_page, ADW_TYPE_NAVIGATION_PAGE)
@@ -323,6 +325,8 @@
{
CcAppNotificationsPage *self = CC_APP_NOTIFICATIONS_PAGE (object);
+ g_clear_signal_handler (&self->notifications_page_change_signal_handler_id, self->settings);
+
g_clear_object (&self->settings);
g_clear_object (&self->master_settings);
g_clear_pointer (&self->app_id, g_free);
@@ -379,7 +383,8 @@
self->app_id = g_strdup (app_id);
self->perm_store = g_object_ref (perm_store);
- g_signal_connect_swapped (self->settings, "changed", G_CALLBACK (update_switches), self);
+ self->notifications_page_change_signal_handler_id =
+ g_signal_connect_swapped (self->settings, "changed", G_CALLBACK (update_switches), self);
update_switches (self);
diff -Nru gnome-control-center-48.1/panels/power/cc-power-panel.c gnome-control-center-48.2/panels/power/cc-power-panel.c
--- gnome-control-center-48.1/panels/power/cc-power-panel.c 2025-04-14 08:00:57.000000000 +0100
+++ gnome-control-center-48.2/panels/power/cc-power-panel.c 2025-05-26 09:23:41.000000000 +0100
@@ -1297,6 +1297,7 @@
gtk_widget_class_set_template_from_resource (widget_class, "/org/gnome/control-center/power/cc-power-panel.ui");
g_type_ensure (CC_TYPE_NUMBER_ROW);
+ g_type_ensure (CC_TYPE_POWER_PROFILE_INFO_ROW);
gtk_widget_class_bind_template_child (widget_class, CcPowerPanel, als_row);
gtk_widget_class_bind_template_child (widget_class, CcPowerPanel, battery_charging_section);
diff -Nru gnome-control-center-48.1/panels/power/icons/scalable/actions/power-saving-symbolic.svg gnome-control-center-48.2/panels/power/icons/scalable/actions/power-saving-symbolic.svg
--- gnome-control-center-48.1/panels/power/icons/scalable/actions/power-saving-symbolic.svg 2025-04-14 08:00:57.000000000 +0100
+++ gnome-control-center-48.2/panels/power/icons/scalable/actions/power-saving-symbolic.svg 2025-05-26 09:23:41.000000000 +0100
@@ -1,4 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg height="16px" viewBox="0 0 16 16" width="16px" xmlns="http://www.w3.org/2000/svg">
- <path d="m 6 1 s -3 0 -3 3 v 5 s 0.042969 1.417969 0.027344 2 c 0 1 -0.535156 1.414062 -1.402344 2.121094 c -0.628906 0.488281 -0.773438 1.308594 -0.308594 1.699218 c 0.429688 0.351563 1.164063 0.300782 1.660156 -0.34375 l 1.019532 -1.476562 c 0.699218 -1.015625 0.984375 -1.875 1 -3 l 0.003906 -6 c 0 -1 0.996094 -1 0.996094 -1 v 6.574219 l 3.003906 -3.074219 v -2.5 c 0 -1 0.996094 -1 0.996094 -1 l 0.003906 2.5 l 1.996094 -2.035156 c 0.339844 -0.3125 0.503906 -0.464844 1 -0.464844 l 0.003906 1 l -4.003906 4 h 4 s 0.003906 1 -1 1 h -4 l -2 2 c 0 0.425781 0 2.007812 2 2.007812 l 4.003906 -0.007812 s 3 0 2.996094 -2.992188 v -9.007812 z m 0 0" fill="#2e3436"/>
+ <g fill="#222222">
+ <path d="m 0.84375 15.398438 l 10.5 -10 c 0.199219 -0.1875 0.207031 -0.503907 0.019531 -0.707032 c -0.191406 -0.199218 -0.507812 -0.207031 -0.707031 -0.015625 l -10.5 10 c -0.1992188 0.191407 -0.2070312 0.507813 -0.019531 0.707031 c 0.191406 0.199219 0.507812 0.207032 0.707031 0.015626 z m 0 0"/>
+ <path d="m 5.5 11.039062 h 4 c 0.277344 0 0.5 -0.226562 0.5 -0.5 c 0 -0.277343 -0.222656 -0.5 -0.5 -0.5 h -4 c -0.277344 0 -0.5 0.222657 -0.5 0.5 c 0 0.273438 0.222656 0.5 0.5 0.5 z m 0 0"/>
+ <path d="m 8 8.460938 v -2.921876 c 0 -0.277343 -0.222656 -0.5 -0.5 -0.5 s -0.5 0.222657 -0.5 0.5 v 2.921876 c 0 0.277343 0.222656 0.5 0.5 0.5 s 0.5 -0.222657 0.5 -0.5 z m 0 0"/>
+ <path d="m 1 16 h 7 c 4.414062 0 8 -3.585938 8 -8 v -7 c 0 -0.550781 -0.449219 -1 -1 -1 h -7 c -4.414062 0 -8 3.585938 -8 8 v 3 c 0 0.550781 0.449219 1 1 1 s 1 -0.449219 1 -1 v -3 c 0 -3.324219 2.675781 -6 6 -6 h 7 l -1 -1 v 7 c 0 3.324219 -2.675781 6 -6 6 h -7 c -0.550781 0 -1 0.449219 -1 1 s 0.449219 1 1 1 z m 0 0"/>
+ </g>
</svg>
diff -Nru gnome-control-center-48.1/panels/system/about/gnome-control-center-print-renderer.c gnome-control-center-48.2/panels/system/about/gnome-control-center-print-renderer.c
--- gnome-control-center-48.1/panels/system/about/gnome-control-center-print-renderer.c 2025-04-14 08:00:57.000000000 +0100
+++ gnome-control-center-48.2/panels/system/about/gnome-control-center-print-renderer.c 2025-05-26 09:23:41.000000000 +0100
@@ -32,7 +32,8 @@
GtkNative *native;
GtkWidget *win;
GdkGLContext *context;
- char *renderer = NULL;
+ g_autofree char *renderer = NULL;
+ g_autofree char *gl_version = NULL;
win = gtk_window_new ();
gtk_widget_realize (win);
@@ -43,10 +44,26 @@
return NULL;
gdk_gl_context_make_current (context);
renderer = g_strdup ((char *) glGetString (GL_RENDERER));
+ gl_version = g_strdup ((char *) glGetString (GL_VERSION));
gdk_gl_context_clear_current ();
g_object_unref (context);
- return renderer;
+ if (strstr (gl_version, "NVIDIA") != NULL)
+ {
+ const char *glvnd_libname = g_getenv ("__GLX_VENDOR_LIBRARY_NAME");
+ if (g_strcmp0 (glvnd_libname, "nvidia") != 0)
+ {
+ /* This helper is launched with parameters from a
+ * non-NVIDIA GPU, but is running using a NVIDIA
+ * library. As such, DRI_PRIME envvar from switcheroo
+ * does not actually take effect, and the GPU name is
+ * invalid.
+ */
+ return NULL;
+ }
+ }
+
+ return g_steal_pointer (&renderer);
}
int
diff -Nru gnome-control-center-48.1/panels/system/cc-password-utils.c gnome-control-center-48.2/panels/system/cc-password-utils.c
--- gnome-control-center-48.1/panels/system/cc-password-utils.c 2025-04-14 08:00:57.000000000 +0100
+++ gnome-control-center-48.2/panels/system/cc-password-utils.c 2025-05-26 09:23:41.000000000 +0100
@@ -21,26 +21,21 @@
#include <gio/gio.h>
#include <glib.h>
#include <glob.h>
-#include <stdlib.h>
-#include <string.h>
-#define DICEWARE_CORPUS_GLOB "/usr/share/dict/*"
-#define SPECIAL_CHARACTERS "-!\"#$%&()*,./:;?@[]^_`{|}~+<=>"
-#define WORD_SEPARATORS " -_&+,;:."
-
-static char *
-get_word_at_line (const char *file_path,
- guint line_number)
+static GPtrArray *
+get_ascii_lines_from_uri (const char *uri)
{
- g_autoptr (GError) error = NULL;
- g_autoptr (GFile) file = NULL;
- g_autoptr (GFileInputStream) input_stream = NULL;
- g_autoptr (GDataInputStream) data = NULL;
+ g_autoptr(GFile) file = NULL;
+ g_autoptr(GError) error = NULL;
+ g_autoptr(GFileInputStream) input_stream = NULL;
+ g_autoptr(GDataInputStream) data = NULL;
+ g_autoptr(GPtrArray) ascii_lines = NULL;
g_autofree char *line = NULL;
- gsize length;
- guint line_count = 0;
- file = g_file_new_for_path (file_path);
+ file = g_file_new_for_uri (uri);
+
+ if (!file)
+ return NULL;
input_stream = g_file_read (file, NULL, &error);
@@ -51,14 +46,13 @@
}
data = g_data_input_stream_new (G_INPUT_STREAM (input_stream));
+ ascii_lines = g_ptr_array_new_with_free_func (g_free);
- while ((line = g_data_input_stream_read_line_utf8 (data, &length, NULL, &error)) != NULL)
+ while ((line = g_data_input_stream_read_line_utf8 (data, NULL, NULL, &error)) != NULL)
{
- if (line_count == line_number)
- return g_str_to_ascii (line, NULL);
+ g_ptr_array_add (ascii_lines, g_str_to_ascii (line, NULL));
g_clear_pointer (&line, g_free);
- line_count++;
}
if (error != NULL)
@@ -67,148 +61,37 @@
return NULL;
}
- if (line_count == 0)
- {
- g_warning ("File is empty");
- return NULL;
- }
-
- if (line_number >= line_count)
- return get_word_at_line (file_path, line_number % line_count);
-
- return NULL;
-}
-
-static gboolean
-is_word_separator (char character)
-{
- return strchr (WORD_SEPARATORS, character) != NULL;
-}
-
-static char
-generate_word_separator (void)
-{
- return WORD_SEPARATORS[g_random_int_range (0, strlen (WORD_SEPARATORS))];
-}
-
-static char
-generate_special_character (void)
-{
- return SPECIAL_CHARACTERS[g_random_int_range (0, strlen (SPECIAL_CHARACTERS))];
-}
-
-static char
-generate_digit (void)
-{
- return g_random_int_range (0, 10) + '0';
-}
-
-static char *
-get_random_file_from_glob (const char *pattern)
-{
- glob_t glob_result;
- int ret = 0;
- int index;
- g_autofree char *file = NULL;
-
- ret = glob (pattern, 0, NULL, &glob_result);
- if (ret != 0)
- goto out;
-
- if (glob_result.gl_pathc == 0)
- goto out;
-
- index = g_random_int_range (0, glob_result.gl_pathc);
- file = g_strdup (glob_result.gl_pathv[index]);
-
-out:
- globfree (&glob_result);
- return g_steal_pointer (&file);
+ return g_steal_pointer (&ascii_lines);
}
char *
cc_generate_password (void)
{
g_autoptr(GString) password_string = NULL;
- g_autofree char *password = NULL;
- static const size_t min_number_of_words = 2;
- size_t i;
- char *p = NULL;
- gboolean needs_digit = TRUE;
- gboolean needs_special_character = TRUE;
- gboolean needs_uppercase = TRUE;
- gboolean last_character_trimmable = TRUE;
+ g_autoptr(GPtrArray) ascii_lines = NULL;
+ static const int number_of_password_words = 5;
+ int number_of_file_words;
+
+ ascii_lines = get_ascii_lines_from_uri ("resource://org/gnome/control-center/system/wordlist.txt");
+
+ if (!ascii_lines)
+ return NULL;
+ number_of_file_words = ascii_lines->len;
password_string = g_string_new (NULL);
- i = 0;
- while (password_string->len < 16 || i < min_number_of_words)
+ for (int i = 0; i < number_of_password_words; i++)
{
- g_autofree char *file_path = NULL;
- int word_offset = g_random_int ();
- g_autofree char *word = NULL;
-
- file_path = get_random_file_from_glob (DICEWARE_CORPUS_GLOB);
+ int word_offset = g_random_int_range (0, number_of_file_words);
+ char *word;
- if (!file_path)
- return NULL;
+ word = ascii_lines->pdata[word_offset];
- word = get_word_at_line (file_path, word_offset);
-
- if (word == NULL)
- return NULL;
-
- if (strlen (word) > 10)
- continue;
+ /* Capitalize every first letter */
+ word[0] = g_ascii_toupper (word[0]);
g_string_append (password_string, word);
- g_string_append_c (password_string, ' ');
- i++;
}
- password = g_string_free_and_steal (g_steal_pointer (&password_string));
-
- while (needs_uppercase || needs_digit || needs_special_character || strstr (password, " ") != NULL)
- {
- for (p = password; *p != '\0'; p++)
- {
- if (p == password || is_word_separator (p[-1]))
- {
- if (g_random_int_range (0, 2) == 0)
- {
- *p = g_ascii_toupper (*p);
- needs_uppercase = FALSE;
- }
- }
-
- if (!is_word_separator (*p))
- continue;
-
- if (needs_digit && g_random_int_range (0, strlen (password)) == 0)
- {
- *p = generate_digit ();
- needs_digit = FALSE;
-
- if (p[1] == '\0')
- last_character_trimmable = FALSE;
- }
- else if (needs_special_character && g_random_int_range (0, strlen (password)) == 0)
- {
- *p = generate_special_character ();
- needs_special_character = FALSE;
-
- if (p[1] == '\0')
- last_character_trimmable = FALSE;
- }
- else if (!needs_digit && !needs_special_character)
- {
- *p = generate_word_separator ();
- }
- }
- }
-
- if (last_character_trimmable)
- password[strlen (password) - 1] = '\0';
-
- return g_steal_pointer (&password);
+ return g_string_free_and_steal (g_steal_pointer (&password_string));
}
diff -Nru gnome-control-center-48.1/panels/system/eff_short_wordlist_2_0.txt gnome-control-center-48.2/panels/system/eff_short_wordlist_2_0.txt
--- gnome-control-center-48.1/panels/system/eff_short_wordlist_2_0.txt 1970-01-01 01:00:00.000000000 +0100
+++ gnome-control-center-48.2/panels/system/eff_short_wordlist_2_0.txt 2025-05-26 09:23:41.000000000 +0100
@@ -0,0 +1,1296 @@
+aardvark
+abandoned
+abbreviate
+abdomen
+abhorrence
+abiding
+abnormal
+abrasion
+absorbing
+abundant
+abyss
+academy
+accountant
+acetone
+achiness
+acid
+acoustics
+acquire
+acrobat
+actress
+acuteness
+aerosol
+aesthetic
+affidavit
+afloat
+afraid
+aftershave
+again
+agency
+aggressor
+aghast
+agitate
+agnostic
+agonizing
+agreeing
+aidless
+aimlessly
+ajar
+alarmclock
+albatross
+alchemy
+alfalfa
+algae
+aliens
+alkaline
+almanac
+alongside
+alphabet
+already
+also
+altitude
+aluminum
+always
+amazingly
+ambulance
+amendment
+amiable
+ammunition
+amnesty
+amoeba
+amplifier
+amuser
+anagram
+anchor
+android
+anesthesia
+angelfish
+animal
+anklet
+announcer
+anonymous
+answer
+antelope
+anxiety
+anyplace
+aorta
+apartment
+apnea
+apostrophe
+apple
+apricot
+aquamarine
+arachnid
+arbitrate
+ardently
+arena
+argument
+aristocrat
+armchair
+aromatic
+arrowhead
+arsonist
+artichoke
+asbestos
+ascend
+aseptic
+ashamed
+asinine
+asleep
+asocial
+asparagus
+astronaut
+asymmetric
+atlas
+atmosphere
+atom
+atrocious
+attic
+atypical
+auctioneer
+auditorium
+augmented
+auspicious
+automobile
+auxiliary
+avalanche
+avenue
+aviator
+avocado
+awareness
+awhile
+awkward
+awning
+awoke
+axially
+azalea
+babbling
+backpack
+badass
+bagpipe
+bakery
+balancing
+bamboo
+banana
+barracuda
+basket
+bathrobe
+bazooka
+blade
+blender
+blimp
+blouse
+blurred
+boatyard
+bobcat
+body
+bogusness
+bohemian
+boiler
+bonnet
+boots
+borough
+bossiness
+bottle
+bouquet
+boxlike
+breath
+briefcase
+broom
+brushes
+bubblegum
+buckle
+buddhist
+buffalo
+bullfrog
+bunny
+busboy
+buzzard
+cabin
+cactus
+cadillac
+cafeteria
+cage
+cahoots
+cajoling
+cakewalk
+calculator
+camera
+canister
+capsule
+carrot
+cashew
+cathedral
+caucasian
+caviar
+ceasefire
+cedar
+celery
+cement
+census
+ceramics
+cesspool
+chalkboard
+cheesecake
+chimney
+chlorine
+chopsticks
+chrome
+chute
+cilantro
+cinnamon
+circle
+cityscape
+civilian
+clay
+clergyman
+clipboard
+clock
+clubhouse
+coathanger
+cobweb
+coconut
+codeword
+coexistent
+coffeecake
+cognitive
+cohabitate
+collarbone
+computer
+confetti
+copier
+cornea
+cosmetics
+cotton
+couch
+coverless
+coyote
+coziness
+crawfish
+crewmember
+crib
+croissant
+crumble
+crystal
+cubical
+cucumber
+cuddly
+cufflink
+cuisine
+culprit
+cup
+curry
+cushion
+cuticle
+cybernetic
+cyclist
+cylinder
+cymbal
+cynicism
+cypress
+cytoplasm
+dachshund
+daffodil
+dagger
+dairy
+dalmatian
+dandelion
+dartboard
+dastardly
+datebook
+daughter
+dawn
+daytime
+dazzler
+dealer
+debris
+decal
+dedicate
+deepness
+defrost
+degree
+dehydrator
+deliverer
+democrat
+dentist
+deodorant
+depot
+deranged
+desktop
+detergent
+device
+dexterity
+diamond
+dibs
+dictionary
+diffuser
+digit
+dilated
+dimple
+dinnerware
+dioxide
+diploma
+directory
+dishcloth
+ditto
+dividers
+dizziness
+doctor
+dodge
+doll
+dominoes
+donut
+doorstep
+dorsal
+double
+downstairs
+dozed
+drainpipe
+dresser
+driftwood
+droppings
+drum
+dryer
+dubiously
+duckling
+duffel
+dugout
+dumpster
+duplex
+durable
+dustpan
+dutiful
+duvet
+dwarfism
+dwelling
+dwindling
+dynamite
+dyslexia
+eagerness
+earlobe
+easel
+eavesdrop
+ebook
+eccentric
+echoless
+eclipse
+ecosystem
+ecstasy
+edged
+editor
+educator
+eelworm
+eerie
+effects
+eggnog
+egomaniac
+ejection
+elastic
+elbow
+elderly
+elephant
+elfishly
+eliminator
+elk
+elliptical
+elongated
+elsewhere
+elusive
+elves
+emancipate
+embroidery
+emcee
+emerald
+emission
+emoticon
+emperor
+emulate
+enactment
+enchilada
+endorphin
+energy
+enforcer
+engine
+enhance
+enigmatic
+enjoyably
+enlarged
+enormous
+enquirer
+enrollment
+ensemble
+entryway
+enunciate
+envoy
+enzyme
+epidemic
+equipment
+erasable
+ergonomic
+erratic
+eruption
+escalator
+eskimo
+esophagus
+espresso
+essay
+estrogen
+etching
+eternal
+ethics
+etiquette
+eucalyptus
+eulogy
+euphemism
+euthanize
+evacuation
+evergreen
+evidence
+evolution
+exam
+excerpt
+exerciser
+exfoliate
+exhale
+exist
+exorcist
+explode
+exquisite
+exterior
+exuberant
+fabric
+factory
+faded
+failsafe
+falcon
+family
+fanfare
+fasten
+faucet
+favorite
+feasibly
+february
+federal
+feedback
+feigned
+feline
+femur
+fence
+ferret
+festival
+fettuccine
+feudalist
+feverish
+fiberglass
+fictitious
+fiddle
+figurine
+fillet
+finalist
+fiscally
+fixture
+flashlight
+fleshiness
+flight
+florist
+flypaper
+foamless
+focus
+foggy
+folksong
+fondue
+footpath
+fossil
+fountain
+fox
+fragment
+freeway
+fridge
+frosting
+fruit
+fryingpan
+gadget
+gainfully
+gallstone
+gamekeeper
+gangway
+garlic
+gaslight
+gathering
+gauntlet
+gearbox
+gecko
+gem
+generator
+geographer
+gerbil
+gesture
+getaway
+geyser
+ghoulishly
+gibberish
+giddiness
+giftshop
+gigabyte
+gimmick
+giraffe
+giveaway
+gizmo
+glasses
+gleeful
+glisten
+glove
+glucose
+glycerin
+gnarly
+gnomish
+goatskin
+goggles
+goldfish
+gong
+gooey
+gorgeous
+gosling
+gothic
+gourmet
+governor
+grape
+greyhound
+grill
+groundhog
+grumbling
+guacamole
+guerrilla
+guitar
+gullible
+gumdrop
+gurgling
+gusto
+gutless
+gymnast
+gynecology
+gyration
+habitat
+hacking
+haggard
+haiku
+halogen
+hamburger
+handgun
+happiness
+hardhat
+hastily
+hatchling
+haughty
+hazelnut
+headband
+hedgehog
+hefty
+heinously
+helmet
+hemoglobin
+henceforth
+herbs
+hesitation
+hexagon
+hubcap
+huddling
+huff
+hugeness
+hullabaloo
+human
+hunter
+hurricane
+hushing
+hyacinth
+hybrid
+hydrant
+hygienist
+hypnotist
+ibuprofen
+icepack
+icing
+iconic
+identical
+idiocy
+idly
+igloo
+ignition
+iguana
+illuminate
+imaging
+imbecile
+imitator
+immigrant
+imprint
+iodine
+ionosphere
+ipad
+iphone
+iridescent
+irksome
+iron
+irrigation
+island
+isotope
+issueless
+italicize
+itemizer
+itinerary
+itunes
+ivory
+jabbering
+jackrabbit
+jaguar
+jailhouse
+jalapeno
+jamboree
+janitor
+jarring
+jasmine
+jaundice
+jawbreaker
+jaywalker
+jazz
+jealous
+jeep
+jelly
+jeopardize
+jersey
+jetski
+jezebel
+jiffy
+jigsaw
+jingling
+jobholder
+jockstrap
+jogging
+john
+joinable
+jokingly
+journal
+jovial
+joystick
+jubilant
+judiciary
+juggle
+juice
+jujitsu
+jukebox
+jumpiness
+junkyard
+juror
+justifying
+juvenile
+kabob
+kamikaze
+kangaroo
+karate
+kayak
+keepsake
+kennel
+kerosene
+ketchup
+khaki
+kickstand
+kilogram
+kimono
+kingdom
+kiosk
+kissing
+kite
+kleenex
+knapsack
+kneecap
+knickers
+koala
+krypton
+laboratory
+ladder
+lakefront
+lantern
+laptop
+laryngitis
+lasagna
+latch
+laundry
+lavender
+laxative
+lazybones
+lecturer
+leftover
+leggings
+leisure
+lemon
+length
+leopard
+leprechaun
+lettuce
+leukemia
+levers
+lewdness
+liability
+library
+licorice
+lifeboat
+lightbulb
+likewise
+lilac
+limousine
+lint
+lioness
+lipstick
+liquid
+listless
+litter
+liverwurst
+lizard
+llama
+luau
+lubricant
+lucidity
+ludicrous
+luggage
+lukewarm
+lullaby
+lumberjack
+lunchbox
+luridness
+luscious
+luxurious
+lyrics
+macaroni
+maestro
+magazine
+mahogany
+maimed
+majority
+makeover
+malformed
+mammal
+mango
+mapmaker
+marbles
+massager
+matchstick
+maverick
+maximum
+mayonnaise
+moaning
+mobilize
+moccasin
+modify
+moisture
+molecule
+momentum
+monastery
+moonshine
+mortuary
+mosquito
+motorcycle
+mousetrap
+movie
+mower
+mozzarella
+muckiness
+mudflow
+mugshot
+mule
+mummy
+mundane
+muppet
+mural
+mustard
+mutation
+myriad
+myspace
+myth
+nail
+namesake
+nanosecond
+napkin
+narrator
+nastiness
+natives
+nautically
+navigate
+nearest
+nebula
+nectar
+nefarious
+negotiator
+neither
+nemesis
+neoliberal
+nephew
+nervously
+nest
+netting
+neuron
+nevermore
+nextdoor
+nicotine
+niece
+nimbleness
+nintendo
+nirvana
+nuclear
+nugget
+nuisance
+nullify
+numbing
+nuptials
+nursery
+nutcracker
+nylon
+oasis
+oat
+obediently
+obituary
+object
+obliterate
+obnoxious
+observer
+obtain
+obvious
+occupation
+oceanic
+octopus
+ocular
+office
+oftentimes
+oiliness
+ointment
+older
+olympics
+omissible
+omnivorous
+oncoming
+onion
+onlooker
+onstage
+onward
+onyx
+oomph
+opaquely
+opera
+opium
+opossum
+opponent
+optical
+opulently
+oscillator
+osmosis
+ostrich
+otherwise
+ought
+outhouse
+ovation
+oven
+owlish
+oxford
+oxidize
+oxygen
+oyster
+ozone
+pacemaker
+padlock
+pageant
+pajamas
+palm
+pamphlet
+pantyhose
+paprika
+parakeet
+passport
+patio
+pauper
+pavement
+payphone
+pebble
+peculiarly
+pedometer
+pegboard
+pelican
+penguin
+peony
+pepperoni
+peroxide
+pesticide
+petroleum
+pewter
+pharmacy
+pheasant
+phonebook
+phrasing
+physician
+plank
+pledge
+plotted
+plug
+plywood
+pneumonia
+podiatrist
+poetic
+pogo
+poison
+poking
+policeman
+poncho
+popcorn
+porcupine
+postcard
+poultry
+powerboat
+prairie
+pretzel
+princess
+propeller
+prune
+pry
+pseudo
+psychopath
+publisher
+pucker
+pueblo
+pulley
+pumpkin
+punchbowl
+puppy
+purse
+pushup
+putt
+puzzle
+pyramid
+python
+quarters
+quesadilla
+quilt
+quote
+racoon
+radish
+ragweed
+railroad
+rampantly
+rancidity
+rarity
+raspberry
+ravishing
+rearrange
+rebuilt
+receipt
+reentry
+refinery
+register
+rehydrate
+reimburse
+rejoicing
+rekindle
+relic
+remote
+renovator
+reopen
+reporter
+request
+rerun
+reservoir
+retriever
+reunion
+revolver
+rewrite
+rhapsody
+rhetoric
+rhino
+rhubarb
+rhyme
+ribbon
+riches
+ridden
+rigidness
+rimmed
+riptide
+riskily
+ritzy
+riverboat
+roamer
+robe
+rocket
+romancer
+ropelike
+rotisserie
+roundtable
+royal
+rubber
+rudderless
+rugby
+ruined
+rulebook
+rummage
+running
+rupture
+rustproof
+sabotage
+sacrifice
+saddlebag
+saffron
+sainthood
+saltshaker
+samurai
+sandworm
+sapphire
+sardine
+sassy
+satchel
+sauna
+savage
+saxophone
+scarf
+scenario
+schoolbook
+scientist
+scooter
+scrapbook
+sculpture
+scythe
+secretary
+sedative
+segregator
+seismology
+selected
+semicolon
+senator
+septum
+sequence
+serpent
+sesame
+settler
+severely
+shack
+shelf
+shirt
+shovel
+shrimp
+shuttle
+shyness
+siamese
+sibling
+siesta
+silicon
+simmering
+singles
+sisterhood
+sitcom
+sixfold
+sizable
+skateboard
+skeleton
+skies
+skulk
+skylight
+slapping
+sled
+slingshot
+sloth
+slumbering
+smartphone
+smelliness
+smitten
+smokestack
+smudge
+snapshot
+sneezing
+sniff
+snowsuit
+snugness
+speakers
+sphinx
+spider
+splashing
+sponge
+sprout
+spur
+spyglass
+squirrel
+statue
+steamboat
+stingray
+stopwatch
+strawberry
+student
+stylus
+suave
+subway
+suction
+suds
+suffocate
+sugar
+suitcase
+sulphur
+superstore
+surfer
+sushi
+swan
+sweatshirt
+swimwear
+sword
+sycamore
+syllable
+symphony
+synagogue
+syringes
+systemize
+tablespoon
+taco
+tadpole
+taekwondo
+tagalong
+takeout
+tallness
+tamale
+tanned
+tapestry
+tarantula
+tastebud
+tattoo
+tavern
+thaw
+theater
+thimble
+thorn
+throat
+thumb
+thwarting
+tiara
+tidbit
+tiebreaker
+tiger
+timid
+tinsel
+tiptoeing
+tirade
+tissue
+tractor
+tree
+tripod
+trousers
+trucks
+tryout
+tubeless
+tuesday
+tugboat
+tulip
+tumbleweed
+tupperware
+turtle
+tusk
+tutorial
+tuxedo
+tweezers
+twins
+tyrannical
+ultrasound
+umbrella
+umpire
+unarmored
+unbuttoned
+uncle
+underwear
+unevenness
+unflavored
+ungloved
+unhinge
+unicycle
+unjustly
+unknown
+unlocking
+unmarked
+unnoticed
+unopened
+unpaved
+unquenched
+unroll
+unscrewing
+untied
+unusual
+unveiled
+unwrinkled
+unyielding
+unzip
+upbeat
+upcountry
+update
+upfront
+upgrade
+upholstery
+upkeep
+upload
+uppercut
+upright
+upstairs
+uptown
+upwind
+uranium
+urban
+urchin
+urethane
+urgent
+urologist
+username
+usher
+utensil
+utility
+utmost
+utopia
+utterance
+vacuum
+vagrancy
+valuables
+vanquished
+vaporizer
+varied
+vaseline
+vegetable
+vehicle
+velcro
+vendor
+vertebrae
+vestibule
+veteran
+vexingly
+vicinity
+videogame
+viewfinder
+vigilante
+village
+vinegar
+violin
+viperfish
+virus
+visor
+vitamins
+vivacious
+vixen
+vocalist
+vogue
+voicemail
+volleyball
+voucher
+voyage
+vulnerable
+waffle
+wagon
+wakeup
+walrus
+wanderer
+wasp
+water
+waving
+wheat
+whisper
+wholesaler
+wick
+widow
+wielder
+wifeless
+wikipedia
+wildcat
+windmill
+wipeout
+wired
+wishbone
+wizardry
+wobbliness
+wolverine
+womb
+woolworker
+workbasket
+wound
+wrangle
+wreckage
+wristwatch
+wrongdoing
+xerox
+xylophone
+yacht
+yahoo
+yard
+yearbook
+yesterday
+yiddish
+yield
+yo-yo
+yodel
+yogurt
+yuppie
+zealot
+zebra
+zeppelin
+zestfully
+zigzagged
+zillion
+zipping
+zirconium
+zodiac
+zombie
+zookeeper
+zucchini
diff -Nru gnome-control-center-48.1/panels/system/system.gresource.xml gnome-control-center-48.2/panels/system/system.gresource.xml
--- gnome-control-center-48.1/panels/system/system.gresource.xml 2025-04-14 08:00:57.000000000 +0100
+++ gnome-control-center-48.2/panels/system/system.gresource.xml 2025-05-26 09:23:41.000000000 +0100
@@ -30,6 +30,7 @@
<file preprocess="xml-stripblanks">users/cc-user-page.ui</file>
<file alias="users/join-dialog.ui" preprocess="xml-stripblanks">users/data/join-dialog.ui</file>
<file>users/users.css</file>
+ <file alias="wordlist.txt">eff_short_wordlist_2_0.txt</file>
</gresource>
<gresource prefix="/org/gnome/Settings">
diff -Nru gnome-control-center-48.1/panels/system/users/cc-avatar-chooser.c gnome-control-center-48.2/panels/system/users/cc-avatar-chooser.c
--- gnome-control-center-48.1/panels/system/users/cc-avatar-chooser.c 2025-04-14 08:00:57.000000000 +0100
+++ gnome-control-center-48.2/panels/system/users/cc-avatar-chooser.c 2025-05-26 09:23:41.000000000 +0100
@@ -66,6 +66,12 @@
}
pb = cc_crop_area_create_pixbuf (CC_CROP_AREA (self->crop_area));
+ if (!pb) {
+ g_warning ("Crop operation failed");
+ self->crop_area = NULL;
+ gtk_window_destroy (GTK_WINDOW (dialog));
+ return;
+ }
pb2 = gdk_pixbuf_scale_simple (pb, AVATAR_PIXEL_SIZE, AVATAR_PIXEL_SIZE, GDK_INTERP_BILINEAR);
texture = gdk_texture_new_for_pixbuf (pb2);
diff -Nru gnome-control-center-48.1/panels/wacom/cc-drawing-area.c gnome-control-center-48.2/panels/wacom/cc-drawing-area.c
--- gnome-control-center-48.1/panels/wacom/cc-drawing-area.c 2025-04-14 08:00:57.000000000 +0100
+++ gnome-control-center-48.2/panels/wacom/cc-drawing-area.c 2025-05-26 09:23:41.000000000 +0100
@@ -122,19 +122,12 @@
}
static void
-stylus_motion_cb (CcDrawingArea *area,
- double x,
- double y,
- GtkGestureStylus *gesture)
+apply_stroke (CcDrawingArea *area,
+ GdkDeviceTool *tool,
+ double x,
+ double y,
+ double pressure)
{
- GdkDeviceTool *tool;
- gdouble pressure;
-
- tool = gtk_gesture_stylus_get_device_tool (gesture);
- gtk_gesture_stylus_get_axis (gesture,
- GDK_AXIS_PRESSURE,
- &pressure);
-
if (gdk_device_tool_get_tool_type (tool) == GDK_DEVICE_TOOL_TYPE_ERASER) {
cairo_set_line_width (area->cr, 10 * pressure);
cairo_set_operator (area->cr, CAIRO_OPERATOR_DEST_OUT);
@@ -148,6 +141,35 @@
cairo_stroke (area->cr);
cairo_move_to (area->cr, x, y);
+}
+
+static void
+stylus_motion_cb (CcDrawingArea *area,
+ double x,
+ double y,
+ GtkGestureStylus *gesture)
+{
+ GdkTimeCoord *backlog;
+ GdkDeviceTool *tool;
+ gdouble pressure;
+ guint i, n_items;
+
+ tool = gtk_gesture_stylus_get_device_tool (gesture);
+
+ if (gtk_gesture_stylus_get_backlog (gesture, &backlog, &n_items)) {
+ for (i = 0; i < n_items; i++) {
+ apply_stroke (area, tool,
+ backlog[i].axes[GDK_AXIS_X],
+ backlog[i].axes[GDK_AXIS_Y],
+ backlog[i].axes[GDK_AXIS_PRESSURE]);
+ }
+ }
+
+ gtk_gesture_stylus_get_axis (gesture,
+ GDK_AXIS_PRESSURE,
+ &pressure);
+
+ apply_stroke (area, tool, x, y, pressure);
gtk_widget_queue_draw (GTK_WIDGET (area));
}
diff -Nru gnome-control-center-48.1/panels/wellbeing/cc-screen-time-statistics-row.c gnome-control-center-48.2/panels/wellbeing/cc-screen-time-statistics-row.c
--- gnome-control-center-48.1/panels/wellbeing/cc-screen-time-statistics-row.c 2025-04-14 08:00:57.000000000 +0100
+++ gnome-control-center-48.2/panels/wellbeing/cc-screen-time-statistics-row.c 2025-05-26 09:23:41.000000000 +0100
@@ -194,6 +194,8 @@
g_object_class_install_properties (object_class, G_N_ELEMENTS (props), props);
+ g_type_ensure (CC_TYPE_BAR_CHART);
+
gtk_widget_class_set_template_from_resource (widget_class, "/org/gnome/control-center/wellbeing/cc-screen-time-statistics-row.ui");
gtk_widget_class_bind_template_child (widget_class, CcScreenTimeStatisticsRow, bar_chart);
diff -Nru gnome-control-center-48.1/panels/wellbeing/cc-wellbeing-panel.c gnome-control-center-48.2/panels/wellbeing/cc-wellbeing-panel.c
--- gnome-control-center-48.1/panels/wellbeing/cc-wellbeing-panel.c 2025-04-14 08:00:57.000000000 +0100
+++ gnome-control-center-48.2/panels/wellbeing/cc-wellbeing-panel.c 2025-05-26 09:23:41.000000000 +0100
@@ -662,6 +662,7 @@
gtk_widget_class_bind_template_callback (widget_class, disable_screen_time_recording_button_clicked_cb);
gtk_widget_class_bind_template_callback (widget_class, screen_time_statistics_disable_popover_show_cb);
+ g_type_ensure (CC_TYPE_BREAK_SCHEDULE_ROW);
g_type_ensure (CC_TYPE_DURATION_ROW);
g_type_ensure (CC_TYPE_SCREEN_TIME_STATISTICS_ROW);
}
diff -Nru gnome-control-center-48.1/shell/appdata/org.gnome.Settings.appdata.xml.in.in gnome-control-center-48.2/shell/appdata/org.gnome.Settings.appdata.xml.in.in
--- gnome-control-center-48.1/shell/appdata/org.gnome.Settings.appdata.xml.in.in 2025-04-14 08:00:57.000000000 +0100
+++ gnome-control-center-48.2/shell/appdata/org.gnome.Settings.appdata.xml.in.in 2025-05-26 09:23:41.000000000 +0100
@@ -50,6 +50,18 @@
</kudos>
<releases>
+ <release version="48.2" date="2025-05-26">
+ <description>
+ <ul>
+ <li>Fix app permissions visibility issues</li>
+ <li>Fix multiple GPU name display with NVIDIA GPU on Desktop PC</li>
+ <li>Fix crash when modifying app notification settings multiple times</li>
+ <li>Improve password generation logic and word list</li>
+ <li>Get motion history from tablets in test drawing area</li>
+ <li>Various additional fixes, translation updates and UI/UX tweaks</li>
+ </ul>
+ </description>
+ </release>
<release version="48.1" date="2025-04-14">
<description>
<ul>
diff -Nru gnome-control-center-48.1/shell/cc-panel-list.c gnome-control-center-48.2/shell/cc-panel-list.c
--- gnome-control-center-48.1/shell/cc-panel-list.c 2025-04-14 08:00:57.000000000 +0100
+++ gnome-control-center-48.2/shell/cc-panel-list.c 2025-05-26 09:23:41.000000000 +0100
@@ -274,6 +274,8 @@
label = gtk_label_new (name);
gtk_label_set_xalign (GTK_LABEL (label), 0.0);
gtk_widget_set_hexpand (label, TRUE);
+ gtk_label_set_max_width_chars (GTK_LABEL (label), 40);
+ gtk_label_set_wrap (GTK_LABEL (label), TRUE);
gtk_grid_attach (GTK_GRID (grid), label, 1, 0, 1, 1);
gtk_accessible_update_relation (GTK_ACCESSIBLE (data->row),
GTK_ACCESSIBLE_RELATION_LABELLED_BY,
@@ -1083,4 +1085,3 @@
gtk_list_box_select_row (GTK_LIST_BOX (listbox), GTK_LIST_BOX_ROW (data->row));
}
}
-
diff -Nru gnome-control-center-48.1/shell/style.css gnome-control-center-48.2/shell/style.css
--- gnome-control-center-48.1/shell/style.css 2025-04-14 08:00:57.000000000 +0100
+++ gnome-control-center-48.2/shell/style.css 2025-05-26 09:23:41.000000000 +0100
@@ -6,14 +6,18 @@
color: color-mix(in srgb, var(--window-fg-color) 40%, transparent);
}
-.split-row picture:disabled,
-.illustrated-row picture:disabled {
- /* FIXME: This is a workaround to handle disabled pictures
- * see: https: //gitlab.gnome.org/GNOME/libadwaita/-/merge_requests/814
+row.illustrated picture:disabled {
+ /*
+ * FIXME: This is a workaround to handle disabled pictures
+ * see: https://gitlab.gnome.org/GNOME/libadwaita/-/merge_requests/814
*/
opacity: 0.5;
}
+row.illustrated .frame {
+ border-radius: 6px;
+}
+
.cc-placeholder-row {
padding: 18px;
}
Reply to: