Win32 bugfixes.
* Force redraw on LdCategorySymbolView size allocation. * Fix an infinite loop sometimes caused by update_adjustments().
This commit is contained in:
parent
c535bd2383
commit
f0ac99072e
|
@ -298,7 +298,10 @@ on_size_allocate (GtkWidget *widget, GdkRectangle *allocation,
|
||||||
self = LD_CATEGORY_SYMBOL_VIEW (widget);
|
self = LD_CATEGORY_SYMBOL_VIEW (widget);
|
||||||
|
|
||||||
if (self->priv->height_negotiation)
|
if (self->priv->height_negotiation)
|
||||||
|
{
|
||||||
|
gtk_widget_queue_draw (widget);
|
||||||
self->priv->height_negotiation = FALSE;
|
self->priv->height_negotiation = FALSE;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
self->priv->height_negotiation = TRUE;
|
self->priv->height_negotiation = TRUE;
|
||||||
|
|
|
@ -729,31 +729,34 @@ on_size_allocate (GtkWidget *widget, GtkAllocation *allocation,
|
||||||
update_adjustments (self);
|
update_adjustments (self);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
update_adjustment_value (LdDiagramView *self, GtkAdjustment *adjustment,
|
||||||
|
gdouble value, gdouble page_size)
|
||||||
|
{
|
||||||
|
gtk_adjustment_set_page_size (adjustment, page_size);
|
||||||
|
g_signal_handlers_block_by_func (adjustment,
|
||||||
|
on_adjustment_value_changed, self);
|
||||||
|
gtk_adjustment_set_value (adjustment, value - page_size / 2);
|
||||||
|
g_signal_handlers_unblock_by_func (adjustment,
|
||||||
|
on_adjustment_value_changed, self);
|
||||||
|
gtk_adjustment_changed (adjustment);
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
update_adjustments (LdDiagramView *self)
|
update_adjustments (LdDiagramView *self)
|
||||||
{
|
{
|
||||||
GtkAllocation allocation;
|
GtkAllocation allocation;
|
||||||
gdouble scale, page_size;
|
gdouble scale;
|
||||||
|
|
||||||
gtk_widget_get_allocation (GTK_WIDGET (self), &allocation);
|
gtk_widget_get_allocation (GTK_WIDGET (self), &allocation);
|
||||||
scale = ld_diagram_view_get_scale_in_px (self);
|
scale = ld_diagram_view_get_scale_in_px (self);
|
||||||
|
|
||||||
if (self->priv->adjustment_h)
|
if (self->priv->adjustment_h)
|
||||||
{
|
update_adjustment_value (self, self->priv->adjustment_h,
|
||||||
page_size = allocation.width / scale;
|
self->priv->x, allocation.width / scale);
|
||||||
gtk_adjustment_set_page_size (self->priv->adjustment_h, page_size);
|
|
||||||
gtk_adjustment_set_value (self->priv->adjustment_h,
|
|
||||||
self->priv->x - page_size / 2);
|
|
||||||
gtk_adjustment_changed (self->priv->adjustment_h);
|
|
||||||
}
|
|
||||||
if (self->priv->adjustment_v)
|
if (self->priv->adjustment_v)
|
||||||
{
|
update_adjustment_value (self, self->priv->adjustment_v,
|
||||||
page_size = allocation.height / scale;
|
self->priv->y, allocation.height / scale);
|
||||||
gtk_adjustment_set_page_size (self->priv->adjustment_v, page_size);
|
|
||||||
gtk_adjustment_set_value (self->priv->adjustment_v,
|
|
||||||
self->priv->y - page_size / 2);
|
|
||||||
gtk_adjustment_changed (self->priv->adjustment_v);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
|
Loading…
Reference in New Issue