diff --git a/src/gui/common/gcal-date-chooser.blp b/src/gui/common/gcal-date-chooser.blp index 6dc45cd0..9da7954d 100644 --- a/src/gui/common/gcal-date-chooser.blp +++ b/src/gui/common/gcal-date-chooser.blp @@ -12,13 +12,10 @@ template $GcalDateChooser: Adw.Bin { animate: false; value: 0; wrap: true; + category: _("Month"); visible: bind $get_split_choice_visible(template.show-heading, template.split-month-year) as ; notify::value => $split_multi_choice_changed() swapped; - accessibility { - label: _("Month"); - } - layout { column: 0; row: 0; @@ -32,12 +29,9 @@ template $GcalDateChooser: Adw.Bin { max-value: 9999; animate: false; value: 0; + category: _("Year"); notify::value => $split_multi_choice_changed() swapped; - accessibility { - label: _("Year"); - } - layout { column: 1; row: 0; @@ -52,12 +46,9 @@ template $GcalDateChooser: Adw.Bin { popover: popover; animate: false; value: 0; + category: _("Month"); notify::value => $combined_multi_choice_changed() swapped; - accessibility { - label: _("Month"); - } - layout { column: 0; column-span: 2; @@ -89,10 +80,7 @@ Popover popover { max-value: bind month_choice.max-value bidirectional; animate: bind month_choice.animate bidirectional; value: bind month_choice.value bidirectional; - - accessibility { - label: _("Month"); - } + category: bind month_choice.category bidirectional; } $GcalMultiChoice { @@ -100,10 +88,7 @@ Popover popover { max-value: bind year_choice.max-value bidirectional; animate: bind year_choice.animate bidirectional; value: bind year_choice.value bidirectional; - - accessibility { - label: _("Year"); - } + category: bind year_choice.category bidirectional; } styles [ diff --git a/src/gui/event-editor/gcal-multi-choice.blp b/src/gui/event-editor/gcal-multi-choice.blp index e7b37800..da8e3799 100644 --- a/src/gui/event-editor/gcal-multi-choice.blp +++ b/src/gui/event-editor/gcal-multi-choice.blp @@ -3,11 +3,13 @@ using Gtk 4.0; template $GcalMultiChoice: Box { spacing: 6; accessible-role: spin_button; + notify::category => $set_accessibility_label() swapped; Button down_button { icon-name: "pan-start-symbolic"; clicked => $button_clicked_cb(); can-focus: false; + tooltip-text: bind $get_down_button_tooltip(template.category) as ; styles [ "back-button", @@ -53,6 +55,7 @@ template $GcalMultiChoice: Box { icon-name: "pan-end-symbolic"; clicked => $button_clicked_cb(); can-focus: false; + tooltip-text: bind $get_up_button_tooltip(template.category) as ; styles [ "circular", diff --git a/src/gui/event-editor/gcal-multi-choice.c b/src/gui/event-editor/gcal-multi-choice.c index 45b2da20..f13c8fec 100644 --- a/src/gui/event-editor/gcal-multi-choice.c +++ b/src/gui/event-editor/gcal-multi-choice.c @@ -24,6 +24,8 @@ #include "gcal-multi-choice.h" +#include + struct _GcalMultiChoice { GtkBox parent; @@ -159,6 +161,26 @@ set_value (GcalMultiChoice *self, g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_VALUE]); } +static gchar * +get_down_button_tooltip (GcalMultiChoice *self, + gchar *category) +{ + g_autofree gchar *formatted_tooltip = NULL; + + formatted_tooltip = g_strdup_printf (_("Previous %1$s"), category); + return g_steal_pointer (&formatted_tooltip); +} + +static gchar * +get_up_button_tooltip (GcalMultiChoice *self, + gchar *category) +{ + g_autofree gchar *formatted_tooltip = NULL; + + formatted_tooltip = g_strdup_printf (_("Next %1$s"), category); + return g_steal_pointer (&formatted_tooltip); +} + static void go_up (GcalMultiChoice *self) { @@ -224,6 +246,14 @@ update_sensitivity (GcalMultiChoice *self) GTK_ACCESSIBLE_RELATION_CONTROLS); } +static void +set_accessibility_label (GcalMultiChoice *self) +{ + gtk_accessible_update_property (GTK_ACCESSIBLE (self), + GTK_ACCESSIBLE_PROPERTY_LABEL, + gcal_multi_choice_get_category (self), -1); +} + static void button_clicked_cb (GtkWidget *button, GcalMultiChoice *self) @@ -672,10 +702,13 @@ gcal_multi_choice_class_init (GcalMultiChoiceClass *class) gtk_widget_class_bind_template_child (widget_class, GcalMultiChoice, label1); gtk_widget_class_bind_template_child (widget_class, GcalMultiChoice, label2); + gtk_widget_class_bind_template_callback (widget_class, set_accessibility_label); gtk_widget_class_bind_template_callback (widget_class, button_clicked_cb); gtk_widget_class_bind_template_callback (widget_class, button_toggled_cb); gtk_widget_class_bind_template_callback (widget_class, button_state_flags_changed_cb); gtk_widget_class_bind_template_callback (widget_class, key_pressed_cb); + gtk_widget_class_bind_template_callback (widget_class, get_down_button_tooltip); + gtk_widget_class_bind_template_callback (widget_class, get_up_button_tooltip); gtk_widget_class_set_css_name (widget_class, "navigator"); }