]> git.saurik.com Git - wxWidgets.git/blobdiff - src/univ/toolbar.cpp
fixed to work with themes that redefine icons (e.g. Fedora's Bluecurve)
[wxWidgets.git] / src / univ / toolbar.cpp
index 74ff8b55e0effb50ad7093cf2572c97eeeba88ed..187ed939bc0b225923b5ec6f0f8b09dc1fd49fea 100644 (file)
@@ -48,7 +48,7 @@
 // ----------------------------------------------------------------------------
 
 // value meaning that m_widthSeparator is not initialized
 // ----------------------------------------------------------------------------
 
 // value meaning that m_widthSeparator is not initialized
-static const wxCoord INVALID_WIDTH = -1;
+static const wxCoord INVALID_WIDTH = wxDefaultCoord;
 
 // ----------------------------------------------------------------------------
 // wxToolBarTool: our implementation of wxToolBarToolBase
 
 // ----------------------------------------------------------------------------
 // wxToolBarTool: our implementation of wxToolBarToolBase
@@ -71,15 +71,15 @@ public:
     {
         // no position yet
         m_x =
     {
         // no position yet
         m_x =
-        m_y = -1;
+        m_y = wxDefaultCoord;
         m_width =
         m_height = 0;
 
         // not pressed yet
         m_width =
         m_height = 0;
 
         // not pressed yet
-        m_isInverted = FALSE;
-        
+        m_isInverted = false;
+
         // mouse not here yet
         // mouse not here yet
-        m_underMouse = FALSE;
+        m_underMouse = false;
     }
 
     wxToolBarTool(wxToolBar *tbar, wxControl *control)
     }
 
     wxToolBarTool(wxToolBar *tbar, wxControl *control)
@@ -87,15 +87,15 @@ public:
     {
         // no position yet
         m_x =
     {
         // no position yet
         m_x =
-        m_y = -1;
+        m_y = wxDefaultCoord;
         m_width =
         m_height = 0;
 
         // not pressed yet
         m_width =
         m_height = 0;
 
         // not pressed yet
-        m_isInverted = FALSE;
-        
+        m_isInverted = false;
+
         // mouse not here yet
         // mouse not here yet
-        m_underMouse = FALSE;
+        m_underMouse = false;
     }
 
     // is this tool pressed, even temporarily? (this is different from being
     }
 
     // is this tool pressed, even temporarily? (this is different from being
@@ -108,9 +108,9 @@ public:
 
     // press the tool temporarily by inverting its toggle state
     void Invert() { m_isInverted = !m_isInverted; }
 
     // press the tool temporarily by inverting its toggle state
     void Invert() { m_isInverted = !m_isInverted; }
-    
+
     // Set underMouse
     // Set underMouse
-    void SetUnderMouse( bool under = TRUE ) { m_underMouse = under; }
+    void SetUnderMouse( bool under = true ) { m_underMouse = under; }
     bool IsUnderMouse() { return m_underMouse; }
 
 public:
     bool IsUnderMouse() { return m_underMouse; }
 
 public:
@@ -121,10 +121,10 @@ public:
     wxCoord m_height;
 
 private:
     wxCoord m_height;
 
 private:
-    // TRUE if the tool is pressed
+    // true if the tool is pressed
     bool m_isInverted;
     bool m_isInverted;
-    
-    // TRUE if the tool is under the mouse
+
+    // true if the tool is under the mouse
     bool m_underMouse;
 };
 
     bool m_underMouse;
 };
 
