# HG changeset patch # User "David Bryant " # Date 1247310854 -34200 # Node ID a27d2093991c3acbc15e212ca0c7c69dd309ad84 # Parent 8a39b13cd3e6799506fb644d936017222696dfb8 Checkpoint diff -r 8a39b13cd3e6 -r a27d2093991c tk/events.d --- a/tk/events.d Fri Jul 10 18:19:16 2009 +0930 +++ b/tk/events.d Sat Jul 11 20:44:14 2009 +0930 @@ -26,8 +26,8 @@ } abstract class InputEvent : Event { - this(in Mask mask) { - mMask = new Mask(mask); + this(Mask mask) { + mMask = mask; } const(Mask) mask() const { return mMask; } @@ -66,7 +66,7 @@ } abstract class PointerEvent : InputEvent { - this(in Point screen_point, in Point model_point, in Mask mask) { + this(in Point screen_point, in Point model_point, Mask mask) { super(mask); mScreenPoint = screen_point; mModelPoint = model_point; @@ -108,7 +108,7 @@ final class MotionEvent : PointerEvent { this(in Point screen_point, in Point model_point, - in Mask mask) { + Mask mask) { super(screen_point, model_point, mask); } @@ -121,7 +121,7 @@ this(in ScrollDirection scroll_direction, in Point screen_point, in Point model_point, - in Mask mask) { + Mask mask) { super(screen_point, model_point, mask); mScrollDirection = scroll_direction; } diff -r 8a39b13cd3e6 -r a27d2093991c tk/gtk_support.d --- a/tk/gtk_support.d Fri Jul 10 18:19:16 2009 +0930 +++ b/tk/gtk_support.d Sat Jul 11 20:44:14 2009 +0930 @@ -32,6 +32,7 @@ } } +/* Mask gtk2tk_mask(gdk.Event.guint state) { auto mask = new Mask(); @@ -45,6 +46,21 @@ return mask; } +*/ + +Mask gtk2tk_mask(gdk.Event.guint state) { + Modifier[] modifiers; + + if (state & gdk.Event.GdkModifierType.SHIFT_MASK) modifiers ~= Modifier.SHIFT; + if (state & gdk.Event.GdkModifierType.CONTROL_MASK) modifiers ~= Modifier.CONTROL; + if (state & gdk.Event.GdkModifierType.MOD1_MASK) modifiers ~= Modifier.ALT; + if (state & gdk.Event.GdkModifierType.MOD2_MASK) modifiers ~= Modifier.META; + if (state & gdk.Event.GdkModifierType.BUTTON1_MASK) modifiers ~= Modifier.BUTTON_1; + if (state & gdk.Event.GdkModifierType.BUTTON2_MASK) modifiers ~= Modifier.BUTTON_2; + if (state & gdk.Event.GdkModifierType.BUTTON3_MASK) modifiers ~= Modifier.BUTTON_3; + + return new Mask(modifiers); +} ScrollDirection gtk2tk_direction(gdk.Event.ScrollDirection direction) { switch (direction) { diff -r 8a39b13cd3e6 -r a27d2093991c tk/types.d --- a/tk/types.d Fri Jul 10 18:19:16 2009 +0930 +++ b/tk/types.d Sat Jul 11 20:44:14 2009 +0930 @@ -4,94 +4,6 @@ private import std.typecons; private import std.algorithm; - /* -enum ButtonPress { - SINGLE, - DOUBLE, - TRIPLE, - RELEASE -} - -string toString(in ButtonPress bp) { - switch (bp) { - case ButtonPress.SINGLE: return "SINGLE"; - case ButtonPress.DOUBLE: return "DOUBLE"; - case ButtonPress.TRIPLE: return "TRIPLE"; - case ButtonPress.RELEASE: return "RELEASE"; - default: return std.string.format("", bp); - } -} - -enum ButtonNumber { - BUTTON_1, - BUTTON_2, - BUTTON_3, - BUTTON_4, - BUTTON_5, -} - -string toString(in ButtonNumber bn) { - switch (bn) { - case ButtonNumber.BUTTON_1: return "BUTTON_1"; - case ButtonNumber.BUTTON_2: return "BUTTON_2"; - case ButtonNumber.BUTTON_3: return "BUTTON_3"; - case ButtonNumber.BUTTON_4: return "BUTTON_4"; - case ButtonNumber.BUTTON_5: return "BUTTON_5"; - default: return std.string.format("", bn); - } -} - -enum ScrollDirection { - UP, - DOWN, - LEFT, - RIGHT -} - -string toString(in ScrollDirection sd) { - switch (sd) { - case ScrollDirection.UP: return "UP"; - case ScrollDirection.DOWN: return "DOWN"; - case ScrollDirection.LEFT: return "LEFT"; - case ScrollDirection.RIGHT: return "RIGHT"; - default: return std.string.format("", sd); - } -} - -enum Modifier { - SHIFT, - CAPS_LOCK, - CONTROL, - ALT, - NUM_LOCK, - META, - SCROLL_LOCK, - BUTTON_1, - BUTTON_2, - BUTTON_3, - BUTTON_4, - BUTTON_5 -} - -string toString(in Modifier m) { - switch (m) { - case Modifier.SHIFT: return "SHIFT"; - case Modifier.CAPS_LOCK: return "CAPS_LOCK"; - case Modifier.CONTROL: return "CONTROL"; - case Modifier.ALT: return "ALT"; - case Modifier.NUM_LOCK: return "NUM_LOCK"; - case Modifier.META: return "META"; - case Modifier.SCROLL_LOCK: return "SCROLL_LOCK"; - case Modifier.BUTTON_1: return "BUTTON_1"; - case Modifier.BUTTON_2: return "BUTTON_2"; - case Modifier.BUTTON_3: return "BUTTON_3"; - case Modifier.BUTTON_4: return "BUTTON_4"; - case Modifier.BUTTON_5: return "BUTTON_5"; - default: return std.string.format("", m); - } -} -*/ - mixin(defineEnum!("ButtonPress", "SINGLE", "DOUBLE", "TRIPLE", "RELEASE")); mixin(defineEnum!("ButtonNumber", @@ -102,15 +14,16 @@ "SHIFT", "CAPS_LOCK", "CONTROL", "ALT", "NUM_LOCK", "META", "SCROLL_LOCK", "BUTTON_1", "BUTTON_2", "BUTTON_3", "BUTTON_4", "BUTTON_5")); -struct Mask2 { +class Mask { this(in Modifier[] modifiers) { _modifiers = modifiers.dup; } - string toString() const { + override string toString() const { string s; foreach (Modifier m; _modifiers) { + if (s != "") s ~= "|"; s ~= enumToString(m); } @@ -136,6 +49,7 @@ } } +/* class Mask { this() { } @@ -151,10 +65,6 @@ override string toString() const { Modifier m = Modifier.SHIFT; return enumToString(m); - /* - return format("Mask: %s", m); - */ - //return format("%d", mBits); } private { @@ -162,3 +72,4 @@ int mBits; } } +*/ diff -r 8a39b13cd3e6 -r a27d2093991c tool_stack.d --- a/tool_stack.d Fri Jul 10 18:19:16 2009 +0930 +++ b/tool_stack.d Sat Jul 11 20:44:14 2009 +0930 @@ -39,7 +39,7 @@ override bool handle_scroll(ICanvas canvas, in ScrollEvent event) { writefln("%s", event); - if (event.mask.query(Modifier.CONTROL)) { + if (event.mask.is_set(Modifier.CONTROL)) { // Zoom about the pointer double zoom = 1.44; @@ -55,7 +55,7 @@ const double AMOUNT = 30.0; Vector v; - if (event.mask.query(Modifier.SHIFT)) { + if (event.mask.is_set(Modifier.SHIFT)) { // left to right v = Vector(AMOUNT, 0.0); }