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