[gtk+] GtkCalendar: deal better with a large allocation



commit 7b2e526c3ab727bf8ef4c99b227a1cbd15a1368e
Author: Matthias Clasen <mclasen redhat com>
Date:   Wed Oct 1 20:09:10 2014 -0400

    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 files changed, 4 insertions(+), 7 deletions(-)
---
diff --git a/gtk/gtkcalendar.c b/gtk/gtkcalendar.c
index 377a5e9..47f1e8b 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


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]