From 2a7a4e3b30815e27501d7c8ae6a3c68c84defb20 Mon Sep 17 00:00:00 2001 From: Hari Rana Date: Mon, 23 Jun 2025 22:33:36 -0400 Subject: [PATCH] event-editor/multi-choice: Implement GtkAccessibleRange Part-of: --- src/gui/event-editor/gcal-multi-choice.c | 32 +++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/src/gui/event-editor/gcal-multi-choice.c b/src/gui/event-editor/gcal-multi-choice.c index ff103db7..cadfad16 100644 --- a/src/gui/event-editor/gcal-multi-choice.c +++ b/src/gui/event-editor/gcal-multi-choice.c @@ -75,8 +75,11 @@ static GParamSpec *properties[NUM_PROPERTIES] = { NULL, }; static void gcal_multi_choice_accessible_init (GtkAccessibleInterface *iface); +static void gcal_multi_choice_accessible_range_init (GtkAccessibleRangeInterface *iface); + G_DEFINE_TYPE_WITH_CODE (GcalMultiChoice, gcal_multi_choice, GTK_TYPE_BOX, - G_IMPLEMENT_INTERFACE (GTK_TYPE_ACCESSIBLE, gcal_multi_choice_accessible_init)) + G_IMPLEMENT_INTERFACE (GTK_TYPE_ACCESSIBLE, gcal_multi_choice_accessible_init) + G_IMPLEMENT_INTERFACE (GTK_TYPE_ACCESSIBLE_RANGE, gcal_multi_choice_accessible_range_init)) /* * Auxiliary methods @@ -115,6 +118,9 @@ apply_value (GcalMultiChoice *self, text = get_value_string (self, self->value); gtk_label_set_text (GTK_LABEL (label), text); + gtk_accessible_update_property (GTK_ACCESSIBLE (self), + GTK_ACCESSIBLE_PROPERTY_VALUE_TEXT, text, + -1); g_free (text); if (!self->animate) @@ -142,6 +148,12 @@ set_value (GcalMultiChoice *self, apply_value (self, transition); + gtk_accessible_update_property (GTK_ACCESSIBLE (self), + GTK_ACCESSIBLE_PROPERTY_VALUE_MAX, (gdouble) self->max_value, + GTK_ACCESSIBLE_PROPERTY_VALUE_MIN, (gdouble) self->min_value, + GTK_ACCESSIBLE_PROPERTY_VALUE_NOW, (gdouble) self->value, + -1); + g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_VALUE]); } @@ -482,6 +494,18 @@ gcal_multi_choice_accessible_get_platform_state (GtkAccessible *acc return gtk_accessible_get_platform_state (GTK_ACCESSIBLE (self->button), state); } +/* + * GtkAccessibleRange overrides + */ + +static gboolean +gcal_multi_choice_accessible_range_set_current_value (GtkAccessibleRange *accessible_range, + gdouble value) +{ + gcal_multi_choice_set_value (GCAL_MULTI_CHOICE (accessible_range), value); + return TRUE; +} + /* * Init */ @@ -574,6 +598,12 @@ gcal_multi_choice_accessible_init (GtkAccessibleInterface *iface) iface->get_platform_state = gcal_multi_choice_accessible_get_platform_state; } +static void +gcal_multi_choice_accessible_range_init (GtkAccessibleRangeInterface *iface) +{ + iface->set_current_value = gcal_multi_choice_accessible_range_set_current_value; +} + static void gcal_multi_choice_init (GcalMultiChoice *self) {