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;
         }