]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/window.h
rename wxRendererNative::DrawRadioButton() to DrawOptionButton() to avoid conflict...
[wxWidgets.git] / include / wx / window.h
index 04b443a1a46bb4c71f39b116bc51d1aea6172c18..ba5f596d78f350b1dcc0bae56bbef8d72fff674f 100644 (file)
@@ -792,7 +792,7 @@ public:
 
         // replace the event handler (allows to completely subclass the
         // window)
-    void SetEventHandler( wxEvtHandler *handler ) { m_eventHandler = handler; }
+    void SetEventHandler( wxEvtHandler *handler );
 
         // push/pop event handler: allows to chain a custom event handler to
         // alreasy existing ones
@@ -806,13 +806,44 @@ public:
         // be there)
     bool RemoveEventHandler(wxEvtHandler *handler);
 
-    // Process an event by calling GetEventHandler()->ProcessEvent() and
-    // handling any exceptions thrown by event handlers. It's mostly useful
-    // when processing wx events when called from C code (e.g. in GTK+
-    // callback) when the exception wouldn't correctly propagate to
-    // wxEventLoop.
+        // Process an event by calling GetEventHandler()->ProcessEvent(): this
+        // is a straightforward replacement for ProcessEvent() itself which
+        // shouldn't be used directly with windows as it doesn't take into
+        // account any event handlers associated with the window
+    bool ProcessWindowEvent(wxEvent& event)
+        { return GetEventHandler()->ProcessEvent(event); }
+
+        // Process an event by calling GetEventHandler()->ProcessEvent() and
+        // handling any exceptions thrown by event handlers. It's mostly useful
+        // when processing wx events when called from C code (e.g. in GTK+
+        // callback) when the exception wouldn't correctly propagate to
+        // wxEventLoop.
     bool HandleWindowEvent(wxEvent& event) const;
 
+        // disable wxEvtHandler double-linked list mechanism:
+    virtual void SetNextHandler(wxEvtHandler *handler);
+    virtual void SetPreviousHandler(wxEvtHandler *handler);
+
+protected:
+
+    // NOTE: we change the access specifier of the following wxEvtHandler functions
+    //       so that the user won't be able to call them directly.
+    //       Calling wxWindow::ProcessEvent in fact only works when there are NO
+    //       event handlers pushed on the window.
+    //       To ensure correct operation, instead of wxWindow::ProcessEvent
+    //       you must always call wxWindow::GetEventHandler()->ProcessEvent()
+    //       or HandleWindowEvent().
+    //       The same holds for all other wxEvtHandler functions.
+
+    using wxEvtHandler::ProcessEvent;
+    using wxEvtHandler::ProcessThreadEvent;
+    using wxEvtHandler::SafelyProcessEvent;
+    using wxEvtHandler::ProcessPendingEvents;
+    using wxEvtHandler::AddPendingEvent;
+    using wxEvtHandler::QueueEvent;
+
+public:
+
     // validators
     // ----------
 
@@ -1402,7 +1433,8 @@ protected:
     void SatisfyConstraints();
 #endif // wxUSE_CONSTRAINTS
 
-    // Send the wxWindowDestroyEvent
+    // Send the wxWindowDestroyEvent if not done yet and sets m_isBeingDeleted
+    // to true
     void SendDestroyEvent();
 
     // returns the main window of composite control; this is the window