Mercurial > projects > doodle
diff doodle/gtk/cairo_canvas.d @ 91:42766e14534e
Update screenViewBounds when the window is resized
author | daveb |
---|---|
date | Thu, 19 Aug 2010 18:28:18 +0930 |
parents | 467febed7367 |
children | a98116479793 |
line wrap: on
line diff
--- a/doodle/gtk/cairo_canvas.d Thu Aug 19 00:28:57 2010 +0930 +++ b/doodle/gtk/cairo_canvas.d Thu Aug 19 18:28:18 2010 +0930 @@ -176,16 +176,6 @@ private { - void initialiseBounds(in Rectangle viewBoundsScreen) { - Rectangle layerBounds = _layerStack.bounds; - Rectangle paddedLayerBounds = growCentre(layerBounds, 2 * layerBounds.size); - _screenModel = new ScreenModel(0.25 * _pixelsPerMillimetre, paddedLayerBounds, viewBoundsScreen); - _grid.zoomChanged(_screenModel.zoom); - - updateAdjustments; - updateRulers; - } - void consolidateBounds() { Rectangle layerBounds = _layerStack.bounds; Rectangle paddedLayerBounds = growCentre(layerBounds, 2 * layerBounds.size); @@ -198,9 +188,21 @@ bool onConfigure(GdkEventConfigure * event, Widget widget) { assert(widget is _drawingArea); - Rectangle viewBoundsScreen = Rectangle(Point(0.0, 0.0), Vector(cast(double)event.width, cast(double)event.height)); - if (_screenModel is null) { initialiseBounds(viewBoundsScreen); } - else { consolidateBounds; } + auto viewBoundsScreen = Rectangle(Point(0.0, 0.0), Vector(cast(double)event.width, cast(double)event.height)); + + if (_screenModel is null) { + Rectangle layerBounds = _layerStack.bounds; + Rectangle paddedLayerBounds = growCentre(layerBounds, 2 * layerBounds.size); + _screenModel = new ScreenModel(0.25 * _pixelsPerMillimetre, paddedLayerBounds, viewBoundsScreen); + _grid.zoomChanged(_screenModel.zoom); + + updateAdjustments; + updateRulers; + } + else { + _screenModel.setViewBoundsScreen(viewBoundsScreen); + consolidateBounds; + } return true; }