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)
// 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() )
if ( !child->IsTopLevel() && child->IsThisEnabled() )
child->NotifyWindowOnEnableChange(enabled);
}
+#endif // !defined(wxHAS_NATIVE_ENABLED_MANAGEMENT)
}
bool wxWindowBase::Enable(bool enable)
return false;
}
- if ( recurse && !OnRecurse(child) )
+ // Notice that validation should never recurse into top level
+ // children, e.g. some other dialog which might happen to be
+ // currently shown.
+ if ( recurse && !child->IsTopLevel() && !OnRecurse(child) )
{
return false;
}
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;
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();
{
gs_popupMenuSelection = wxID_NONE;
- Connect(wxEVT_COMMAND_MENU_SELECTED,
+ Connect(wxEVT_MENU,
wxCommandEventHandler(wxWindowBase::InternalOnPopupMenu),
NULL,
this);
wxUpdateUIEventHandler(wxWindowBase::InternalOnPopupMenuUpdate),
NULL,
this);
- Disconnect(wxEVT_COMMAND_MENU_SELECTED,
+ Disconnect(wxEVT_MENU,
wxCommandEventHandler(wxWindowBase::InternalOnPopupMenu),
NULL,
this);
wxWindow *parent = GetParent();
if ( parent && !parent->IsBeingDeleted() )
{
- wxPropagateOnce propagateOnce(event);
+ wxPropagateOnce propagateOnce(event, this);
return parent->GetEventHandler()->ProcessEvent(event);
}