Slightly incompatible HippoCanvas change



I finally got around to fixing:

 http://bugzilla.mugshot.org/show_bug.cgi?id=1194

Which was that *any* call to hippo_canvas_emit_resize_needed() would
cause the entire canvas to repaint, rather than just the parts that
ended up getting resized.

(This caused prelighting in the bigboard to be very slow, etc. It
was a bad thing.)

With the fix, I made hippo_canvas_item_emit_resize_needed() act like
gtk_widget_queue_resize_no_redraw() not like gtk_widget_queue_draw():
it doesn't automatically cause the item to be redrawn unless it
resized.

This means that some code needs to call
hippo_canvas_item_emit_resize_needed(item) and
hippo_canvas_item_paint_needed(item, 0, 0, -1, -1) as well.

(E.g.: changing the orientation of a box only needs to call
emit_resize_needed(), since there is no redrawing unless things
resize or move around, but changing the border width of a box needs 
to call both emit_resize_needed() and emit_paint_needed(), since that
can change the drawn border and background.)

I went through bigboard and the Mugshot client, and found exactly one
affected call to emit_resize_needed (plus some in hippo-canvas itself),
and the one call in the Mugshot client didn't matter in practice, but
the potential for incompatibility exists.

- Owen

Attachment: signature.asc
Description: This is a digitally signed message part



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