1
1
mirror of https://gitlab.gnome.org/GNOME/gimp.git synced 2025-10-06 13:42:40 +02:00

gui, widgets: Connect GimpColorNotebook to icon size changes

Inspired by Mark Sweeney's work.
GimpColorNotebook has existing code to
update the color selector tab icon sizes
via CSS. However, it was not set up to be
notified of icon size changes from the GUI.
Since GimpColorNotebook is in libgimpwidgets,
we call its style_updated () function from
the style_updated () functions of the two
widgets its created in - GimpColorEditor
and GimpColorDialog.
This commit is contained in:
Alx Sa
2024-06-25 12:40:04 +00:00
parent c31faab2c0
commit c5efa0b874
3 changed files with 45 additions and 6 deletions

View File

@@ -480,6 +480,8 @@ themes_apply_theme (Gimp *gimp,
"\n"
"* { -GimpDockbook-tab-icon-size: %s; }"
"\n"
"* { -GimpColorNotebook-tab-icon-size: %s; }"
"\n"
"* { -GimpEditor-button-icon-size: %s; }"
"\n"
"toolpalette button { padding: %dpx; }"
@@ -487,7 +489,7 @@ themes_apply_theme (Gimp *gimp,
"button, tab { padding: %dpx; }"
"\n"
"paned separator { padding: %dpx; }",
tool_icon_size, tab_icon_size, button_icon_size,
tool_icon_size, tab_icon_size, tab_icon_size, button_icon_size,
pal_padding, tab_padding, sep_padding);
}

View File

@@ -79,6 +79,8 @@ static void gimp_color_dialog_get_property (GObject *object,
GValue *value,
GParamSpec *pspec);
static void gimp_color_dialog_style_updated (GtkWidget *widget);
static void gimp_color_dialog_response (GtkDialog *dialog,
gint response_id);
@@ -123,6 +125,7 @@ gimp_color_dialog_class_init (GimpColorDialogClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
GtkDialogClass *dialog_class = GTK_DIALOG_CLASS (klass);
GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
object_class->constructed = gimp_color_dialog_constructed;
object_class->finalize = gimp_color_dialog_finalize;
@@ -131,6 +134,8 @@ gimp_color_dialog_class_init (GimpColorDialogClass *klass)
dialog_class->response = gimp_color_dialog_response;
widget_class->style_updated = gimp_color_dialog_style_updated;
color_dialog_signals[UPDATE] =
g_signal_new ("update",
G_TYPE_FROM_CLASS (klass),
@@ -328,6 +333,19 @@ gimp_color_dialog_get_property (GObject *object,
}
}
static void
gimp_color_dialog_style_updated (GtkWidget *widget)
{
GimpColorDialog *dialog = GIMP_COLOR_DIALOG (widget);
GimpColorNotebook *notebook;
GTK_WIDGET_CLASS (parent_class)->style_updated (widget);
notebook =
GIMP_COLOR_NOTEBOOK (gimp_color_selection_get_notebook (GIMP_COLOR_SELECTION (dialog->selection)));
GTK_WIDGET_GET_CLASS (notebook)->style_updated (GTK_WIDGET (notebook));
}
static void
gimp_color_dialog_response (GtkDialog *gtk_dialog,
gint response_id)
@@ -787,10 +805,23 @@ gimp_color_dialog_show (GimpColorDialog *dialog)
g_signal_connect_object (user_context, "image-changed",
G_CALLBACK (gimp_color_dialog_image_changed),
dialog, 0);
g_signal_connect_object (viewable_dialog->context->gimp->config,
"notify::theme",
G_CALLBACK (gimp_color_dialog_style_updated),
dialog, G_CONNECT_AFTER | G_CONNECT_SWAPPED);
g_signal_connect_object (viewable_dialog->context->gimp->config,
"notify::override-theme-icon-size",
G_CALLBACK (gimp_color_dialog_style_updated),
dialog, G_CONNECT_AFTER | G_CONNECT_SWAPPED);
g_signal_connect_object (viewable_dialog->context->gimp->config,
"notify::custom-icon-size",
G_CALLBACK (gimp_color_dialog_style_updated),
dialog, G_CONNECT_AFTER | G_CONNECT_SWAPPED);
gimp_color_dialog_image_changed (viewable_dialog->context,
image, dialog);
gimp_color_dialog_update_base_type (dialog);
gimp_color_dialog_style_updated (dialog);
}
else
{
@@ -809,5 +840,8 @@ gimp_color_dialog_hide (GimpColorDialog *dialog)
g_signal_handlers_disconnect_by_func (user_context,
G_CALLBACK (gimp_color_dialog_image_changed),
dialog);
g_signal_handlers_disconnect_by_func (viewable_dialog->context->gimp->config,
G_CALLBACK (gimp_color_dialog_style_updated),
dialog);
}
}

View File

@@ -541,6 +541,7 @@ static void
gimp_color_editor_style_updated (GtkWidget *widget)
{
GimpColorEditor *editor = GIMP_COLOR_EDITOR (widget);
GimpColorNotebook *notebook = GIMP_COLOR_NOTEBOOK (editor->notebook);
GtkIconSize button_icon_size;
gint icon_width = 40;
gint icon_height = 38;
@@ -557,6 +558,8 @@ gimp_color_editor_style_updated (GtkWidget *widget)
gtk_widget_set_size_request (editor->fg_bg,
(gint) (icon_width * 1.75),
(gint) (icon_height * 1.75));
GTK_WIDGET_GET_CLASS (notebook)->style_updated (GTK_WIDGET (notebook));
}