if they are disabled but still emitted by an
accelerator
First attempt at adding wxSizer::Clear(). Further
testing pending :-)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@12403
c3d73ce0-8a6f-49c7-b76d-
6d57e0e08775
wxSizerItem( wxSizer *sizer, int option, int flag, int border, wxObject* userData );
~wxSizerItem();
wxSizerItem( wxSizer *sizer, int option, int flag, int border, wxObject* userData );
~wxSizerItem();
+
+ virtual void DeleteWindows();
virtual wxSize GetSize();
virtual wxSize CalcMin();
virtual wxSize GetSize();
virtual wxSize CalcMin();
virtual bool Remove( wxWindow *window );
virtual bool Remove( wxSizer *sizer );
virtual bool Remove( int pos );
virtual bool Remove( wxWindow *window );
virtual bool Remove( wxSizer *sizer );
virtual bool Remove( int pos );
+
+ virtual void Clear( bool delete_windows=FALSE );
+ virtual void DeleteWindows();
void SetMinSize( int width, int height )
{ DoSetMinSize( width, height ); }
void SetMinSize( int width, int height )
{ DoSetMinSize( width, height ); }
commandEvent.SetEventObject(this);
wxMenuItem *item = bar->FindItem(id);
commandEvent.SetEventObject(this);
wxMenuItem *item = bar->FindItem(id);
- if ( item && item->IsCheckable() )
- item->Toggle();
-
- // use the new value
- commandEvent.SetInt(item->IsChecked());
+ if (!item->IsEnabled())
+ return TRUE;
+
+ if (item->IsCheckable())
+ {
+ item->Toggle();
+ // use the new value
+ commandEvent.SetInt(item->IsChecked());
+ }
}
return GetEventHandler()->ProcessEvent(commandEvent);
}
return GetEventHandler()->ProcessEvent(commandEvent);
+void wxSizerItem::DeleteWindows()
+{
+ if (m_window)
+ m_window->Destroy();
+
+ if (m_sizer)
+ m_sizer->DeleteWindows();
+}
+
bool wxSizerItem::IsWindow()
{
return (m_window != NULL);
bool wxSizerItem::IsWindow()
{
return (m_window != NULL);
+void wxSizer::Clear( bool delete_windows )
+{
+ if (delete_windows)
+ DeleteWindows();
+
+ m_children.Clear();
+}
+
+void wxSizer::DeleteWindows()
+{
+ wxNode *node = m_children.First();
+ while (node)
+ {
+ wxSizerItem *item = (wxSizerItem*)node->Data();
+ item->DeleteWindows();
+ node = node->Next();
+ }
+}
+
void wxSizer::Fit( wxWindow *window )
{
wxSize size;
void wxSizer::Fit( wxWindow *window )
{
wxSize size;