X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/a721fd82b7ca8c97048453d4aaff559e8f741d69..8f4745feeb2850f3bebb3af45407e164550d541a:/src/common/wincmn.cpp diff --git a/src/common/wincmn.cpp b/src/common/wincmn.cpp index 4dbab48a20..8d3fa0af2c 100644 --- a/src/common/wincmn.cpp +++ b/src/common/wincmn.cpp @@ -38,6 +38,7 @@ #include "wx/settings.h" #include "wx/dialog.h" #include "wx/msgdlg.h" + #include "wx/msgout.h" #include "wx/statusbr.h" #include "wx/toolbar.h" #include "wx/dcclient.h" @@ -71,16 +72,6 @@ #include "wx/sysopt.h" #endif -// For reporting compile- and runtime version of GTK+ in the ctrl+alt+mclick dialog. -// The gtk includes don't pull any other headers in, at least not on my system - MR -#ifdef __WXGTK__ - #ifdef __WXGTK20__ - #include - #else - #include - #endif -#endif - #include "wx/platinfo.h" // Windows List @@ -111,6 +102,7 @@ BEGIN_EVENT_TABLE(wxWindowBase, wxEvtHandler) EVT_HELP(wxID_ANY, wxWindowBase::OnHelp) #endif // wxUSE_HELP + EVT_SIZE(wxWindowBase::InternalOnSize) END_EVENT_TABLE() // ============================================================================ @@ -226,17 +218,6 @@ bool wxWindowBase::CreateBase(wxWindowBase *parent, const wxValidator& wxVALIDATOR_PARAM(validator), const wxString& name) { -#if wxUSE_STATBOX - // wxGTK doesn't allow to create controls with static box as the parent so - // this will result in a crash when the program is ported to wxGTK so warn - // the user about it - - // if you get this assert, the correct solution is to create the controls - // as siblings of the static box - wxASSERT_MSG( !parent || !wxDynamicCast(parent, wxStaticBox), - _T("wxStaticBox can't be used as a window parent!") ); -#endif // wxUSE_STATBOX - // ids are limited to 16 bits under MSW so if you care about portability, // it's not a good idea to use ids out of this range (and negative ids are // reserved for wxWidgets own usage) @@ -483,7 +464,7 @@ void wxWindowBase::FitInside() } // On Mac, scrollbars are explicitly children. -#ifdef __WXMAC__ +#if defined( __WXMAC__ ) && !defined(__WXUNIVERSAL__) static bool wxHasRealChildren(const wxWindowBase* win) { int realChildCount = 0; @@ -559,7 +540,7 @@ wxSize wxWindowBase::DoGetBestSize() const } #endif // wxUSE_CONSTRAINTS else if ( !GetChildren().empty() -#ifdef __WXMAC__ +#if defined( __WXMAC__ ) && !defined(__WXUNIVERSAL__) && wxHasRealChildren(this) #endif ) @@ -711,14 +692,14 @@ wxSize wxWindowBase::GetEffectiveMinSize() const { // merge the best size with the min size, giving priority to the min size wxSize min = GetMinSize(); - + if (min.x == wxDefaultCoord || min.y == wxDefaultCoord) { wxSize best = GetBestSize(); if (min.x == wxDefaultCoord) min.x = best.x; if (min.y == wxDefaultCoord) min.y = best.y; } - + return min; } @@ -726,19 +707,19 @@ wxSize wxWindowBase::GetBestSize() const { if ((!m_windowSizer) && (m_bestSizeCache.IsFullySpecified())) return m_bestSizeCache; - + return DoGetBestSize(); } void wxWindowBase::SetMinSize(const wxSize& minSize) -{ - m_minWidth = minSize.x; - m_minHeight = minSize.y; +{ + m_minWidth = minSize.x; + m_minHeight = minSize.y; } void wxWindowBase::SetMaxSize(const wxSize& maxSize) -{ - m_maxWidth = maxSize.x; +{ + m_maxWidth = maxSize.x; m_maxHeight = maxSize.y; } @@ -1161,19 +1142,22 @@ void wxWindowBase::PushEventHandler(wxEvtHandler *handlerToPush) SetEventHandler(handlerToPush); -#ifdef __WXDEBUG__ +#if wxDEBUG_LEVEL // final checks of the operations done above: wxASSERT_MSG( handlerToPush->GetPreviousHandler() == NULL, - "the first handler of the wxWindow stack should have no previous handlers set" ); + "the first handler of the wxWindow stack should " + "have no previous handlers set" ); wxASSERT_MSG( handlerToPush->GetNextHandler() != NULL, - "the first handler of the wxWindow stack should have non-NULL next handler" ); + "the first handler of the wxWindow stack should " + "have non-NULL next handler" ); wxEvtHandler* pLast = handlerToPush; - while (pLast && pLast != this) + while ( pLast && pLast != this ) pLast = pLast->GetNextHandler(); wxASSERT_MSG( pLast->GetNextHandler() == NULL, - "the last handler of the wxWindow stack should have this window as next handler" ); -#endif + "the last handler of the wxWindow stack should " + "have this window as next handler" ); +#endif // wxDEBUG_LEVEL } wxEvtHandler *wxWindowBase::PopEventHandler(bool deleteHandler) @@ -2112,6 +2096,14 @@ bool wxWindowBase::Layout() return true; } +void wxWindowBase::InternalOnSize(wxSizeEvent& event) +{ + if ( GetAutoLayout() ) + Layout(); + + event.Skip(); +} + #if wxUSE_CONSTRAINTS // first phase of the constraints evaluation: set our own constraints @@ -2543,7 +2535,7 @@ static void DrawBorder(wxWindowBase *win, const wxRect& rect, bool fill, const w { wxClientDC dc((wxWindow *)win); dc.SetPen(*pen); - dc.SetBrush(fill ? wxBrush(pen->GetColour(), wxBRUSHSTYLE_CROSSDIAG_HATCH) : + dc.SetBrush(fill ? wxBrush(pen->GetColour(), wxBRUSHSTYLE_CROSSDIAG_HATCH) : *wxTRANSPARENT_BRUSH); dc.DrawRectangle(rect.Deflate(1, 1)); } @@ -2570,6 +2562,8 @@ static void DrawSizer(wxWindowBase *win, wxSizer *sizer) { DrawSizers(item->GetWindow()); } + else + wxFAIL_MSG("inconsistent wxSizerItem status!"); } } @@ -2592,6 +2586,26 @@ static void DrawSizers(wxWindowBase *win) { DrawSizers(*i); } + + // show all kind of sizes of this window; see the "window sizing" topic + // overview for more info about the various differences: + wxSize fullSz = win->GetSize(); + wxSize clientSz = win->GetClientSize(); + wxSize bestSz = win->GetBestSize(); + wxSize minSz = win->GetMinSize(); + wxSize maxSz = win->GetMaxSize(); + wxSize virtualSz = win->GetVirtualSize(); + + wxMessageOutputDebug dbgout; + dbgout.Printf( + "%-10s => fullsz=%4d;%-4d clientsz=%4d;%-4d bestsz=%4d;%-4d minsz=%4d;%-4d maxsz=%4d;%-4d virtualsz=%4d;%-4d\n", + win->GetName(), + fullSz.x, fullSz.y, + clientSz.x, clientSz.y, + bestSz.x, bestSz.y, + minSz.x, minSz.y, + maxSz.x, maxSz.y, + virtualSz.x, virtualSz.y); } } @@ -2848,7 +2862,7 @@ bool wxWindowBase::UnregisterHotKey(int WXUNUSED(hotkeyId)) // event processing // ---------------------------------------------------------------------------- -bool wxWindowBase::TryValidator(wxEvent& wxVALIDATOR_PARAM(event)) +bool wxWindowBase::TryBefore(wxEvent& event) { #if wxUSE_VALIDATORS // Can only use the validator of the window which @@ -2863,10 +2877,10 @@ bool wxWindowBase::TryValidator(wxEvent& wxVALIDATOR_PARAM(event)) } #endif // wxUSE_VALIDATORS - return false; + return wxEvtHandler::TryBefore(event); } -bool wxWindowBase::TryParent(wxEvent& event) +bool wxWindowBase::TryAfter(wxEvent& event) { // carry on up the parent-child hierarchy if the propagation count hasn't // reached zero yet @@ -2888,7 +2902,7 @@ bool wxWindowBase::TryParent(wxEvent& event) } } - return wxEvtHandler::TryParent(event); + return wxEvtHandler::TryAfter(event); } // ---------------------------------------------------------------------------- @@ -3034,7 +3048,7 @@ public: private: wxWindowBase * const m_win; - DECLARE_NO_COPY_CLASS(DragAcceptFilesTarget) + wxDECLARE_NO_COPY_CLASS(DragAcceptFilesTarget); };