diff --git a/src/gui/views/gcal-month-cell.blp b/src/gui/views/gcal-month-cell.blp index b3c8666d..e78eadf9 100644 --- a/src/gui/views/gcal-month-cell.blp +++ b/src/gui/views/gcal-month-cell.blp @@ -13,6 +13,13 @@ template $GcalMonthCell: Adw.BreakpointBin { } } + accessibility { + labelled-by: day_label; + has-popup: true; + selected: false; + } + + accessible-role: grid_cell; width-request: 50; height-request: 50; hexpand: true; diff --git a/src/gui/views/gcal-month-cell.c b/src/gui/views/gcal-month-cell.c index 01b15a3e..24834160 100644 --- a/src/gui/views/gcal-month-cell.c +++ b/src/gui/views/gcal-month-cell.c @@ -624,6 +624,9 @@ gcal_month_cell_set_selected (GcalMonthCell *self, return; self->selected = selected; + gtk_accessible_update_state (GTK_ACCESSIBLE (self), + GTK_ACCESSIBLE_STATE_SELECTED, selected, + -1); /* Update style context state */ flags = gtk_widget_get_state_flags (GTK_WIDGET (self)); diff --git a/src/gui/views/gcal-month-view-row.c b/src/gui/views/gcal-month-view-row.c index 8648ed41..884b5310 100644 --- a/src/gui/views/gcal-month-view-row.c +++ b/src/gui/views/gcal-month-view-row.c @@ -1111,6 +1111,9 @@ gcal_month_view_row_init (GcalMonthViewRow *self) gcal_month_cell_set_overflow (GCAL_MONTH_CELL (self->day_cells[i]), 0); gtk_widget_set_parent (self->day_cells[i], GTK_WIDGET (self)); g_signal_connect (self->day_cells[i], "show-overflow", G_CALLBACK (on_month_cell_show_overflow_cb), self); + gtk_accessible_update_relation (GTK_ACCESSIBLE (self->day_cells[i]), + GTK_ACCESSIBLE_RELATION_COL_INDEX, i + 1, + -1); } } diff --git a/src/gui/views/gcal-month-view.blp b/src/gui/views/gcal-month-view.blp index b9eb2328..2297b270 100644 --- a/src/gui/views/gcal-month-view.blp +++ b/src/gui/views/gcal-month-view.blp @@ -2,6 +2,7 @@ using Gtk 4.0; template $GcalMonthView: Widget { overflow: hidden; + accessible-role: grid; styles [ "month-view", diff --git a/src/gui/views/gcal-month-view.c b/src/gui/views/gcal-month-view.c index 2c453c26..27f1fcf8 100644 --- a/src/gui/views/gcal-month-view.c +++ b/src/gui/views/gcal-month-view.c @@ -1694,6 +1694,11 @@ gcal_month_view_init (GcalMonthView *self) gtk_widget_init_template (GTK_WIDGET (self)); update_weekday_labels (self); + gtk_accessible_update_relation (GTK_ACCESSIBLE (self), + GTK_ACCESSIBLE_RELATION_COL_COUNT, 7, + GTK_ACCESSIBLE_RELATION_ROW_COUNT, N_ROWS_PER_PAGE, + -1); + self->week_rows = g_ptr_array_new_full (N_TOTAL_ROWS, (GDestroyNotify) gtk_widget_unparent); for (gint i = 0; i < N_TOTAL_ROWS; i++) {