@@ -141,7 +141,7 @@ IMPLEMENT_DYNAMIC_CLASS(wxToolBar, wxControl);
 void wxToolBar::Init()
 {
     // no tools yet
 void wxToolBar::Init()
 {
     // no tools yet
-    m_needsLayout = FALSE;
+    m_needsLayout = false;
 
     // unknown widths for the tools and separators
     m_widthSeparator = INVALID_WIDTH;
 
     // unknown widths for the tools and separators
     m_widthSeparator = INVALID_WIDTH;
@@ -165,14 +165,14 @@ bool wxToolBar::Create(wxWindow *parent,
     if ( !wxToolBarBase::Create(parent, id, pos, size, style,
                                 wxDefaultValidator, name) )
     {
     if ( !wxToolBarBase::Create(parent, id, pos, size, style,
                                 wxDefaultValidator, name) )
     {
-        return FALSE;
+        return false;
     }
 
     CreateInputHandler(wxINP_HANDLER_TOOLBAR);
 
     SetBestSize(size);
 
     }
 
     CreateInputHandler(wxINP_HANDLER_TOOLBAR);
 
     SetBestSize(size);
 
-    return TRUE;
+    return true;
 }
 
 wxToolBar::~wxToolBar()
 }
 
 wxToolBar::~wxToolBar()
@@ -245,23 +245,23 @@ bool wxToolBar::DoInsertTool(size_t WXUNUSED(pos),
                              wxToolBarToolBase * WXUNUSED(tool))
 {
     // recalculate the toolbar geometry before redrawing it the next time
                              wxToolBarToolBase * WXUNUSED(tool))
 {
     // recalculate the toolbar geometry before redrawing it the next time
-    m_needsLayout = TRUE;
+    m_needsLayout = true;
 
     // and ensure that we indeed are going to redraw
     Refresh();
 
 
     // and ensure that we indeed are going to redraw
     Refresh();
 
-    return TRUE;
+    return true;
 }
 
 bool wxToolBar::DoDeleteTool(size_t WXUNUSED(pos),
                              wxToolBarToolBase * WXUNUSED(tool))
 {
     // as above
 }
 
 bool wxToolBar::DoDeleteTool(size_t WXUNUSED(pos),
                              wxToolBarToolBase * WXUNUSED(tool))
 {
     // as above
-    m_needsLayout = TRUE;
+    m_needsLayout = true;
 
     Refresh();
 
 
     Refresh();
 
-    return TRUE;
+    return true;
 }
 
 void wxToolBar::DoEnableTool(wxToolBarToolBase *tool, bool enable)
 }
 
 void wxToolBar::DoEnableTool(wxToolBarToolBase *tool, bool enable)
@@ -292,9 +292,9 @@ void wxToolBar::DoEnableTool(wxToolBarToolBase *tool, bool enable)
                 unsigned char blue = image.GetBlue(x,y);
                 if (!has_mask || red != mask_red || green != mask_green || blue != mask_blue)
                 {
                 unsigned char blue = image.GetBlue(x,y);
                 if (!has_mask || red != mask_red || green != mask_green || blue != mask_blue)
                 {
-                    red = (((wxInt32) red  - bg_red) >> 1) + bg_red;
-                    green = (((wxInt32) green  - bg_green) >> 1) + bg_green;
-                    blue = (((wxInt32) blue  - bg_blue) >> 1) + bg_blue;
+                    red = (unsigned char)((((wxInt32) red  - bg_red) >> 1) + bg_red);
+                    green = (unsigned char)((((wxInt32) green  - bg_green) >> 1) + bg_green);
+                    blue = (unsigned char)((((wxInt32) blue  - bg_blue) >> 1) + bg_blue);
                     image.SetRGB( x, y, red, green, blue );
                 }
             }
                     image.SetRGB( x, y, red, green, blue );
                 }
             }
@@ -309,9 +309,9 @@ void wxToolBar::DoEnableTool(wxToolBarToolBase *tool, bool enable)
                 unsigned char blue = image.GetBlue(x,y);
                 if (!has_mask || red != mask_red || green != mask_green || blue != mask_blue)
                 {
                 unsigned char blue = image.GetBlue(x,y);
                 if (!has_mask || red != mask_red || green != mask_green || blue != mask_blue)
                 {
-                    red = (((wxInt32) red  - bg_red) >> 1) + bg_red;
-                    green = (((wxInt32) green  - bg_green) >> 1) + bg_green;
-                    blue = (((wxInt32) blue  - bg_blue) >> 1) + bg_blue;
+                    red = (unsigned char)((((wxInt32) red  - bg_red) >> 1) + bg_red);
+                    green = (unsigned char)((((wxInt32) green  - bg_green) >> 1) + bg_green);
+                    blue = (unsigned char)((((wxInt32) blue  - bg_blue) >> 1) + bg_blue);
                     image.SetRGB( x, y, red, green, blue );
                 }
             }
                     image.SetRGB( x, y, red, green, blue );
                 }
             }
