]> git.saurik.com Git - wxWidgets.git/blobdiff - src/motif/toolbar.cpp
applying OSAF patch for "toolbar selection not correct on Mac after calling Realize...
[wxWidgets.git] / src / motif / toolbar.cpp
index a4279e48bf899d2d7355cf98b0bf384860b2e062..ef6b1d6694157041d2a7ee282c6133092f04bc73 100644 (file)
 // headers
 // ----------------------------------------------------------------------------
 
-#ifdef __GNUG__
+#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
     #pragma implementation "toolbar.h"
 #endif
 
+// For compilers that support precompilation, includes "wx.h".
+#include "wx/wxprec.h"
+
 #ifdef __VMS
 #define XtDisplay XTDISPLAY
 #endif
@@ -53,7 +56,7 @@
 // ----------------------------------------------------------------------------
 
 #if !USE_SHARED_LIBRARY
-IMPLEMENT_DYNAMIC_CLASS(wxToolBar, wxToolBarBase)
+IMPLEMENT_DYNAMIC_CLASS(wxToolBar, wxControl)
 #endif
 
 // ----------------------------------------------------------------------------
@@ -202,7 +205,7 @@ bool wxToolBar::Create(wxWindow *parent,
 {
     if( !wxControl::CreateControl( parent, id, pos, size, style,
                                    wxDefaultValidator, name ) )
-        return FALSE;
+        return false;
 
     m_backgroundColour = wxSystemSettings::GetColour(wxSYS_COLOUR_3DFACE);
 
@@ -229,7 +232,7 @@ bool wxToolBar::Create(wxWindow *parent,
 
     m_mainWidget = (WXWidget) toolbar;
 
-    ChangeFont(FALSE);
+    ChangeFont(false);
 
     wxPoint rPos = pos;
     wxSize  rSize = size;
@@ -239,13 +242,12 @@ bool wxToolBar::Create(wxWindow *parent,
     if( rSize.x == -1 && GetParent() )
         rSize.x = GetParent()->GetSize().x;
 
-    SetCanAddEventHandler(TRUE);
     AttachWidget (parent, m_mainWidget, (WXWidget) NULL,
                   rPos.x, rPos.y, rSize.x, rSize.y);
 
     ChangeBackgroundColour();
 
-    return TRUE;
+    return true;
 }
 
 wxToolBar::~wxToolBar()
@@ -259,7 +261,7 @@ bool wxToolBar::Realize()
     if ( m_tools.GetCount() == 0 )
     {
         // nothing to do
-        return TRUE;
+        return true;
     }
 
     bool isVertical = GetWindowStyle() & wxTB_VERTICAL;
@@ -282,7 +284,7 @@ bool wxToolBar::Realize()
     Pixmap pixmap, insensPixmap;
     wxBitmap bmp, insensBmp;
 
-    wxToolBarToolsList::Node *node = m_tools.GetFirst();
+    wxToolBarToolsList::compatibility_iterator node = m_tools.GetFirst();
     while ( node )
     {
         wxToolBarTool *tool = (wxToolBarTool *)node->GetData();
@@ -361,8 +363,8 @@ bool wxToolBar::Realize()
 
                 if( !tool->GetButtonWidget() )
                 {
-                    DoChangeBackgroundColour((WXWidget) button,
-                                             m_backgroundColour, TRUE);
+                    wxDoChangeBackgroundColour((WXWidget) button,
+                                               m_backgroundColour, true);
 
                     tool->SetWidget(button);
                 }
@@ -389,13 +391,13 @@ bool wxToolBar::Realize()
                     wxColour col;
                     col.SetPixel(backgroundPixel);
 
-                    if( bmp.GetMask() )
+                    if( bmp.Ok() && bmp.GetMask() )
                     {
                         bmp = wxCreateMaskedBitmap(bmp, col);
                         tool->SetNormalBitmap(bmp);
                     }
 
-                    if( insensBmp.GetMask() )
+                    if( insensBmp.Ok() && insensBmp.GetMask() )
                     {
                         insensBmp = wxCreateMaskedBitmap(insensBmp, col);
                         tool->SetDisabledBitmap(insensBmp);
@@ -415,12 +417,12 @@ bool wxToolBar::Realize()
                 wxColour col;
                 col.SetPixel(backgroundPixel);
 
-                pixmap = (Pixmap) bmp.GetPixmap();
+                pixmap = (Pixmap) bmp.GetDrawable();
                 {
                     wxBitmap tmp = tool->GetDisabledBitmap();
 
                     insensPixmap = tmp.Ok() ?
-                            (Pixmap)tmp.GetPixmap() :
+                            (Pixmap)tmp.GetDrawable() :
                             tool->GetInsensPixmap();
                 }
                 
@@ -481,7 +483,7 @@ bool wxToolBar::Realize()
              isVertical ? buttonWidth + 2 * marginX : -1,
              isVertical ? -1 : buttonHeight +  2*marginY );
 
-    return TRUE;
+    return true;
 }
 
 wxToolBarToolBase *wxToolBar::FindToolForPosition(wxCoord WXUNUSED(x),
@@ -496,7 +498,7 @@ bool wxToolBar::DoInsertTool(size_t WXUNUSED(pos), wxToolBarToolBase *tool)
 {
     tool->Attach(this);
 
-    return TRUE;
+    return true;
 }
 
 bool wxToolBar::DoDeleteTool(size_t pos, wxToolBarToolBase *tool)
@@ -508,7 +510,7 @@ bool wxToolBar::DoDeleteTool(size_t pos, wxToolBarToolBase *tool)
     int packing = GetToolPacking();
     int offset = 0;
 
-    for( wxToolBarToolsList::Node *node = m_tools.GetFirst();
+    for( wxToolBarToolsList::compatibility_iterator node = m_tools.GetFirst();
          node; node = node->GetNext() )
     {
         wxToolBarTool *t = (wxToolBarTool*)node->GetData();
@@ -584,14 +586,18 @@ bool wxToolBar::DoDeleteTool(size_t pos, wxToolBarToolBase *tool)
         }
     }
 
-    return TRUE;
+    return true;
 }
 
 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)
@@ -645,7 +651,7 @@ void wxToolBar::DoSetSize(int x, int y, int width, int height, int sizeFlags)
 
 wxToolBarToolBase *wxToolBar::FindToolByWidget(WXWidget w) const
 {
-    wxToolBarToolsList::Node* node = m_tools.GetFirst();
+    wxToolBarToolsList::compatibility_iterator node = m_tools.GetFirst();
     while ( node )
     {
         wxToolBarTool *tool = (wxToolBarTool *)node->GetData();
@@ -717,7 +723,7 @@ static void wxToolButtonPopupCallback(Widget w,
         wxToolBarTimer::help_popup = (Widget) 0;
 
         // One shot
-        wxTheToolBarTimer->Start(delayMilli, TRUE);
+        wxTheToolBarTimer->Start(delayMilli, true);
 
     }
     /************************************************************/