From 16a2d6487410d309a20928106fcfa5ed85ebb69b Mon Sep 17 00:00:00 2001 From: Georges Basile Stavracas Neto Date: Wed, 2 Nov 2016 15:32:19 -0200 Subject: [PATCH] week-header: simplify background drawing code By moving the drawing area to a separate place, we're able to avoid having to manually calculate the sidebar width. Also, because we can, the drawing code was simplified a little bit by moving the bottom border to CSS. --- data/theme/gtk-styles.css | 1 + src/views/gcal-week-header.c | 47 ++++++++++-------------------------- 2 files changed, 14 insertions(+), 34 deletions(-) diff --git a/data/theme/gtk-styles.css b/data/theme/gtk-styles.css index 45518c9e..1b568a4a 100644 --- a/data/theme/gtk-styles.css +++ b/data/theme/gtk-styles.css @@ -363,6 +363,7 @@ datechooser day:selected:hover { .week-header { padding: 0px; + border-bottom: solid @borders 1px; } .week-header .month-name { diff --git a/src/views/gcal-week-header.c b/src/views/gcal-week-header.c index 24e5a6e1..31998e07 100644 --- a/src/views/gcal-week-header.c +++ b/src/views/gcal-week-header.c @@ -1,6 +1,7 @@ /* gcal-week-header.c * - * Copyright (C) 2016 Vamsi Krishna Gollapudi + * Copyright (C) 2016 Georges Basile Stavracas Neto + * Vamsi Krishna Gollapudi * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -30,6 +31,8 @@ #define ALL_DAY_CELLS_HEIGHT 40 +#define COLUMN_PADDING 6 + struct _GcalWeekHeader { GtkGrid parent; @@ -87,10 +90,6 @@ static void header_expand (GcalWeekHeader *sel static void on_expand_action_activated (GcalWeekHeader *self, gpointer user_data); -static void fix_background_size_request (GcalWeekHeader *self, - GdkRectangle *allocation, - GtkWidget *widget); - static void gcal_week_header_finalize (GObject *object); static void gcal_week_header_get_property (GObject *object, @@ -454,14 +453,6 @@ on_expand_action_activated (GcalWeekHeader *self, header_expand (self); } -static void -fix_background_size_request (GcalWeekHeader *self, - GdkRectangle *allocation, - GtkWidget *widget) -{ - gtk_widget_set_size_request (self->draw_area, -1, allocation->height + gtk_widget_get_margin_top (self->scrolledwindow)); -} - static void gcal_week_header_finalize (GObject *object) { @@ -603,7 +594,7 @@ gcal_week_header_draw (GcalWeekHeader *self, PangoFontDescription *bold_font; gint i, font_height, current_cell; - gdouble sidebar_width, cell_width; + gdouble cell_width; cairo_save(cr); @@ -627,14 +618,13 @@ gcal_week_header_draw (GcalWeekHeader *self, current_cell = icaltime_day_of_week (*(self->active_date)) - 1; current_cell = (7 + current_cell - self->first_weekday) % 7; - sidebar_width = gtk_widget_get_allocated_width (self->expand_button_box); - cell_width = (alloc.width - sidebar_width) / 7; + cell_width = alloc.width / 7; pango_layout_get_pixel_size (layout, NULL, &font_height); gtk_style_context_save (context); gtk_style_context_add_class (context, "current"); gtk_render_background (context, cr, - cell_width * current_cell + sidebar_width, + cell_width * current_cell, font_height + padding.bottom, cell_width, ALL_DAY_CELLS_HEIGHT); @@ -663,7 +653,7 @@ gcal_week_header_draw (GcalWeekHeader *self, pango_layout_set_font_description (layout, bold_font); pango_layout_set_text (layout, weekday_date, -1); cairo_move_to (cr, - padding.left + cell_width * i + sidebar_width + 3, + padding.left + cell_width * i + COLUMN_PADDING, font_height + padding.bottom); pango_cairo_show_layout (cr,layout); @@ -679,35 +669,25 @@ gcal_week_header_draw (GcalWeekHeader *self, pango_layout_set_font_description (layout, bold_font); pango_layout_set_text (layout, weekday_abv, -1); cairo_move_to (cr, - padding.left + cell_width * i + sidebar_width + 3, + padding.left + cell_width * i + COLUMN_PADDING, 0); pango_cairo_show_layout (cr, layout); gtk_style_context_restore (context); /* Draws the lines after each day of the week */ - cairo_save (cr); cairo_move_to (cr, - cell_width * i + sidebar_width, - font_height + padding.bottom + 3); + cell_width * i + 0.5, + font_height + padding.bottom); + cairo_set_line_width (cr, 0.25); - cairo_rel_line_to (cr, 0.0, gtk_widget_get_allocated_height (self->draw_area)); + cairo_rel_line_to (cr, 0.0, gtk_widget_get_allocated_height (self->draw_area) - font_height + padding.bottom); cairo_stroke (cr); - cairo_restore (cr); g_free (weekday_date); g_free (weekday_abv); } - gtk_style_context_add_class (context, "margin"); - - gtk_style_context_get_color (context, state, &color); - gdk_cairo_set_source_rgba (cr, &color); - cairo_move_to (cr, 0, gtk_widget_get_allocated_height (self->draw_area)); - cairo_rel_line_to (cr, gtk_widget_get_allocated_width (self->draw_area), 0); - - cairo_stroke (cr); - cairo_restore (cr); pango_font_description_free (bold_font); @@ -752,7 +732,6 @@ gcal_week_header_class_init (GcalWeekHeaderClass *kclass) gtk_widget_class_bind_template_child (widget_class, GcalWeekHeader, week_label); gtk_widget_class_bind_template_child (widget_class, GcalWeekHeader, year_label); - gtk_widget_class_bind_template_callback (widget_class, fix_background_size_request); gtk_widget_class_bind_template_callback (widget_class, gcal_week_header_draw); gtk_widget_class_bind_template_callback (widget_class, on_expand_action_activated);