@@ -376,7 +376,7 @@ wxRect wxToolBar::GetToolRect(wxToolBarToolBase *toolBase) const
 
     if ( IsVertical() )
     {
 
     if ( IsVertical() )
     {
-               if (tool->IsButton())
+        if (tool->IsButton())
         {
             rect.width = m_defaultWidth;
             rect.height = m_defaultHeight;
         {
             rect.width = m_defaultWidth;
             rect.height = m_defaultHeight;
@@ -420,28 +420,28 @@ wxRect wxToolBar::GetToolRect(wxToolBarToolBase *toolBase) const
 bool wxToolBar::Realize()
 {
     if ( !wxToolBarBase::Realize() )
 bool wxToolBar::Realize()
 {
     if ( !wxToolBarBase::Realize() )
-        return FALSE;
+        return false;
 
 
-    m_needsLayout = TRUE;
+    m_needsLayout = true;
     DoLayout();
 
     SetBestSize(wxDefaultSize);
 
     DoLayout();
 
     SetBestSize(wxDefaultSize);
 
-    return TRUE;
+    return true;
 }
 
 void wxToolBar::DoLayout()
 {
     wxASSERT_MSG( m_needsLayout, _T("why are we called?") );
 
 }
 
 void wxToolBar::DoLayout()
 {
     wxASSERT_MSG( m_needsLayout, _T("why are we called?") );
 
-    m_needsLayout = FALSE;
+    m_needsLayout = false;
 
     wxCoord x = m_xMargin,
             y = m_yMargin;
 
     const wxCoord widthTool = IsVertical() ? m_defaultHeight : m_defaultWidth;
 
     wxCoord x = m_xMargin,
             y = m_yMargin;
 
     const wxCoord widthTool = IsVertical() ? m_defaultHeight : m_defaultWidth;
-    wxCoord margin = IsVertical() ? m_xMargin : m_yMargin,
-           *pCur = IsVertical() ? &y : &x;
+    wxCoord margin = IsVertical() ? m_xMargin : m_yMargin;
+    wxCoord *pCur = IsVertical() ? &y : &x;
 
     // calculate the positions of all elements
     for ( wxToolBarToolsList::compatibility_iterator node = m_tools.GetFirst();
 
     // calculate the positions of all elements
     for ( wxToolBarToolsList::compatibility_iterator node = m_tools.GetFirst();
@@ -494,24 +494,24 @@ void wxToolBar::DoSetSize(int x, int y, int width, int height, int sizeFlags)
     GetSize(&old_width, &old_height);
 
     wxToolBarBase::DoSetSize(x, y, width, height, sizeFlags);
     GetSize(&old_width, &old_height);
 
     wxToolBarBase::DoSetSize(x, y, width, height, sizeFlags);
-    
+
     // Correct width and height if needed.
     // Correct width and height if needed.
-    if ( width == -1 || height == -1 )
+    if ( width == wxDefaultCoord || height == wxDefaultCoord )
     {
         int tmp_width, tmp_height;
         GetSize(&tmp_width, &tmp_height);
 
     {
         int tmp_width, tmp_height;
         GetSize(&tmp_width, &tmp_height);
 
-        if ( width == -1 )
+        if ( width == wxDefaultCoord )
             width = tmp_width;
             width = tmp_width;
-        if ( height == -1 )
+        if ( height == wxDefaultCoord )
             height = tmp_height;
     }
             height = tmp_height;
     }
-  
+
     // We must refresh the frame size when the toolbar changes size
     // otherwise the toolbar can be shown incorrectly
     if ( old_width != width || old_height != height )
     {
     // We must refresh the frame size when the toolbar changes size
     // otherwise the toolbar can be shown incorrectly
     if ( old_width != width || old_height != height )
     {
-        // But before we send the size event check it 
+        // But before we send the size event check it
         // we have a frame that is not being deleted.
         wxFrame *frame = wxDynamicCast(GetParent(), wxFrame);
         if ( frame && !frame->IsBeingDeleted() )
         // we have a frame that is not being deleted.
         wxFrame *frame = wxDynamicCast(GetParent(), wxFrame);
         if ( frame && !frame->IsBeingDeleted() )
@@ -588,13 +588,13 @@ void wxToolBar::DoDraw(wxControlRenderer *renderer)
             // we're beyond the area to redraw, nothing left to do
             break;
         }
             // we're beyond the area to redraw, nothing left to do
             break;
         }
-        
+
         if (tool->IsSeparator() && !HasFlag(wxTB_FLAT))
         {
             // Draw seperators only in flat mode
             continue;
         }
         if (tool->IsSeparator() && !HasFlag(wxTB_FLAT))
         {
             // Draw seperators only in flat mode
             continue;
         }
-        
+
         // deal with the flags
         int flags = 0;
 
         // deal with the flags
         int flags = 0;
 
@@ -647,7 +647,7 @@ bool wxToolBar::PerformAction(const wxControlAction& action,
     wxToolBarTool *tool = (wxToolBarTool*) FindById(numArg);
     if (!tool)
         return false;
     wxToolBarTool *tool = (wxToolBarTool*) FindById(numArg);
     if (!tool)
         return false;
-    
+
     if ( action == wxACTION_TOOLBAR_TOGGLE )
     {
         PerformAction( wxACTION_BUTTON_RELEASE, numArg );
     if ( action == wxACTION_TOOLBAR_TOGGLE )
     {
         PerformAction( wxACTION_BUTTON_RELEASE, numArg );
@@ -657,7 +657,7 @@ bool wxToolBar::PerformAction(const wxControlAction& action,
     else if ( action == wxACTION_TOOLBAR_PRESS )
     {
         wxLogTrace(_T("toolbar"), _T("Button '%s' pressed."), tool->GetShortHelp().c_str());
     else if ( action == wxACTION_TOOLBAR_PRESS )
     {
         wxLogTrace(_T("toolbar"), _T("Button '%s' pressed."), tool->GetShortHelp().c_str());
-        
+
         tool->Invert();
 
         RefreshTool( tool );
         tool->Invert();
 
         RefreshTool( tool );
@@ -667,7 +667,7 @@ bool wxToolBar::PerformAction(const wxControlAction& action,
         wxLogTrace(_T("toolbar"), _T("Button '%s' released."), tool->GetShortHelp().c_str());
 
         wxASSERT_MSG( tool->IsInverted(), _T("release unpressed button?") );
         wxLogTrace(_T("toolbar"), _T("Button '%s' released."), tool->GetShortHelp().c_str());
 
         wxASSERT_MSG( tool->IsInverted(), _T("release unpressed button?") );
-    
+
         tool->Invert();
 
         RefreshTool( tool );
         tool->Invert();
 
         RefreshTool( tool );
@@ -685,30 +685,30 @@ bool wxToolBar::PerformAction(const wxControlAction& action,
         }
         else // simple non-checkable tool
         {
         }
         else // simple non-checkable tool
         {
-            isToggled = FALSE;
+            isToggled = false;
         }
         OnLeftClick( tool->GetId(), isToggled );
     }
     else if ( action == wxACTION_TOOLBAR_ENTER )
     {
         }
         OnLeftClick( tool->GetId(), isToggled );
     }
     else if ( action == wxACTION_TOOLBAR_ENTER )
     {
-        wxCHECK_MSG( tool, FALSE, _T("no tool to enter?") );
-        
+        wxCHECK_MSG( tool, false, _T("no tool to enter?") );
+
         if ( HasFlag(wxTB_FLAT) && tool->IsEnabled() )
         {
         if ( HasFlag(wxTB_FLAT) && tool->IsEnabled() )
         {
-            tool->SetUnderMouse( TRUE );
-            
+            tool->SetUnderMouse( true );
+
             if ( !tool->IsToggled() )
                 RefreshTool( tool );
         }
     }
     else if ( action == wxACTION_TOOLBAR_LEAVE )
     {
             if ( !tool->IsToggled() )
                 RefreshTool( tool );
         }
     }
     else if ( action == wxACTION_TOOLBAR_LEAVE )
     {
-        wxCHECK_MSG( tool, FALSE, _T("no tool to leave?") );
-        
+        wxCHECK_MSG( tool, false, _T("no tool to leave?") );
+
         if ( HasFlag(wxTB_FLAT) && tool->IsEnabled() )
         {
         if ( HasFlag(wxTB_FLAT) && tool->IsEnabled() )
         {
-            tool->SetUnderMouse( FALSE );
-            
+            tool->SetUnderMouse( false );
+
             if ( !tool->IsToggled() )
                 RefreshTool( tool );
         }
             if ( !tool->IsToggled() )
                 RefreshTool( tool );
         }
@@ -716,7 +716,7 @@ bool wxToolBar::PerformAction(const wxControlAction& action,
     else
         return wxControl::PerformAction(action, numArg, strArg);
 
     else
         return wxControl::PerformAction(action, numArg, strArg);
 
-    return TRUE;
+    return true;
 }
 
 // ============================================================================
 }
 
 // ============================================================================
@@ -752,16 +752,16 @@ bool wxStdToolbarInputHandler::HandleMouse(wxInputConsumer *consumer,
         if ( event.LeftDown() || event.LeftDClick() )
         {
             if ( !tool || !tool->IsEnabled() )
         if ( event.LeftDown() || event.LeftDClick() )
         {
             if ( !tool || !tool->IsEnabled() )
-                return TRUE;
-                
+                return true;
+
             m_winCapture = tbar;
             m_winCapture->CaptureMouse();
             m_winCapture = tbar;
             m_winCapture->CaptureMouse();
-            
+
             m_toolCapture = tool;
 
             consumer->PerformAction( wxACTION_BUTTON_PRESS, tool->GetId() );
 
             m_toolCapture = tool;
 
             consumer->PerformAction( wxACTION_BUTTON_PRESS, tool->GetId() );
 
-            return TRUE;
+            return true;
         }
         else if ( event.LeftUp() )
         {
         }
         else if ( event.LeftUp() )
         {
@@ -778,10 +778,10 @@ bool wxStdToolbarInputHandler::HandleMouse(wxInputConsumer *consumer,
                 else
                     consumer->PerformAction( wxACTION_TOOLBAR_LEAVE, m_toolCapture->GetId() );
             }
                 else
                     consumer->PerformAction( wxACTION_TOOLBAR_LEAVE, m_toolCapture->GetId() );
             }
-            
+
             m_toolCapture = NULL;
             m_toolCapture = NULL;
-                
-            return TRUE;
+
+            return true;
         }
         //else: don't do anything special about the double click
     }
         }
         //else: don't do anything special about the double click
     }
@@ -795,7 +795,7 @@ bool wxStdToolbarInputHandler::HandleMouseMove(wxInputConsumer *consumer,
     if ( !wxStdInputHandler::HandleMouseMove(consumer, event) )
     {
         wxToolBar *tbar = wxStaticCast(consumer->GetInputWindow(), wxToolBar);
     if ( !wxStdInputHandler::HandleMouseMove(consumer, event) )
     {
         wxToolBar *tbar = wxStaticCast(consumer->GetInputWindow(), wxToolBar);
-        
+
         wxToolBarTool *tool;
         if ( event.Leaving() )
         {
         wxToolBarTool *tool;
         if ( event.Leaving() )
         {
@@ -807,59 +807,59 @@ bool wxStdToolbarInputHandler::HandleMouseMove(wxInputConsumer *consumer,
         {
             tool = (wxToolBarTool*) tbar->FindToolForPosition( event.GetX(), event.GetY() );
         }
         {
             tool = (wxToolBarTool*) tbar->FindToolForPosition( event.GetX(), event.GetY() );
         }
-        
+
         if (m_toolCapture)
         {
             // During capture we only care of the captured tool
             if (tool && (tool != m_toolCapture))
                 tool = NULL;
         if (m_toolCapture)
         {
             // During capture we only care of the captured tool
             if (tool && (tool != m_toolCapture))
                 tool = NULL;
-                
+
             if (tool == m_toolLast)
             if (tool == m_toolLast)
-                return TRUE;
-                
+                return true;
+
             if (tool)
                 consumer->PerformAction( wxACTION_BUTTON_PRESS, m_toolCapture->GetId() );
             else
                 consumer->PerformAction( wxACTION_BUTTON_RELEASE, m_toolCapture->GetId() );
             if (tool)
                 consumer->PerformAction( wxACTION_BUTTON_PRESS, m_toolCapture->GetId() );
             else
                 consumer->PerformAction( wxACTION_BUTTON_RELEASE, m_toolCapture->GetId() );
-                
+
             m_toolLast = tool;
         }
         else
         {
             if (tool == m_toolLast)
             m_toolLast = tool;
         }
         else
         {
             if (tool == m_toolLast)
-               return TRUE;
-               
+               return true;
+
             if (m_toolLast)
             {
                 // Leave old tool if any
                 consumer->PerformAction( wxACTION_TOOLBAR_LEAVE, m_toolLast->GetId() );
             }
             if (m_toolLast)
             {
                 // Leave old tool if any
                 consumer->PerformAction( wxACTION_TOOLBAR_LEAVE, m_toolLast->GetId() );
             }
-            
+
             if (tool)
             {
                 // Enter new tool if any
                 consumer->PerformAction( wxACTION_TOOLBAR_ENTER, tool->GetId() );
             }
             if (tool)
             {
                 // Enter new tool if any
                 consumer->PerformAction( wxACTION_TOOLBAR_ENTER, tool->GetId() );
             }
-        
+
             m_toolLast = tool;
         }
             m_toolLast = tool;
         }
-        
-        return TRUE;
+
+        return true;
     }
 
     }
 
-    return FALSE;
+    return false;
 }
 
 bool wxStdToolbarInputHandler::HandleFocus(wxInputConsumer *consumer,
                                            const wxFocusEvent& WXUNUSED(event))
 {
 }
 
 bool wxStdToolbarInputHandler::HandleFocus(wxInputConsumer *consumer,
                                            const wxFocusEvent& WXUNUSED(event))
 {
-    if ( m_toolCapture ) 
+    if ( m_toolCapture )
     {
         // We shouldn't be left with a highlighted button
         consumer->PerformAction( wxACTION_TOOLBAR_LEAVE, m_toolCapture->GetId() );
     }
 
     {
         // We shouldn't be left with a highlighted button
         consumer->PerformAction( wxACTION_TOOLBAR_LEAVE, m_toolCapture->GetId() );
     }
 
-    return TRUE;
+    return true;
 }
 
 bool wxStdToolbarInputHandler::HandleActivation(wxInputConsumer *consumer,
 }
 
 bool wxStdToolbarInputHandler::HandleActivation(wxInputConsumer *consumer,
@@ -871,7 +871,7 @@ bool wxStdToolbarInputHandler::HandleActivation(wxInputConsumer *consumer,
         consumer->PerformAction( wxACTION_TOOLBAR_LEAVE, m_toolCapture->GetId() );
     }
 
         consumer->PerformAction( wxACTION_TOOLBAR_LEAVE, m_toolCapture->GetId() );
     }
 
-    return TRUE;
+    return true;
 }
 
 #endif // wxUSE_TOOLBAR
 }
 
 #endif // wxUSE_TOOLBAR