diff doodle/gtk/canvas.d @ 72:5cc2de64f6d0

Cautious Saturday night commits
author "David Bryant <bagnose@gmail.com>"
date Sun, 15 Aug 2010 00:30:03 +0930
parents 0f7cf6c6f206
children 6f2525e170f2
line wrap: on
line diff
--- a/doodle/gtk/canvas.d	Sat Aug 14 20:48:41 2010 +0930
+++ b/doodle/gtk/canvas.d	Sun Aug 15 00:30:03 2010 +0930
@@ -2,7 +2,7 @@
 
 public {
     import doodle.dia.icanvas;
-    import doodle.tk.events;
+    import doodle.gtk.events;
 }
 
 private {
@@ -33,8 +33,6 @@
 
     import std.math;
     import std.stdio;
-
-    import core.stdc.string : strlen;
 }
 
 final class Canvas : Table, private IViewport {
@@ -138,8 +136,8 @@
 
         // IViewport overrides:
 
-        void zoomRelative(in Point pixelDatum, in double factor) {
-            _pixelModel.zoomRelative(factor, pixelDatum);
+        void zoomRelative(in Point screenDatum, in double factor) {
+            _pixelModel.zoomRelative(factor, screenDatum);
 
             consolidateBounds;
 
@@ -149,8 +147,8 @@
             queueDraw;
         }
 
-        void panRelative(in Vector pixelDisplacement) {
-            _pixelModel.panRelativePixel(pixelDisplacement);
+        void panRelative(in Vector screenDisplacement) {
+            _pixelModel.panRelativePixel(screenDisplacement);
 
             consolidateBounds;
 
@@ -304,59 +302,22 @@
 
         bool onButtonPress(GdkEventButton * event, Widget widget) {
             assert(widget is _drawingArea);
-            //trace("Got button event\n");
 
-            Point pixelPoint = Point(event.x + 0.5, _pixelModel.viewBounds.h - (event.y + 0.5));
-            Point modelPoint = _pixelModel.pixelToModel(pixelPoint);
-
-            auto buttonEvent = new ButtonEvent(gtk2tkButtonAction(event.type),
-                                               gtk2tkButtonName(event.button),
-                                               pixelPoint,
-                                               modelPoint,
-                                               gtk2tkMask(event.state));
-
+            auto buttonEvent = makeButtonEvent(event, _pixelModel);
             _eventHandler.handleButtonPress(this, buttonEvent);
-
             fixDamage;
-
             return true;
         }
 
         bool onButtonRelease(GdkEventButton * event, Widget widget) {
             assert(widget is _drawingArea);
 
-            Point pixelPoint = Point(event.x + 0.5, _pixelModel.viewBounds.h - (event.y + 0.5));
-            Point modelPoint = _pixelModel.pixelToModel(pixelPoint);
-
-            auto buttonEvent = new ButtonEvent(gtk2tkButtonAction(event.type),
-                                               gtk2tkButtonName(event.button),
-                                               pixelPoint,
-                                               modelPoint,
-                                               gtk2tkMask(event.state));
-
+            auto buttonEvent = makeButtonEvent(event, _pixelModel);
             _eventHandler.handleButtonRelease(this, buttonEvent);
-
             fixDamage;
-
             return true;
         }
 
-        /*
-           public struct GdkEventKey {
-           GdkEventType type;
-           GdkWindow *window;
-           byte sendEvent;
-           uint time;
-           uint state;
-           uint keyval;
-           int length;
-           char *string;
-           ushort hardwareKeycode;
-           ubyte group;
-           uint bitfield0;
-           uint isModifier : 1;
-        }
-         */
         bool onKeyPressEvent(GdkEventKey * event, Widget widget) {
             assert(widget is _drawingArea);
 
@@ -387,18 +348,11 @@
 
         bool onMotionNotify(GdkEventMotion * event, Widget widget) {
             assert(widget is _drawingArea);
-            //writefln("Got motion notify\n");
+            // Pass the events on to the rulers
             gtk_widget_event(_hRuler.getWidgetStruct(), cast(GdkEvent *)event);
             gtk_widget_event(_vRuler.getWidgetStruct(), cast(GdkEvent *)event);
 
-            Point pixelPoint = Point(event.x + 0.5, _pixelModel.viewBounds.h - (event.y + 0.5));
-            Point modelPoint = _pixelModel.pixelToModel(pixelPoint);
-
-            auto motionEvent = new MotionEvent(pixelPoint,
-                                               modelPoint,
-                                               gtk2tkMask(event.state));
-
-            _eventHandler.handleMotion(this, motionEvent);
+            _eventHandler.handleMotion(this, makeMotionEvent(event, _pixelModel));
 
             fixDamage;