From 639c24e0de6e98575cce91cb26138d3278ffa071 Mon Sep 17 00:00:00 2001 From: Mike Kestner Date: Tue, 29 Mar 2005 18:02:04 +0000 Subject: [PATCH] 2005-03-29 Mike Kestner * generator/Parser.cs : add symbol type='marshal' support. * gdk/Event.cs : add GetEvent method to wrap arbitrary events. * gdk/gdk-symbols.xml : make Event, EventAny, and EventNoExpose marshal symbols using Event.GetEvent (). [Fixes #74184] svn path=/trunk/gtk-sharp/; revision=42344 --- ChangeLog | 7 ++++++ doc/en/Gdk/Event.xml | 18 +++++++++++++- gdk/Event.cs | 58 ++++++++++++++++++++++++++++++++++++++++++++ gdk/gdk-symbols.xml | 6 ++--- generator/Parser.cs | 7 +++++- 5 files changed, 91 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index c61003082..8a4eb46b3 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2005-03-29 Mike Kestner + + * generator/Parser.cs : add symbol type='marshal' support. + * gdk/Event.cs : add GetEvent method to wrap arbitrary events. + * gdk/gdk-symbols.xml : make Event, EventAny, and EventNoExpose + marshal symbols using Event.GetEvent (). [Fixes #74184] + 2005-03-29 Mike Kestner * glib/Marshaller.cs : special case ucs4 "0" conversion. diff --git a/doc/en/Gdk/Event.xml b/doc/en/Gdk/Event.xml index 31e43bdf0..490a955f8 100644 --- a/doc/en/Gdk/Event.xml +++ b/doc/en/Gdk/Event.xml @@ -99,5 +99,21 @@ None. + + + Method + + Gdk.Event + + + + + + Gets an Event or Event subclass for a native event pointer. + a + a + + + - \ No newline at end of file + diff --git a/gdk/Event.cs b/gdk/Event.cs index 228d9da71..0f266bdc4 100644 --- a/gdk/Event.cs +++ b/gdk/Event.cs @@ -76,6 +76,64 @@ namespace Gdk { return gtksharp_gdk_event_get_send_event (Handle) == 0 ? false : true; } } + + public static Event GetEvent (IntPtr raw) + { + switch (gtksharp_gdk_event_get_event_type (raw)) { + case EventType.Expose: + return new EventExpose (raw); + case EventType.MotionNotify: + return new EventMotion (raw); + case EventType.ButtonPress: + case EventType.TwoButtonPress: + case EventType.ThreeButtonPress: + case EventType.ButtonRelease: + return new EventButton (raw); + case EventType.KeyPress: + case EventType.KeyRelease: + return new EventKey (raw); + case EventType.EnterNotify: + case EventType.LeaveNotify: + return new EventCrossing (raw); + case EventType.FocusChange: + return new EventFocus (raw); + case EventType.Configure: + return new EventConfigure (raw); + case EventType.PropertyNotify: + return new EventProperty (raw); + case EventType.SelectionClear: + case EventType.SelectionRequest: + case EventType.SelectionNotify: + return new EventSelection (raw); + case EventType.ProximityIn: + case EventType.ProximityOut: + return new EventProximity (raw); + case EventType.DragEnter: + case EventType.DragLeave: + case EventType.DragMotion: + case EventType.DragStatus: + case EventType.DropStart: + case EventType.DropFinished: + return new EventDND (raw); + case EventType.ClientEvent: + return new EventClient (raw); + case EventType.VisibilityNotify: + return new EventVisibility (raw); + case EventType.Scroll: + return new EventScroll (raw); + case EventType.WindowState: + return new EventWindowState (raw); + case EventType.Setting: + return new EventSetting (raw); + case EventType.Map: + case EventType.Unmap: + case EventType.NoExpose: + case EventType.Delete: + case EventType.Destroy: + default: + return new Gdk.Event (raw); + } + } } } diff --git a/gdk/gdk-symbols.xml b/gdk/gdk-symbols.xml index 7656f1d24..063e47aca 100644 --- a/gdk/gdk-symbols.xml +++ b/gdk/gdk-symbols.xml @@ -1,8 +1,8 @@ - - + + @@ -12,7 +12,7 @@ - + diff --git a/generator/Parser.cs b/generator/Parser.cs index fe1141a2c..72b785139 100644 --- a/generator/Parser.cs +++ b/generator/Parser.cs @@ -150,7 +150,12 @@ namespace GtkSharp.Generation { result = new ManualGen (cname, name); else if (type == "alias") result = new AliasGen (cname, name); - else + else if (type == "marshal") { + string mtype = symbol.GetAttribute ("marshal_type"); + string call = symbol.GetAttribute ("call_fmt"); + string from = symbol.GetAttribute ("from_fmt"); + result = new MarshalGen (cname, name, mtype, call, from); + } else Console.WriteLine ("Parser::ParseSymbol - Unexpected symbol type " + type); return result;