X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/4f24cbbd3dbbf3eb45225b36044c41e76b1e5eef..e1ef506e13b7c8e96483b7fc0852dcb46688badd:/include/wx/window.h diff --git a/include/wx/window.h b/include/wx/window.h index fb66bf004e..3454055f9a 100644 --- a/include/wx/window.h +++ b/include/wx/window.h @@ -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,37 @@ 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() 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 // ---------- @@ -1037,8 +1061,8 @@ public: // font virtual void GetTextExtent(const wxString& string, int *x, int *y, - int *descent = (int *) NULL, - int *externalLeading = (int *) NULL, + int *descent = NULL, + int *externalLeading = NULL, const wxFont *theFont = (const wxFont *) NULL) const = 0; @@ -1141,7 +1165,7 @@ public: // scroll window to the specified position virtual void ScrollWindow( int dx, int dy, - const wxRect* rect = (wxRect *) NULL ) = 0; + const wxRect* rect = NULL ) = 0; // scrolls window by line/page: note that not all controls support this // @@ -1402,7 +1426,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 @@ -1651,8 +1676,9 @@ private: void NotifyWindowOnEnableChange(bool enabled); #if wxUSE_MENUS - // temporary event handler used by GetPopupMenuSelectionFromUser() + // temporary event handlers used by GetPopupMenuSelectionFromUser() void InternalOnPopupMenu(wxCommandEvent& event); + void InternalOnPopupMenuUpdate(wxUpdateUIEvent& event); // implementation of the public GetPopupMenuSelectionFromUser() method int DoGetPopupMenuSelectionFromUser(wxMenu& menu, int x, int y); @@ -1790,7 +1816,7 @@ inline void wxWindowBase::SetInitialBestSize(const wxSize& size) inline wxWindow *wxWindowBase::GetGrandParent() const { - return m_parent ? m_parent->GetParent() : (wxWindow *)NULL; + return m_parent ? m_parent->GetParent() : NULL; } // ----------------------------------------------------------------------------