[gnome-calendar] Added allocating of children in the GcalYearView.
- From: Erick PÃrez Castellanos <erickpc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-calendar] Added allocating of children in the GcalYearView.
- Date: Sat, 1 Dec 2012 20:34:35 +0000 (UTC)
commit 0a34a407222b5ec48cc10b016bdd2add3ca7182b
Author: Erick PÃrez Castellanos <erick red gmail com>
Date: Thu Nov 22 11:16:16 2012 -0500
Added allocating of children in the GcalYearView.
Reordered months in the grid.
src/gcal-year-view.c | 89 +++++++++++++++++++++++++++++++++++++++++++++++---
1 files changed, 84 insertions(+), 5 deletions(-)
---
diff --git a/src/gcal-year-view.c b/src/gcal-year-view.c
index 72e74c8..426effa 100644
--- a/src/gcal-year-view.c
+++ b/src/gcal-year-view.c
@@ -351,6 +351,19 @@ gcal_year_view_size_allocate (GtkWidget *widget,
GtkAllocation *allocation)
{
GcalYearViewPrivate *priv;
+ gint i;
+ GList *l;
+
+ GtkBorder padding;
+ PangoLayout *layout;
+
+ gint font_height;
+ gdouble start_grid_y;
+
+ gdouble added_height;
+ gdouble horizontal_block;
+ gdouble vertical_block;
+ gdouble vertical_cell_margin;
priv = GCAL_YEAR_VIEW (widget)->priv;
@@ -363,6 +376,72 @@ gcal_year_view_size_allocate (GtkWidget *widget,
allocation->width,
allocation->height);
}
+
+ gtk_style_context_get_padding (gtk_widget_get_style_context (widget),
+ gtk_widget_get_state_flags (widget),
+ &padding);
+ layout = pango_layout_new (gtk_widget_get_pango_context (widget));
+
+ pango_layout_set_font_description (
+ layout,
+ gtk_style_context_get_font (gtk_widget_get_style_context (widget),
+ gtk_widget_get_state_flags (widget)));
+ pango_layout_get_pixel_size (layout, NULL, &font_height);
+ g_object_unref (layout);
+
+ start_grid_y = gcal_year_view_get_start_grid_y (widget);
+ horizontal_block = allocation->width / 6;
+ vertical_block = (allocation->height - start_grid_y) / 2;
+ vertical_cell_margin = padding.top + font_height;
+
+ g_debug ("handling children sizes");
+ for (i = 0; i < 12; i++)
+ {
+ added_height = 0;
+ for (l = priv->months[i]; l != NULL; l = l->next)
+ {
+ GcalViewChild *child;
+ gint pos_x;
+ gint pos_y;
+ gint min_height;
+ gint natural_height;
+ GtkAllocation child_allocation;
+
+ g_debug ("list length for %s is %d",
+ gcal_get_month_name (i),
+ g_list_length (priv->months[i]));
+ child = (GcalViewChild*) l->data;
+
+ pos_x = ( i % 6 ) * horizontal_block;
+ pos_y = ( i / 6 ) * vertical_block;
+
+ if ((! gtk_widget_get_visible (child->widget))
+ && (! child->hidden_by_me))
+ continue;
+
+ gtk_widget_get_preferred_height (child->widget,
+ &min_height,
+ &natural_height);
+ child_allocation.x = pos_x;
+ child_allocation.y = start_grid_y + vertical_cell_margin + pos_y;
+ child_allocation.width = horizontal_block;
+ child_allocation.height = MIN (natural_height, vertical_block);
+ if (added_height + vertical_cell_margin + child_allocation.height
+ > vertical_block)
+ {
+ gtk_widget_hide (child->widget);
+ child->hidden_by_me = TRUE;
+ }
+ else
+ {
+ gtk_widget_show (child->widget);
+ child->hidden_by_me = FALSE;
+ child_allocation.y = child_allocation.y + added_height;
+ gtk_widget_size_allocate (child->widget, &child_allocation);
+ added_height += child_allocation.height;
+ }
+ }
+ }
}
static gboolean
@@ -718,17 +797,17 @@ gcal_year_view_draw_grid (GcalYearView *view,
ligther_color.blue);
/* drawing grid text */
- for (i = 0; i < 6; i++)
+ for (i = 0; i < 2; i++)
{
- for (j = 0; j < 2; j++)
+ for (j = 0; j < 6; j++)
{
- pango_layout_set_text (layout, gcal_get_month_name (i * 2 + j), -1);
+ pango_layout_set_text (layout, gcal_get_month_name (i * 6 + j), -1);
pango_cairo_update_layout (cr, layout);
pango_layout_get_pixel_size (layout, &font_width, &font_height);
cairo_move_to (cr,
- (alloc->width / 6) * i + header_padding.left,
- start_grid_y + padding->top + j * (alloc->height - start_grid_y) / 2);
+ (alloc->width / 6) * j + header_padding.left,
+ start_grid_y + padding->top + i * (alloc->height - start_grid_y) / 2);
pango_cairo_show_layout (cr, layout);
}
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]