X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/c6212a0cb7e6285f62198a9411d91bbe8dc06e60..b04237742c51e022af8ca8fe8933437734f392a3:/include/wx/window.h diff --git a/include/wx/window.h b/include/wx/window.h index 3a626d5a88..214833cd5d 100644 --- a/include/wx/window.h +++ b/include/wx/window.h @@ -374,12 +374,8 @@ public: // get the size best suited for the window (in fact, minimal // acceptable size using which it will still look "nice" in // most situations) - wxSize GetBestSize() const - { - if (m_bestSizeCache.IsFullySpecified()) - return m_bestSizeCache; - return DoGetBestSize(); - } + wxSize GetBestSize() const; + void GetBestSize(int *w, int *h) const { wxSize s = GetBestSize(); @@ -402,7 +398,7 @@ public: // This function will merge the window's best size into the window's // minimum size, giving priority to the min size components, and // returns the results. - wxSize GetEffectiveMinSize() const; + virtual wxSize GetEffectiveMinSize() const; wxDEPRECATED( wxSize GetBestFittingSize() const ); // replaced by GetEffectiveMinSize wxDEPRECATED( wxSize GetAdjustedMinSize() const ); // replaced by GetEffectiveMinSize @@ -458,8 +454,8 @@ public: // Call these to override what GetBestSize() returns. This // method is only virtual because it is overriden in wxTLW // as a different API for SetSizeHints(). - virtual void SetMinSize(const wxSize& minSize) { m_minWidth = minSize.x; m_minHeight = minSize.y; } - virtual void SetMaxSize(const wxSize& maxSize) { m_maxWidth = maxSize.x; m_maxHeight = maxSize.y; } + virtual void SetMinSize(const wxSize& minSize); + virtual void SetMaxSize(const wxSize& maxSize); // Like Set*Size, but for client, not window, size virtual void SetMinClientSize(const wxSize& size) @@ -792,7 +788,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 +802,46 @@ 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; +#if wxUSE_THREADS + using wxEvtHandler::ProcessThreadEvent; +#endif + using wxEvtHandler::SafelyProcessEvent; + using wxEvtHandler::ProcessPendingEvents; + using wxEvtHandler::AddPendingEvent; + using wxEvtHandler::QueueEvent; + +public: + // validators // ---------- @@ -1676,7 +1705,7 @@ private: DECLARE_ABSTRACT_CLASS(wxWindowBase) - DECLARE_NO_COPY_CLASS(wxWindowBase) + wxDECLARE_NO_COPY_CLASS(wxWindowBase); DECLARE_EVENT_TABLE() };