views/month-view-row: Add method for focusing adjacent event widget
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/741>
This commit is contained in:
@@ -1466,6 +1466,47 @@ gcal_month_view_row_focus_adjacent_cell (GcalMonthViewRow *self,
|
||||
return gtk_widget_grab_focus (cell);
|
||||
}
|
||||
|
||||
/**
|
||||
* gcal_month_view_row_focus_adjacent_event:
|
||||
* @self: a #GcalMonthViewRow
|
||||
* @widget: the month cell
|
||||
*
|
||||
* Focuses the adjacent event widget.
|
||||
*
|
||||
* Returns: %TRUE if the event widget grabbed focus
|
||||
*/
|
||||
gboolean
|
||||
gcal_month_view_row_focus_adjacent_event (GcalMonthViewRow *self,
|
||||
GtkWidget *widget)
|
||||
{
|
||||
GtkWidget *picked_widget, *event_widget;
|
||||
graphene_rect_t rect;
|
||||
gdouble x, y;
|
||||
|
||||
g_assert (GCAL_IS_MONTH_VIEW_ROW (self));
|
||||
g_assert (GCAL_IS_MONTH_CELL (widget));
|
||||
g_assert (gtk_widget_is_ancestor (widget, GTK_WIDGET (self)));
|
||||
|
||||
if (!gtk_widget_compute_bounds (widget, GTK_WIDGET (self), &rect))
|
||||
g_assert_not_reached ();
|
||||
|
||||
x = rect.origin.x + rect.size.width / 2;
|
||||
y = rect.origin.y + gcal_month_cell_get_header_height (GCAL_MONTH_CELL (widget));
|
||||
|
||||
picked_widget = gtk_widget_pick (GTK_WIDGET (self), x, y, GTK_PICK_DEFAULT);
|
||||
|
||||
g_assert (GTK_IS_WIDGET (picked_widget));
|
||||
|
||||
event_widget = gtk_widget_get_ancestor (picked_widget, GCAL_TYPE_EVENT_WIDGET);
|
||||
|
||||
g_assert (event_widget == NULL || GCAL_IS_EVENT_WIDGET (event_widget));
|
||||
|
||||
if (event_widget)
|
||||
return gtk_widget_grab_focus (event_widget);
|
||||
else
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/**
|
||||
* gcal_month_view_row_get_ceiled_height:
|
||||
* @self: a #GcalMonthViewRow
|
||||
|
||||
@@ -56,6 +56,9 @@ void gcal_month_view_row_update_selection (GcalMonthViewRo
|
||||
gboolean gcal_month_view_row_focus_adjacent_cell (GcalMonthViewRow *self,
|
||||
GtkWidget *widget);
|
||||
|
||||
gboolean gcal_month_view_row_focus_adjacent_event (GcalMonthViewRow *self,
|
||||
GtkWidget *widget);
|
||||
|
||||
gboolean gcal_month_view_row_get_ceiled_height (GcalMonthViewRow *self);
|
||||
|
||||
void gcal_month_view_row_set_ceiled_height (GcalMonthViewRow *self,
|
||||
|
||||
Reference in New Issue
Block a user