Mercurial > projects > doodle
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; }