[gnome-calendar] year-view: calculate number of rows on-the-fly



commit a83e8dd972ac8f0b02222fd7af3feb3489ddae1e
Author: Georges Basile Stavracas Neto <georges stavracas gmail com>
Date:   Thu May 19 09:57:42 2016 -0300

    year-view: calculate number of rows on-the-fly
    
    Instead of adding another field to the structure and
    do many pointer lookups, calculate the number of rows
    on the fly.

 src/gcal-year-view.c |   16 +++++++++-------
 1 files changed, 9 insertions(+), 7 deletions(-)
---
diff --git a/src/gcal-year-view.c b/src/gcal-year-view.c
index 0b4656b..dbfe1f9 100644
--- a/src/gcal-year-view.c
+++ b/src/gcal-year-view.c
@@ -66,7 +66,6 @@ struct _GcalYearView
   /* geometry info */
   GridData     *navigator_grid;
   guint         number_of_columns;
-  guint         number_of_rows;
   guint         column_width;
   guint         row_height;
   guint         header_height;
@@ -556,15 +555,17 @@ calculate_day_month_for_coord (GcalYearView *year_view,
                                gboolean     *is_title)
 {
   gint row, column, i, sw, clicked_cell, day, month, columns_or_rows;
+  gint number_of_rows;
   gdouble box_side;
 
   row = -1;
   column = -1;
   box_side = year_view->navigator_grid->box_side;
+  number_of_rows = ceil (12.0 / year_view->number_of_columns);
   sw = 1 - 2 * year_view->k;
 
   *is_title = FALSE;
-  columns_or_rows = year_view->number_of_columns > year_view->number_of_rows ? year_view->number_of_columns 
: year_view->number_of_rows;
+  columns_or_rows = year_view->number_of_columns > number_of_rows ? year_view->number_of_columns : 
number_of_rows;
 
   for (i = 0; i < columns_or_rows && ((row == -1) || (column == -1)); i++)
     {
@@ -903,7 +904,7 @@ draw_navigator (GcalYearView *year_view,
   GtkStateFlags state_flags;
 
   gint header_padding_left, header_padding_top, header_height, layout_width, layout_height;
-  gint real_padding_left, real_padding_top, i, sw, weeks_counter;
+  gint real_padding_left, real_padding_top, i, sw, weeks_counter, number_of_rows;
   gdouble width, height;
 
   gchar *header_str;
@@ -915,6 +916,7 @@ draw_navigator (GcalYearView *year_view,
   state_flags = gtk_style_context_get_state (context);
   sw = 1 - 2 * year_view->k;
   width = gtk_widget_get_allocated_width (widget);
+  number_of_rows = ceil (12.0 / year_view->number_of_columns);
 
   /* read header from CSS code related to the view */
   gtk_style_context_save (context);
@@ -947,7 +949,7 @@ draw_navigator (GcalYearView *year_view,
   height = gtk_widget_get_allocated_height (widget) - header_height;
 
   real_padding_left = (width - year_view->column_width * year_view->number_of_columns) / 
(year_view->number_of_columns + 1);
-  real_padding_top = (height - year_view->row_height * year_view->number_of_rows) / 
year_view->number_of_rows;
+  real_padding_top = (height - year_view->row_height * number_of_rows) / number_of_rows;
 
   if (real_padding_top < 0)
     real_padding_top = 0;
@@ -1297,6 +1299,7 @@ gcal_year_view_size_allocate (GtkWidget     *widget,
   GcalYearView *year_view = GCAL_YEAR_VIEW (widget);
   GtkStyleContext *context;
   gint padding_left, padding_right, padding_top, padding_bottom, hpadding, vpadding;
+  gint number_of_rows;
 
   context = gtk_widget_get_style_context (widget);
   gtk_style_context_save (context);
@@ -1319,11 +1322,11 @@ gcal_year_view_size_allocate (GtkWidget     *widget,
   if (year_view->number_of_columns > NAVIGATOR_MAX_GRID_SIZE)
     year_view->number_of_columns = NAVIGATOR_MAX_GRID_SIZE;
 
-  year_view->number_of_rows = ceil (12.0 / year_view->number_of_columns);
+  number_of_rows = ceil (12.0 / year_view->number_of_columns);
 
   gtk_widget_set_size_request (year_view->navigator,
                                hpadding + year_view->column_width * year_view->number_of_columns,
-                               vpadding + year_view->row_height * year_view->number_of_rows + 
year_view->header_height);
+                               vpadding + year_view->row_height * number_of_rows + year_view->header_height);
 
   if (year_view->popover_mode && !gtk_widget_is_ancestor (year_view->events_sidebar, year_view->popover))
     {
@@ -1622,7 +1625,6 @@ gcal_year_view_init (GcalYearView *self)
 
   /* layout */
   self->number_of_columns = 4;
-  self->number_of_rows = 3;
   calculate_sizes (self);
 
   gtk_list_box_set_header_func (GTK_LIST_BOX (self->events_sidebar), update_sidebar_headers, self, NULL);


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