diff canvas.d @ 5:8a39b13cd3e6

Checkpoint
author David Bryant <daveb@acres.com.au>
date Fri, 10 Jul 2009 18:19:16 +0930
parents 7d57cae10805
children 936feb16eed4
line wrap: on
line diff
--- a/canvas.d	Fri Jul 10 15:26:07 2009 +0930
+++ b/canvas.d	Fri Jul 10 18:19:16 2009 +0930
@@ -74,8 +74,8 @@
         mDrawingArea.addOnRealize(&onRealize);
         mDrawingArea.addOnConfigure(&onConfigure);
         mDrawingArea.addOnExpose(&onExpose);
-        mDrawingArea.addOnButtonPress(&onButtonEvent);
-        mDrawingArea.addOnButtonRelease(&onButtonEvent);
+        mDrawingArea.addOnButtonPress(&onButtonPress);
+        mDrawingArea.addOnButtonRelease(&onButtonRelease);
         mDrawingArea.addOnKeyPress(&onKeyEvent);
         mDrawingArea.addOnKeyRelease(&onKeyEvent);
         mDrawingArea.addOnMotionNotify(&onMotionNotify);
@@ -161,7 +161,7 @@
             dr.getSize(width, height);
             //writefln("Got expose %dx%d\n", width, height);
 
-            scope auto cr = new Context(dr);
+            scope cr = new Context(dr);
 
             if (event) {
                 cr.rectangle(event.area.x, event.area.y, event.area.width, event.area.height);
@@ -196,7 +196,7 @@
             return true;
         }
 
-        bool onButtonEvent(GdkEventButton * event, Widget widget) {
+        bool onButtonPress(GdkEventButton * event, Widget widget) {
             assert(widget is mDrawingArea);
             //writefln("Got button event\n");
 
@@ -209,7 +209,25 @@
                                                 model_point,
                                                 gtk2tk_mask(event.state));
 
-            //mEventHandle.handle_button_press
+            mEventHandler.handle_button_press(this, button_event);
+
+            return true;
+        }
+
+        bool onButtonRelease(GdkEventButton * event, Widget widget) {
+            assert(widget is mDrawingArea);
+            //writefln("Got button event\n");
+
+            Point screen_point = Point(event.x + 0.5, event.y + 0.5);
+            Point model_point = screen_to_model(screen_point);
+
+            auto button_event = new ButtonEvent(gtk2tk_click(event.type),
+                                                gtk2tk_button(event.button),
+                                                screen_point,
+                                                model_point,
+                                                gtk2tk_mask(event.state));
+
+            mEventHandler.handle_button_release(this, button_event);
 
             return true;
         }