]> git.saurik.com Git - wxWidgets.git/commitdiff
Patch #1003174: Fixes crash when toolbar has a disabled control
authorMattia Barbon <mbarbon@cpan.org>
Sat, 28 Aug 2004 19:10:31 +0000 (19:10 +0000)
committerMattia Barbon <mbarbon@cpan.org>
Sat, 28 Aug 2004 19:10:31 +0000 (19:10 +0000)
from Ian Brown.

  If you put a control (e.g. a wxChoice) on a toolbar and then
later disable that control, you will get a crash. This is because
the toolbar code always calls disable on the button widget for a
toolbartool. When the tool is a control, there is no button, and
you should call disable on the control instead.
This small patch implements this logic.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@28940 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

src/motif/toolbar.cpp

index 00da4412b617d81136366ebc813c3830284c8080..54a6419baa0136474dd3a6b22f3c025f02d5dfae 100644 (file)
@@ -592,8 +592,12 @@ bool wxToolBar::DoDeleteTool(size_t pos, wxToolBarToolBase *tool)
 void wxToolBar::DoEnableTool(wxToolBarToolBase *toolBase, bool enable)
 {
     wxToolBarTool *tool = (wxToolBarTool *)toolBase;
-
-    XtSetSensitive(tool->GetButtonWidget(), (Boolean) enable);
+    if (tool->GetButtonWidget()){
+        XtSetSensitive(tool->GetButtonWidget(), (Boolean) enable);
+    } else if (wxTOOL_STYLE_CONTROL == tool->GetStyle()){
+        // Controls (such as wxChoice) do not have button widgets
+        tool->GetControl()->Enable(enable);
+    }
 }
 
 void wxToolBar::DoToggleTool(wxToolBarToolBase *toolBase, bool toggle)