]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/event.h
emulate scrolling in wxMSW header control; document the need to call ScrollWindow...
[wxWidgets.git] / include / wx / event.h
index da1de711aa7ca1d8af57b2d8f3a249657a220912..23f1f353766161d4875c69aec522820da80267c2 100644 (file)
@@ -69,7 +69,7 @@ typedef int wxEventType;
 
 // this is used to make the event table entry type safe, so that for an event
 // handler only a function with proper parameter list can be given.
-#define wxStaticCastEvent(type, val) wx_static_cast(type, val)
+#define wxStaticCastEvent(type, val) static_cast<type>(val)
 
 #define DECLARE_EVENT_TABLE_ENTRY(type, winid, idLast, fn, obj) \
     wxEventTableEntry(type, winid, idLast, fn, obj)
@@ -908,10 +908,13 @@ public:
     // example)
     wxKeyEvent& operator=(const wxKeyEvent& evt)
     {
-        if (&evt != this)
+        if ( &evt != this )
         {
             wxEvent::operator=(evt);
-            wxKeyboardState::operator=(evt);
+
+            // Borland C++ 5.82 doesn't compile an explicit call to an
+            // implicitly defined operator=() so need to do it this way:
+            *static_cast<wxKeyboardState *>(this) = evt;
 
             m_x = evt.m_x;
             m_y = evt.m_y;
@@ -2294,21 +2297,21 @@ public:
     // winid and event type
     void Connect(int winid,
                  int lastId,
-                 int eventType,
+                 wxEventType eventType,
                  wxObjectEventFunction func,
                  wxObject *userData = (wxObject *) NULL,
                  wxEvtHandler *eventSink = (wxEvtHandler *) NULL);
 
     // Convenience function: take just one id
     void Connect(int winid,
-                 int eventType,
+                 wxEventType eventType,
                  wxObjectEventFunction func,
                  wxObject *userData = (wxObject *) NULL,
                  wxEvtHandler *eventSink = (wxEvtHandler *) NULL)
         { Connect(winid, wxID_ANY, eventType, func, userData, eventSink); }
 
     // Even more convenient: without id (same as using id of wxID_ANY)
-    void Connect(int eventType,
+    void Connect(wxEventType eventType,
                  wxObjectEventFunction func,
                  wxObject *userData = (wxObject *) NULL,
                  wxEvtHandler *eventSink = (wxEvtHandler *) NULL)
@@ -2343,6 +2346,10 @@ public:
     void SetClientData( void *data ) { DoSetClientData(data); }
     void *GetClientData() const { return DoGetClientData(); }
 
+
+    // implementation from now on
+    // --------------------------
+
     // check if the given event table entry matches this event and call the
     // handler if it does
     //
@@ -2352,7 +2359,6 @@ public:
                                       wxEvtHandler *handler,
                                       wxEvent& event);
 
-    // implementation from now on
     virtual bool SearchEventTable(wxEventTable& table, wxEvent& event);
     bool SearchDynamicEventTable( wxEvent& event );
 
@@ -2360,6 +2366,20 @@ public:
     void ClearEventHashTable() { GetEventHashTable().Clear(); }
     void OnSinkDestroyed( wxEvtHandler *sink );
 
+
+    // The method processing the event in this event handler (or rather in this
+    // event handler chain as it also tries the next handler and so on), i.e.
+    // it returns true if we processed this event or false if we didn't but
+    // does not call TryParent() in the latter case. It also doesn't call
+    // wxApp::FilterEvent() before processing it, this is supposed to be done
+    // by the public ProcessEvent() only once for every event we handle.
+    //
+    // It is meant to be called from ProcessEvent() only and is not virtual,
+    // additional event handlers can be hooked into the normal event processing
+    // logic using TryValidator() hook.
+    bool ProcessEventHere(wxEvent& event);
+
+
 private:
     static const wxEventTableEntry sm_eventTableEntries[];
 
@@ -2402,8 +2422,6 @@ protected:
 
     // Is event handler enabled?
     bool                m_enabled;
-    // Avoid adding events from another thread during dtor
-    bool                m_beingDeleted;
 
 
     // The user data: either an object which will be deleted by the container