[gnome-calendar] month-view: fix rendering issues, smooth resizing



commit 3e0fa5763c920d5fa720f38ea3c72d9e12fb8928
Author: Georges Basile Stavracas Neto <georges stavracas gmail com>
Date:   Fri Nov 21 12:01:57 2014 -0200

    month-view: fix rendering issues, smooth resizing
    
    All about integer rounding.
    
    Fixes bug #739294.

 src/gcal-month-view.c |   33 +++++++++++++++++----------------
 1 files changed, 17 insertions(+), 16 deletions(-)
---
diff --git a/src/gcal-month-view.c b/src/gcal-month-view.c
index 676dd2e..f9b4016 100644
--- a/src/gcal-month-view.c
+++ b/src/gcal-month-view.c
@@ -445,7 +445,7 @@ gcal_month_view_size_allocate (GtkWidget     *widget,
   g_object_unref (layout);
 
   start_grid_y = gcal_month_view_get_start_grid_y (widget);
-  horizontal_block = allocation->width / 7;
+  horizontal_block = allocation->width / 7.0;
   vertical_block = (allocation->height - start_grid_y) / 6;
 
   days = priv->days_delay + icaltime_days_in_month (priv->date->month, priv->date->year);
@@ -556,7 +556,8 @@ gcal_month_view_draw (GtkWidget *widget,
   gint pos_y;
   gint pos_x;
 
-  gint cell_height;
+  gdouble cell_width;
+  gdouble cell_height;
 
   priv = gcal_month_view_get_instance_private (GCAL_MONTH_VIEW (widget));
 
@@ -567,7 +568,8 @@ gcal_month_view_draw (GtkWidget *widget,
   gtk_style_context_get_padding (context, state, &padding);
   gtk_widget_get_allocation (widget, &alloc);
   start_grid_y = gcal_month_view_get_start_grid_y (widget);
-  cell_height = (alloc.height - start_grid_y) / 6;
+  cell_width = alloc.width / 7.0;
+  cell_height = (alloc.height - start_grid_y) / 6.0;
 
   layout = pango_cairo_create_layout (cr);
 
@@ -612,7 +614,7 @@ gcal_month_view_draw (GtkWidget *widget,
       pango_layout_get_pixel_size (layout, &font_width, &font_height);
 
       cairo_move_to (cr,
-                     (alloc.width / 7) * i + header_padding.left,
+                     cell_width * i + header_padding.left,
                      start_grid_y - padding.bottom - font_height);
       pango_cairo_show_layout (cr, layout);
     }
@@ -652,8 +654,8 @@ gcal_month_view_draw (GtkWidget *widget,
           gdk_cairo_set_source_rgba (cr, &background_selected_color);
           pos_y = cell_height * (row + lines_gap_for_5) + start_grid_y;
           cairo_rectangle (cr,
-                           (alloc.width / 7) * column, pos_y + 0.3,
-                           alloc.width / 7, cell_height);
+                           cell_width * column, pos_y + 0.3,
+                           cell_width, cell_height);
           cairo_fill (cr);
           gdk_cairo_set_source_rgba (cr, &ligther_color);
 
@@ -672,7 +674,7 @@ gcal_month_view_draw (GtkWidget *widget,
 
       pos_y = cell_height * (row + lines_gap_for_5) + start_grid_y + padding.top;
       cairo_move_to (cr,
-                     (alloc.width / 7) * column + header_padding.left,
+                     cell_width * column + header_padding.left,
                      pos_y + 0.3);
 
       pango_cairo_show_layout (cr, layout);
@@ -686,9 +688,9 @@ gcal_month_view_draw (GtkWidget *widget,
           cairo_set_line_width (cr, 2.0);
           pos_y = cell_height * (row + lines_gap_for_5) + start_grid_y;
           cairo_move_to (cr,
-                         (alloc.width / 7) * column,
+                         cell_width * column,
                          pos_y + 1);
-          cairo_rel_line_to (cr, (alloc.width / 7), 0);
+          cairo_rel_line_to (cr, cell_width, 0);
           cairo_stroke (cr);
 
           gdk_cairo_set_source_rgba (cr, &ligther_color);
@@ -718,19 +720,18 @@ gcal_month_view_draw (GtkWidget *widget,
       gint row = i / 7;
       pos_y = cell_height * (row + lines_gap_for_5) + start_grid_y;
       cairo_rectangle (cr,
-                       (alloc.width / 7) * column, pos_y + 0.3,
-                       alloc.width / 7, cell_height);
+                       cell_width * column, pos_y + 0.3,
+                       cell_width, cell_height);
     }
   /* final gap */
   for (i = days + 7 * february_gap; i < 7 * (shown_rows == 5 ? 5 : 6); i++)
     {
       gint column = i % 7;
       gint row = i / 7;
-      pos_y = ((alloc.height - start_grid_y ) / 6) * (row + lines_gap_for_5) + start_grid_y;
+      pos_y = cell_height * (row + lines_gap_for_5) + start_grid_y;
       cairo_rectangle (cr,
-                       (alloc.width / 7) * column,
-                       pos_y + 0.3,
-                       alloc.width / 7, (alloc.height - start_grid_y ) / 6);
+                       cell_width * column, pos_y + 0.3,
+                       cell_width, cell_height);
     }
   cairo_fill (cr);
 
@@ -741,7 +742,7 @@ gcal_month_view_draw (GtkWidget *widget,
   /* vertical lines, the easy ones */
   for (i = 0; i < 6; i++)
     {
-      pos_x = (alloc.width / 7) * (i + 1);
+      pos_x = cell_width * (i + 1);
       cairo_move_to (cr, pos_x + 0.3, start_grid_y);
       cairo_rel_line_to (cr, 0, alloc.height - start_grid_y);
     }


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