gcal-days-grid: reworked size calculations
GcalDaysGridPrivate:scale_width includes left and right padding.
This commit is contained in:
+28
-39
@@ -334,8 +334,6 @@ gcal_days_grid_get_preferred_width (GtkWidget *widget,
|
||||
{
|
||||
GcalDaysGridPrivate* priv;
|
||||
|
||||
GtkBorder padding;
|
||||
|
||||
GList *columns;
|
||||
|
||||
gint nat_keeper;
|
||||
@@ -346,10 +344,6 @@ gcal_days_grid_get_preferred_width (GtkWidget *widget,
|
||||
|
||||
priv = gcal_days_grid_get_instance_private (GCAL_DAYS_GRID (widget));
|
||||
|
||||
gtk_style_context_get_padding (gtk_widget_get_style_context (widget),
|
||||
gtk_widget_get_state_flags (widget),
|
||||
&padding);
|
||||
|
||||
gcal_days_grid_get_scale_width (GCAL_DAYS_GRID (widget));
|
||||
|
||||
nat_keeper = 0;
|
||||
@@ -380,13 +374,11 @@ gcal_days_grid_get_preferred_width (GtkWidget *widget,
|
||||
|
||||
if (minimum != NULL)
|
||||
{
|
||||
*minimum =
|
||||
(priv->columns_nr * min_keeper) + padding.left + padding.right + priv->scale_width;
|
||||
*minimum = (priv->columns_nr * min_keeper) + priv->scale_width;
|
||||
}
|
||||
if (natural != NULL)
|
||||
{
|
||||
*natural =
|
||||
(priv->columns_nr * nat_keeper) + padding.left + padding.right + priv->scale_width;
|
||||
*natural = (priv->columns_nr * nat_keeper) + priv->scale_width;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -502,8 +494,6 @@ gcal_days_grid_size_allocate (GtkWidget *widget,
|
||||
GcalDaysGridPrivate *priv;
|
||||
|
||||
GtkBorder padding;
|
||||
gint width;
|
||||
gint height;
|
||||
gint width_block;
|
||||
gint height_block;
|
||||
|
||||
@@ -527,10 +517,8 @@ gcal_days_grid_size_allocate (GtkWidget *widget,
|
||||
gtk_widget_get_state_flags (widget),
|
||||
&padding);
|
||||
|
||||
width = allocation->width - (padding.left + padding.right) - priv->scale_width;
|
||||
width_block = width / priv->columns_nr;
|
||||
height = allocation->height - (padding.top + padding.bottom);
|
||||
height_block = height / 48;
|
||||
width_block = (allocation->width - priv->scale_width) / priv->columns_nr;
|
||||
height_block = (allocation->height - (padding.top + padding.bottom)) / 48;
|
||||
|
||||
/* detecting columns and allocs */
|
||||
for (columns = priv->children, idx = 0;
|
||||
@@ -588,7 +576,7 @@ gcal_days_grid_size_allocate (GtkWidget *widget,
|
||||
info = (ChildInfo*) column->data;
|
||||
sub_column_block = width_block / last_y->len;
|
||||
|
||||
child_allocation.x = allocation->x + priv->scale_width + padding.left +
|
||||
child_allocation.x = allocation->x + priv->scale_width +
|
||||
idx * width_block + sub_column_block * info->sub_column;
|
||||
child_allocation.y = info->start_cell * height_block;
|
||||
child_allocation.width = sub_column_block;
|
||||
@@ -784,7 +772,6 @@ gcal_days_grid_button_press_event (GtkWidget *widget,
|
||||
GtkAllocation alloc;
|
||||
gint width_block;
|
||||
gint height_block;
|
||||
gint left_pad;
|
||||
|
||||
priv = gcal_days_grid_get_instance_private (GCAL_DAYS_GRID (widget));
|
||||
|
||||
@@ -792,18 +779,17 @@ gcal_days_grid_button_press_event (GtkWidget *widget,
|
||||
gtk_widget_get_style_context (widget),
|
||||
gtk_widget_get_state_flags (widget),
|
||||
&padding);
|
||||
left_pad = padding.left + padding.right + priv->scale_width;
|
||||
|
||||
/* XXX: an improvement will be scroll to that position when
|
||||
click the scale at the side */
|
||||
if (event->x < left_pad)
|
||||
if (event->x < priv->scale_width)
|
||||
return FALSE;
|
||||
|
||||
gtk_widget_get_allocation (widget, &alloc);
|
||||
width_block = (alloc.width - left_pad) / priv->columns_nr;
|
||||
width_block = (alloc.width - priv->scale_width) / priv->columns_nr;
|
||||
height_block = (alloc.height - (padding.top + padding.bottom)) / 48;
|
||||
|
||||
priv->clicked_cell = 48 * (((gint) event->x - left_pad) / width_block) + event->y / height_block;
|
||||
priv->clicked_cell = 48 * (((gint) event->x - priv->scale_width) / width_block) + event->y / height_block;
|
||||
priv->start_mark_cell = priv->clicked_cell;
|
||||
|
||||
return TRUE;
|
||||
@@ -819,7 +805,6 @@ gcal_days_grid_motion_notify_event (GtkWidget *widget,
|
||||
GtkAllocation alloc;
|
||||
gint width_block;
|
||||
gint height_block;
|
||||
gint left_pad;
|
||||
|
||||
priv = gcal_days_grid_get_instance_private (GCAL_DAYS_GRID (widget));
|
||||
|
||||
@@ -830,14 +815,12 @@ gcal_days_grid_motion_notify_event (GtkWidget *widget,
|
||||
gtk_widget_get_style_context (widget),
|
||||
gtk_widget_get_state_flags (widget),
|
||||
&padding);
|
||||
left_pad = padding.left + padding.right + priv->scale_width;
|
||||
|
||||
gtk_widget_get_allocation (widget, &alloc);
|
||||
width_block = (alloc.width - left_pad) / priv->columns_nr;
|
||||
width_block = (alloc.width - priv->scale_width) / priv->columns_nr;
|
||||
height_block = (alloc.height - (padding.top + padding.bottom)) / 48;
|
||||
|
||||
|
||||
priv->end_mark_cell = 48 * (((gint) event->x - left_pad) / width_block) + event->y / height_block;
|
||||
priv->end_mark_cell = 48 * (((gint) event->x - priv->scale_width) / width_block) + event->y / height_block;
|
||||
|
||||
gtk_widget_queue_draw (widget);
|
||||
return TRUE;
|
||||
@@ -853,7 +836,6 @@ gcal_days_grid_button_release_event (GtkWidget *widget,
|
||||
GtkAllocation alloc;
|
||||
gint width_block;
|
||||
gint height_block;
|
||||
gint left_pad;
|
||||
|
||||
gint cell_temp;
|
||||
|
||||
@@ -866,8 +848,8 @@ gcal_days_grid_button_release_event (GtkWidget *widget,
|
||||
gtk_widget_get_style_context (widget),
|
||||
gtk_widget_get_state_flags (widget),
|
||||
&padding);
|
||||
left_pad = padding.left + padding.right + priv->scale_width;
|
||||
if (event->x < left_pad)
|
||||
|
||||
if (event->x < priv->scale_width)
|
||||
{
|
||||
priv->start_mark_cell = -1;
|
||||
priv->end_mark_cell = -1;
|
||||
@@ -875,10 +857,10 @@ gcal_days_grid_button_release_event (GtkWidget *widget,
|
||||
}
|
||||
|
||||
gtk_widget_get_allocation (widget, &alloc);
|
||||
width_block = (alloc.width - left_pad) / priv->columns_nr;
|
||||
width_block = (alloc.width - priv->scale_width) / priv->columns_nr;
|
||||
height_block = (alloc.height - (padding.top + padding.bottom)) / 48;
|
||||
|
||||
priv->end_mark_cell = 48 * (((gint) event->x - left_pad) / width_block) + event->y / height_block;
|
||||
priv->end_mark_cell = 48 * (((gint) event->x - priv->scale_width) / width_block) + event->y / height_block;
|
||||
|
||||
gtk_widget_queue_draw (widget);
|
||||
|
||||
@@ -1010,6 +992,17 @@ gcal_days_grid_set_preferred_cell_height (GcalDaysGrid *days_grid,
|
||||
priv->req_cell_height = cell_height;
|
||||
}
|
||||
|
||||
/**
|
||||
* gcal_days_grid_get_scale_width:
|
||||
* @days_grid: a #GcalDaysGrid widget
|
||||
*
|
||||
* Retrieve the size of the scale in the left size
|
||||
* of the widget. The value is calculated the first
|
||||
* time the function is called. After that, the value
|
||||
* is cached internally.
|
||||
*
|
||||
* Returns: the size of the scale
|
||||
**/
|
||||
guint
|
||||
gcal_days_grid_get_scale_width (GcalDaysGrid *days_grid)
|
||||
{
|
||||
@@ -1166,10 +1159,8 @@ gcal_days_grid_get_cell_position (GcalDaysGrid *days_grid,
|
||||
|
||||
GtkWidget *widget;
|
||||
GtkBorder padding;
|
||||
GtkAllocation alloc;
|
||||
gint width;
|
||||
gint height;
|
||||
gint left_pad;
|
||||
|
||||
priv = gcal_days_grid_get_instance_private (days_grid);
|
||||
widget = GTK_WIDGET (days_grid);
|
||||
@@ -1178,12 +1169,10 @@ gcal_days_grid_get_cell_position (GcalDaysGrid *days_grid,
|
||||
gtk_widget_get_style_context (widget),
|
||||
gtk_widget_get_state_flags (widget),
|
||||
&padding);
|
||||
left_pad = padding.left + padding.right + priv->scale_width;
|
||||
|
||||
gtk_widget_get_allocation (widget, &alloc);
|
||||
width = alloc.width - left_pad;
|
||||
height = alloc.height - (padding.top + padding.bottom);
|
||||
width = gtk_widget_get_allocated_width (widget) - priv->scale_width;
|
||||
height = gtk_widget_get_allocated_height (widget) - (padding.top + padding.bottom);
|
||||
|
||||
*x = (gint) left_pad + (width / priv->columns_nr) * (cell / 48 + 0.5);
|
||||
*x = (gint) priv->scale_width + (width / priv->columns_nr) * (cell / 48 + 0.5);
|
||||
*y = (gint) (height / 48) * ((cell % 48) + 0.5);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user