From 7b2e526c3ab727bf8ef4c99b227a1cbd15a1368e Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Wed, 1 Oct 2014 20:09:10 -0400 Subject: [PATCH] GtkCalendar: deal better with a large allocation When allocated more than the requested height, GtkCalendar was 'falling apart'. Not only was the main part rendered at the far end of the allocation, clicking on days was broken in this scenario. Fix this by always placing the main part directly under the header and day names. https://bugzilla.gnome.org/show_bug.cgi?id=737670 --- gtk/gtkcalendar.c | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/gtk/gtkcalendar.c b/gtk/gtkcalendar.c index 377a5e9144..47f1e8bca9 100644 --- a/gtk/gtkcalendar.c +++ b/gtk/gtkcalendar.c @@ -1253,17 +1253,14 @@ static gint calendar_top_y_for_row (GtkCalendar *calendar, gint row) { - GtkAllocation allocation; - gint inner_border = calendar_get_inner_border (calendar); + GtkCalendarPrivate *priv = calendar->priv; GtkBorder padding; + gint inner_border = calendar_get_inner_border (calendar); - gtk_widget_get_allocation (GTK_WIDGET (calendar), &allocation); get_component_paddings (calendar, &padding, NULL, NULL, NULL); - return allocation.height - - padding.top - inner_border - - (CALENDAR_MARGIN + (6 - row) - * calendar_row_height (calendar)); + return priv->header_h + priv->day_name_h + padding.top + inner_border + + row * calendar_row_height (calendar); } /* row_from_y: returns the row 0-5 that the