From: Matthias Clasen Date: Sun, 14 Feb 2021 00:04:10 +0000 (-0500) Subject: gizmo: Add a css_changed function X-Git-Tag: archive/raspbian/4.4.1+ds1-2+rpi1~1^2~83^2^2~405^2~6 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=39f72b38341d2ff2d67c2043ce04915797d24fb8;p=gtk4.git gizmo: Add a css_changed function In a break from the current gizmo api, add a separate setter, since the calls with long argument lists full of NULL are getting out of hand. --- diff --git a/gtk/gtkgizmo.c b/gtk/gtkgizmo.c index 00162645b3..45b23b20eb 100644 --- a/gtk/gtkgizmo.c +++ b/gtk/gtkgizmo.c @@ -82,6 +82,16 @@ gtk_gizmo_grab_focus (GtkWidget *widget) return FALSE; } +static void +gtk_gizmo_css_changed (GtkWidget *widget, + GtkCssStyleChange *change) +{ + GtkGizmo *self = GTK_GIZMO (widget); + + if (self->css_changed_func) + self->css_changed_func (self, change); +} + static void gtk_gizmo_finalize (GObject *object) { @@ -115,6 +125,7 @@ gtk_gizmo_class_init (GtkGizmoClass *klass) widget_class->contains = gtk_gizmo_contains; widget_class->grab_focus = gtk_gizmo_grab_focus; widget_class->focus = gtk_gizmo_focus; + widget_class->css_changed = gtk_gizmo_css_changed; } static void @@ -165,3 +176,12 @@ gtk_gizmo_new_with_role (const char *css_name, return GTK_WIDGET (gizmo); } + +void +gtk_gizmo_set_css_changed_func (GtkGizmo *gizmo, + GtkGizmoCssChangedFunc css_changed_func) +{ + g_return_if_fail (!gtk_widget_get_realized (GTK_WIDGET (gizmo))); + + gizmo->css_changed_func = css_changed_func; +} diff --git a/gtk/gtkgizmoprivate.h b/gtk/gtkgizmoprivate.h index 9257201a59..a830e3550d 100644 --- a/gtk/gtkgizmoprivate.h +++ b/gtk/gtkgizmoprivate.h @@ -33,7 +33,9 @@ typedef gboolean (* GtkGizmoContainsFunc) (GtkGizmo *gizmo, double y); typedef gboolean (* GtkGizmoFocusFunc) (GtkGizmo *gizmo, GtkDirectionType direction); -typedef gboolean (* GtkGizmoGrabFocusFunc)(GtkGizmo *gizmo); +typedef gboolean (* GtkGizmoGrabFocusFunc) (GtkGizmo *gizmo); +typedef void (* GtkGizmoCssChangedFunc) (GtkGizmo *gizmo, + GtkCssStyleChange *change); struct _GtkGizmo { @@ -45,6 +47,7 @@ struct _GtkGizmo GtkGizmoContainsFunc contains_func; GtkGizmoFocusFunc focus_func; GtkGizmoGrabFocusFunc grab_focus_func; + GtkGizmoCssChangedFunc css_changed_func; }; struct _GtkGizmoClass @@ -71,5 +74,7 @@ GtkWidget *gtk_gizmo_new_with_role (const char *css_name, GtkGizmoFocusFunc focus_func, GtkGizmoGrabFocusFunc grab_focus_func); +void gtk_gizmo_set_css_changed_func (GtkGizmo *gizmo, + GtkGizmoCssChangedFunc css_changed_func); #endif