X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/e949d38c4e59441c90c1332889005b46b2d36f63..11bf9fea53d75b460aaa4028a591917b6dd6fe54:/src/common/wincmn.cpp diff --git a/src/common/wincmn.cpp b/src/common/wincmn.cpp index ff653cb830..787d08b13f 100644 --- a/src/common/wincmn.cpp +++ b/src/common/wincmn.cpp @@ -1149,8 +1149,6 @@ void wxWindowBase::NotifyWindowOnEnableChange(bool enabled) DoEnable(enabled); #endif // !defined(wxHAS_NATIVE_ENABLED_MANAGEMENT) - OnEnabled(enabled); - // Disabling a top level window is typically done when showing a modal // dialog and we don't need to disable its children in this case, they will // be logically disabled anyhow (i.e. their IsEnabled() will return false) @@ -1166,9 +1164,7 @@ void wxWindowBase::NotifyWindowOnEnableChange(bool enabled) // they would still show as enabled even though they wouldn't actually // accept any input (at least under MSW where children don't accept input // if any of the windows in their parent chain is enabled). - // - // Notice that we must do this even for wxHAS_NATIVE_ENABLED_MANAGEMENT - // platforms as we still need to call the children OnEnabled() recursively. +#ifndef wxHAS_NATIVE_ENABLED_MANAGEMENT for ( wxWindowList::compatibility_iterator node = GetChildren().GetFirst(); node; node = node->GetNext() ) @@ -1177,6 +1173,7 @@ void wxWindowBase::NotifyWindowOnEnableChange(bool enabled) if ( !child->IsTopLevel() && child->IsThisEnabled() ) child->NotifyWindowOnEnableChange(enabled); } +#endif // !defined(wxHAS_NATIVE_ENABLED_MANAGEMENT) } bool wxWindowBase::Enable(bool enable) @@ -2038,6 +2035,11 @@ public: return true; } + // Give it a virtual dtor just to suppress gcc warnings about a class with + // virtual methods but non-virtual dtor -- even if this is completely safe + // here as we never use the objects of this class polymorphically. + virtual ~ValidationTraverserBase() { } + protected: // Called for each child, validator is guaranteed to be non-NULL. virtual bool OnDo(wxValidator* validator) = 0; @@ -2608,6 +2610,8 @@ void wxWindowBase::SetConstraintSizes(bool recurse) wxLayoutConstraints *constr = GetConstraints(); if ( constr && constr->AreSatisfied() ) { + ChildrenRepositioningGuard repositionGuard(this); + int x = constr->left.GetValue(); int y = constr->top.GetValue(); int w = constr->width.GetValue(); @@ -2956,7 +2960,7 @@ wxWindowBase::DoGetPopupMenuSelectionFromUser(wxMenu& menu, int x, int y) { gs_popupMenuSelection = wxID_NONE; - Connect(wxEVT_COMMAND_MENU_SELECTED, + Connect(wxEVT_MENU, wxCommandEventHandler(wxWindowBase::InternalOnPopupMenu), NULL, this); @@ -2979,7 +2983,7 @@ wxWindowBase::DoGetPopupMenuSelectionFromUser(wxMenu& menu, int x, int y) wxUpdateUIEventHandler(wxWindowBase::InternalOnPopupMenuUpdate), NULL, this); - Disconnect(wxEVT_COMMAND_MENU_SELECTED, + Disconnect(wxEVT_MENU, wxCommandEventHandler(wxWindowBase::InternalOnPopupMenu), NULL, this); @@ -3366,7 +3370,7 @@ bool wxWindowBase::TryAfter(wxEvent& event) wxWindow *parent = GetParent(); if ( parent && !parent->IsBeingDeleted() ) { - wxPropagateOnce propagateOnce(event); + wxPropagateOnce propagateOnce(event, this); return parent->GetEventHandler()->ProcessEvent(event); }