# HG changeset patch # User Frank Benoit # Date 1223383276 -7200 # Node ID 43be986a13725472a0b912d658ad58640cf4c251 # Parent db5a898b2119d9e6e60650d573e5a42057213aa7 Sync events with dwt-linux diff -r db5a898b2119 -r 43be986a1372 dwt/events/KeyEvent.d --- a/dwt/events/KeyEvent.d Tue Oct 07 12:56:18 2008 +0200 +++ b/dwt/events/KeyEvent.d Tue Oct 07 14:41:16 2008 +0200 @@ -12,13 +12,12 @@ *******************************************************************************/ module dwt.events.KeyEvent; -import dwt.dwthelper.utils; - import dwt.widgets.Event; import dwt.events.TypedEvent; import tango.text.convert.Format; +import dwt.dwthelper.utils; /** * Instances of this class are sent as a result of diff -r db5a898b2119 -r 43be986a1372 dwt/events/MenuDetectEvent.d --- a/dwt/events/MenuDetectEvent.d Tue Oct 07 12:56:18 2008 +0200 +++ b/dwt/events/MenuDetectEvent.d Tue Oct 07 14:41:16 2008 +0200 @@ -12,13 +12,13 @@ *******************************************************************************/ module dwt.events.MenuDetectEvent; -import dwt.dwthelper.utils; - import dwt.widgets.Event; import dwt.events.TypedEvent; import tango.text.convert.Format; +import dwt.dwthelper.utils; + /** * Instances of this class are sent whenever the platform- * specific trigger for showing a context menu is detected. diff -r db5a898b2119 -r 43be986a1372 dwt/events/MouseEvent.d --- a/dwt/events/MouseEvent.d Tue Oct 07 12:56:18 2008 +0200 +++ b/dwt/events/MouseEvent.d Tue Oct 07 14:41:16 2008 +0200 @@ -12,13 +12,12 @@ *******************************************************************************/ module dwt.events.MouseEvent; -import dwt.dwthelper.utils; - import dwt.widgets.Event; import dwt.events.TypedEvent; import tango.text.convert.Format; +import dwt.dwthelper.utils; /** * Instances of this class are sent whenever mouse diff -r db5a898b2119 -r 43be986a1372 dwt/events/PaintEvent.d --- a/dwt/events/PaintEvent.d Tue Oct 07 12:56:18 2008 +0200 +++ b/dwt/events/PaintEvent.d Tue Oct 07 14:41:16 2008 +0200 @@ -12,8 +12,6 @@ *******************************************************************************/ module dwt.events.PaintEvent; -import dwt.dwthelper.utils; - import dwt.widgets.Event; import dwt.graphics.GC; @@ -21,6 +19,7 @@ import dwt.events.TypedEvent; import tango.text.convert.Format; +import dwt.dwthelper.utils; /** * Instances of this class are sent as a result of diff -r db5a898b2119 -r 43be986a1372 dwt/events/SelectionEvent.d --- a/dwt/events/SelectionEvent.d Tue Oct 07 12:56:18 2008 +0200 +++ b/dwt/events/SelectionEvent.d Tue Oct 07 14:41:16 2008 +0200 @@ -12,14 +12,14 @@ *******************************************************************************/ module dwt.events.SelectionEvent; -import dwt.dwthelper.utils; - import dwt.widgets.Event; import dwt.widgets.Widget; import dwt.events.TypedEvent; import tango.text.convert.Format; +import dwt.dwthelper.utils; + /** * Instances of this class are sent as a result of * widgets being selected. diff -r db5a898b2119 -r 43be986a1372 dwt/events/SelectionListener.d --- a/dwt/events/SelectionListener.d Tue Oct 07 12:56:18 2008 +0200 +++ b/dwt/events/SelectionListener.d Tue Oct 07 14:41:16 2008 +0200 @@ -16,6 +16,9 @@ public import dwt.internal.DWTEventListener; public import dwt.events.SelectionEvent; +import tango.core.Traits; +import tango.core.Tuple; + /** * Classes which implement this interface provide methods * that deal with the events that are generated when selection @@ -34,6 +37,10 @@ */ public interface SelectionListener : DWTEventListener { + public enum { + SELECTION, + DEFAULTSELECTION + } /** * Sent when selection occurs in the control. *

@@ -63,3 +70,47 @@ */ public void widgetDefaultSelected(SelectionEvent e); } + + +/// DWT extension +private class _DgSelectionListenerT(Dg,T...) : SelectionListener { + + alias ParameterTupleOf!(Dg) DgArgs; + static assert( is(DgArgs == Tuple!(SelectionEvent,T)), + "Delegate args not correct: "~DgArgs.stringof~" vs. (Event,"~T.stringof~")" ); + + Dg dg; + T t; + int type; + + private this( int type, Dg dg, T t ){ + this.type = type; + this.dg = dg; + static if( T.length > 0 ){ + this.t = t; + } + } + + public void widgetSelected(SelectionEvent e){ + if( type is SelectionListener.SELECTION ){ + dg(e,t); + } + } + public void widgetDefaultSelected(SelectionEvent e){ + if( type is SelectionListener.DEFAULTSELECTION ){ + dg(e,t); + } + } +} + +SelectionListener dgSelectionListener( Dg, T... )( int type, Dg dg, T args ){ + return new _DgSelectionListenerT!( Dg, T )( type, dg, args ); +} + +SelectionListener dgSelectionListenerWidgetSelected( Dg, T... )( Dg dg, T args ){ + return dgSelectionListener( SelectionListener.SELECTION, dg, args ); +} +SelectionListener dgSelectionListenerWidgetDefaultSelected( Dg, T... )( Dg dg, T args ){ + return dgSelectionListener( SelectionListener.DEFAULTSELECTION, dg, args ); +} + diff -r db5a898b2119 -r 43be986a1372 dwt/events/ShellEvent.d --- a/dwt/events/ShellEvent.d Tue Oct 07 12:56:18 2008 +0200 +++ b/dwt/events/ShellEvent.d Tue Oct 07 14:41:16 2008 +0200 @@ -12,13 +12,12 @@ *******************************************************************************/ module dwt.events.ShellEvent; -import dwt.dwthelper.utils; - import dwt.widgets.Event; import dwt.events.TypedEvent; import tango.text.convert.Format; +import dwt.dwthelper.utils; /** * Instances of this class are sent as a result of diff -r db5a898b2119 -r 43be986a1372 dwt/events/TraverseEvent.d --- a/dwt/events/TraverseEvent.d Tue Oct 07 12:56:18 2008 +0200 +++ b/dwt/events/TraverseEvent.d Tue Oct 07 14:41:16 2008 +0200 @@ -12,13 +12,13 @@ *******************************************************************************/ module dwt.events.TraverseEvent; -import dwt.dwthelper.utils; - import dwt.widgets.Event; import dwt.events.KeyEvent; import tango.text.convert.Format; +import dwt.dwthelper.utils; + /** * Instances of this class are sent as a result of * widget traversal actions. diff -r db5a898b2119 -r 43be986a1372 dwt/events/TypedEvent.d --- a/dwt/events/TypedEvent.d Tue Oct 07 12:56:18 2008 +0200 +++ b/dwt/events/TypedEvent.d Tue Oct 07 14:41:16 2008 +0200 @@ -12,8 +12,6 @@ *******************************************************************************/ module dwt.events.TypedEvent; -import dwt.dwthelper.utils; - import dwt.widgets.Event; import dwt.widgets.Display; @@ -22,6 +20,7 @@ import tango.text.convert.Format; import tango.text.Util : split; +import dwt.dwthelper.utils; /** * This is the super class for all typed event classes provided diff -r db5a898b2119 -r 43be986a1372 dwt/events/VerifyEvent.d --- a/dwt/events/VerifyEvent.d Tue Oct 07 12:56:18 2008 +0200 +++ b/dwt/events/VerifyEvent.d Tue Oct 07 14:41:16 2008 +0200 @@ -12,13 +12,13 @@ *******************************************************************************/ module dwt.events.VerifyEvent; -import dwt.dwthelper.utils; - import dwt.widgets.Event; import dwt.events.KeyEvent; import tango.text.convert.Format; +import dwt.dwthelper.utils; + /** * Instances of this class are sent as a result of * widgets handling keyboard events