]> git.saurik.com Git - wxWidgets.git/blobdiff - src/os2/toolbar.cpp
Centre wxSlider value correctly when wxSL_MIN_MAX_LABELS is not used.
[wxWidgets.git] / src / os2 / toolbar.cpp
index eb6283de0a498b5c2dd35987fca248ed66cfd790..b2fa1e48401660a2e94dd7e86c556fd60d27e20d 100644 (file)
@@ -26,6 +26,7 @@
 #endif
 
 #include "wx/tooltip.h"
 #endif
 
 #include "wx/tooltip.h"
+#include "wx/os2/dcclient.h"
 
 bool wxToolBar::m_bInitialized = false;
 
 
 bool wxToolBar::m_bInitialized = false;
 
@@ -60,8 +61,10 @@ public:
 
     inline wxToolBarTool( wxToolBar* pTbar
                          ,wxControl* pControl
 
     inline wxToolBarTool( wxToolBar* pTbar
                          ,wxControl* pControl
+                         ,const wxString& label
                         ) : wxToolBarToolBase( pTbar
                                               ,pControl
                         ) : wxToolBarToolBase( pTbar
                                               ,pControl
+                                              ,label
                                              )
     {
     }
                                              )
     {
     }
@@ -128,10 +131,12 @@ wxToolBarToolBase* wxToolBar::CreateTool(
 
 wxToolBarToolBase *wxToolBar::CreateTool(
   wxControl*                        pControl
 
 wxToolBarToolBase *wxToolBar::CreateTool(
   wxControl*                        pControl
+, const wxString&                   label
 )
 {
     return new wxToolBarTool( this
                              ,pControl
 )
 {
     return new wxToolBarTool( this
                              ,pControl
+                             ,label
                             );
 } // end of wxToolBarSimple::CreateTool
 
                             );
 } // end of wxToolBarSimple::CreateTool
 
@@ -333,7 +338,7 @@ bool wxToolBar::Create( wxWindow* pParent,
     SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_MENUBAR));
     SetFont(*wxSMALL_FONT);
 
     SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_MENUBAR));
     SetFont(*wxSMALL_FONT);
 
-    if (GetWindowStyleFlag() & wxTB_VERTICAL)
+    if (GetWindowStyleFlag() & (wxTB_LEFT | wxTB_RIGHT))
     {
         m_vLastX = 7;
         m_vLastY = 3;
     {
         m_vLastX = 7;
         m_vLastY = 3;
@@ -375,7 +380,7 @@ bool wxToolBar::Create( wxWindow* pParent,
     int                             nWidth  = rSize.x;
     int                             nHeight = rSize.y;
 
     int                             nWidth  = rSize.x;
     int                             nHeight = rSize.y;
 
-    if (lStyle & wxTB_HORIZONTAL)
+    if (lStyle & (wxTB_TOP | wxTB_BOTTOM))
     {
         if (nWidth <= 0)
         {
     {
         if (nWidth <= 0)
         {
@@ -418,11 +423,7 @@ bool wxToolBar::Create( wxWindow* pParent,
 
 wxToolBar::~wxToolBar()
 {
 
 wxToolBar::~wxToolBar()
 {
-    if (m_pToolTip)
-    {
-        delete m_pToolTip;
-        m_pToolTip = NULL;
-    }
+    wxDELETE(m_pToolTip);
 } // end of wxToolBar::~wxToolBar
 
 bool wxToolBar::Realize()
 } // end of wxToolBar::~wxToolBar
 
 bool wxToolBar::Realize()
@@ -499,7 +500,7 @@ bool wxToolBar::Realize()
 
         if (pTool->IsSeparator())
         {
 
         if (pTool->IsSeparator())
         {
-            if (GetWindowStyleFlag() & wxTB_HORIZONTAL)
+            if (GetWindowStyleFlag() & (wxTB_TOP | wxTB_BOTTOM))
             {
                 pTool->m_vX = m_vLastX + nSeparatorSize;
                 pTool->m_vHeight = m_defaultHeight + m_vTextY;
             {
                 pTool->m_vX = m_vLastX + nSeparatorSize;
                 pTool->m_vHeight = m_defaultHeight + m_vTextY;
@@ -520,7 +521,7 @@ bool wxToolBar::Realize()
         }
         else if (pTool->IsButton())
         {
         }
         else if (pTool->IsButton())
         {
-            if (GetWindowStyleFlag() & wxTB_HORIZONTAL)
+            if (GetWindowStyleFlag() & (wxTB_TOP | wxTB_BOTTOM))
             {
                 if (m_nCurrentRowsOrColumns >= m_maxCols)
                 {
             {
                 if (m_nCurrentRowsOrColumns >= m_maxCols)
                 {
@@ -544,7 +545,7 @@ bool wxToolBar::Realize()
                     m_vLastY                = m_yMargin;
                 }
                 pTool->m_vX = m_vLastX + pTool->GetWidth();
                     m_vLastY                = m_yMargin;
                 }
                 pTool->m_vX = m_vLastX + pTool->GetWidth();
-                if (HasFlag(wxTB_TEXT) && !pTool->GetLabel().IsNull())
+                if ( HasFlag(wxTB_TEXT) && !pTool->GetLabel().empty() )
                     pTool->m_vY = m_vLastY + (nMaxToolHeight - m_vTextY) + m_toolPacking;
                 else
                     pTool->m_vY = m_vLastY + (nMaxToolHeight - (int)(pTool->GetHeight()/2));
                     pTool->m_vY = m_vLastY + (nMaxToolHeight - m_vTextY) + m_toolPacking;
                 else
                     pTool->m_vY = m_vLastY + (nMaxToolHeight - (int)(pTool->GetHeight()/2));
@@ -565,7 +566,7 @@ bool wxToolBar::Realize()
         node = node->GetNext();
     }
 
         node = node->GetNext();
     }
 
-    if ( GetWindowStyleFlag() & wxTB_HORIZONTAL )
+    if (GetWindowStyleFlag() & (wxTB_TOP | wxTB_BOTTOM))
         m_maxWidth += nMaxToolWidth;
     else
         m_maxHeight += nMaxToolHeight;
         m_maxWidth += nMaxToolWidth;
     else
         m_maxHeight += nMaxToolHeight;
@@ -597,7 +598,8 @@ void wxToolBar::OnPaint (
         return;
     nCount++;
 
         return;
     nCount++;
 
-    ::WinFillRect(vDc.GetHPS(), &vDc.m_vRclPaint, GetBackgroundColour().GetPixel());
+    wxPMDCImpl *impl = (wxPMDCImpl*) vDc.GetImpl();
+    ::WinFillRect(impl->GetHPS(), &impl->m_vRclPaint, GetBackgroundColour().GetPixel());
     for ( wxToolBarToolsList::compatibility_iterator node = m_tools.GetFirst();
           node;
           node = node->GetNext() )
     for ( wxToolBarToolsList::compatibility_iterator node = m_tools.GetFirst();
           node;
           node = node->GetNext() )
@@ -618,7 +620,7 @@ void wxToolBar::OnPaint (
             vDc.SetPen(vDarkGreyPen);
             if (HasFlag(wxTB_TEXT))
             {
             vDc.SetPen(vDarkGreyPen);
             if (HasFlag(wxTB_TEXT))
             {
-                if (HasFlag(wxTB_HORIZONTAL))
+                if (HasFlag(wxTB_TOP) || HasFlag(wxTB_BOTTOM))
                 {
                     nX = pTool->m_vX;
                     nY = pTool->m_vY - (m_vTextY - 6);
                 {
                     nX = pTool->m_vX;
                     nY = pTool->m_vY - (m_vTextY - 6);
@@ -635,7 +637,7 @@ void wxToolBar::OnPaint (
             {
                 nX = pTool->m_vX;
                 nY = pTool->m_vY;
             {
                 nX = pTool->m_vX;
                 nY = pTool->m_vY;
-                if (HasFlag(wxTB_HORIZONTAL))
+                if (HasFlag(wxTB_TOP) || HasFlag(wxTB_BOTTOM))
                     nHeight = pTool->GetHeight() - 2;
                 else
                 {
                     nHeight = pTool->GetHeight() - 2;
                 else
                 {
@@ -819,7 +821,7 @@ void wxToolBar::DrawTool( wxDC& rDc, wxToolBarToolBase* pToolBase )
 
     PrepareDC(rDc);
 
 
     PrepareDC(rDc);
 
-    if (!vBitmap.Ok())
+    if (!vBitmap.IsOk())
         return;
     if ((pMask = vBitmap.GetMask()) != NULL)
         if (pMask->GetMaskBitmap() != NULLHANDLE)
         return;
     if ((pMask = vBitmap.GetMask()) != NULL)
         if (pMask->GetMaskBitmap() != NULLHANDLE)
@@ -833,7 +835,7 @@ void wxToolBar::DrawTool( wxDC& rDc, wxToolBarToolBase* pToolBase )
             wxColour vColor(wxT("GREY"));
 
             rDc.SetTextForeground(vColor);
             wxColour vColor(wxT("GREY"));
 
             rDc.SetTextForeground(vColor);
-            if (!pTool->GetDisabledBitmap().Ok())
+            if (!pTool->GetDisabledBitmap().IsOk())
                 pTool->SetDisabledBitmap(wxDisableBitmap( vBitmap
                                                          ,(long)GetBackgroundColour().GetPixel()
                                                         ));
                 pTool->SetDisabledBitmap(wxDisableBitmap( vBitmap
                                                          ,(long)GetBackgroundColour().GetPixel()
                                                         ));
@@ -856,7 +858,7 @@ void wxToolBar::DrawTool( wxDC& rDc, wxToolBarToolBase* pToolBase )
         {
             RaiseTool(pTool);
         }
         {
             RaiseTool(pTool);
         }
-        if (HasFlag(wxTB_TEXT) && !pTool->GetLabel().IsNull())
+        if ( HasFlag(wxTB_TEXT) && !pTool->GetLabel().empty() )
         {
             wxCoord                 vX;
             wxCoord                 vY;
         {
             wxCoord                 vX;
             wxCoord                 vY;
@@ -873,7 +875,7 @@ void wxToolBar::DrawTool( wxDC& rDc, wxToolBarToolBase* pToolBase )
                 GetSize(&vX, &vY);
                 rDc.DrawText( pTool->GetLabel()
                              ,vLeft
                 GetSize(&vX, &vY);
                 rDc.DrawText( pTool->GetLabel()
                              ,vLeft
-                             ,vY - (m_vTextY - 2)
+                             ,vY - m_vTextY - 1
                             );
             }
             else  // normal tools
                             );
             }
             else  // normal tools
@@ -881,7 +883,7 @@ void wxToolBar::DrawTool( wxDC& rDc, wxToolBarToolBase* pToolBase )
                 vLeft += (wxCoord)((m_vTextX - vX)/2);
                 rDc.DrawText( pTool->GetLabel()
                              ,vLeft
                 vLeft += (wxCoord)((m_vTextX - vX)/2);
                 rDc.DrawText( pTool->GetLabel()
                              ,vLeft
-                             ,pTool->m_vY + m_vTextY + 4 // a bit of margin
+                             ,pTool->m_vY + m_vTextY - 1 // a bit of margin
                             );
             }
         }
                             );
             }
         }
@@ -892,7 +894,7 @@ void wxToolBar::DrawTool( wxDC& rDc, wxToolBarToolBase* pToolBase )
 
         LowerTool(pTool);
         rDc.SetTextForeground(vColor);
 
         LowerTool(pTool);
         rDc.SetTextForeground(vColor);
-        if (!pTool->GetDisabledBitmap().Ok())
+        if (!pTool->GetDisabledBitmap().IsOk())
             pTool->SetDisabledBitmap(wxDisableBitmap( vBitmap
                                                      ,(long)GetBackgroundColour().GetPixel()
                                                     ));
             pTool->SetDisabledBitmap(wxDisableBitmap( vBitmap
                                                      ,(long)GetBackgroundColour().GetPixel()
                                                     ));
@@ -901,7 +903,7 @@ void wxToolBar::DrawTool( wxDC& rDc, wxToolBarToolBase* pToolBase )
                        ,pTool->m_vY
                        ,bUseMask
                       );
                        ,pTool->m_vY
                        ,bUseMask
                       );
-        if (HasFlag(wxTB_TEXT) && !pTool->GetLabel().IsNull())
+        if ( HasFlag(wxTB_TEXT) && !pTool->GetLabel().empty() )
         {
             wxCoord                 vX;
             wxCoord                 vY;
         {
             wxCoord                 vX;
             wxCoord                 vY;
@@ -915,7 +917,7 @@ void wxToolBar::DrawTool( wxDC& rDc, wxToolBarToolBase* pToolBase )
             vLeft += (wxCoord)((m_vTextX - vX)/2);
             rDc.DrawText( pTool->GetLabel()
                          ,vLeft
             vLeft += (wxCoord)((m_vTextX - vX)/2);
             rDc.DrawText( pTool->GetLabel()
                          ,vLeft
-                         ,pTool->m_vY + m_vTextY + 4 // a bit of margin
+                         ,pTool->m_vY + m_vTextY - 1 // a bit of margin
                         );
         }
     }
                         );
         }
     }
@@ -929,7 +931,7 @@ void wxToolBar::SetRows(
   int                               nRows
 )
 {
   int                               nRows
 )
 {
-    wxCHECK_RET( nRows != 0, _T("max number of rows must be > 0") );
+    wxCHECK_RET( nRows != 0, wxT("max number of rows must be > 0") );
 
     m_maxCols = (GetToolsCount() + nRows - 1) / nRows;
     Refresh();
 
     m_maxCols = (GetToolsCount() + nRows - 1) / nRows;
     Refresh();
@@ -951,7 +953,7 @@ wxToolBarToolBase* wxToolBar::FindToolForPosition(
     {
         wxToolBarTool*              pTool = (wxToolBarTool *)node->GetData();
 
     {
         wxToolBarTool*              pTool = (wxToolBarTool *)node->GetData();
 
-        if (HasFlag(wxTB_TEXT) && !pTool->GetLabel().IsNull())
+        if ( HasFlag(wxTB_TEXT) && !pTool->GetLabel().empty() )
         {
             if ((vX >= (pTool->m_vX - ((wxCoord)(pTool->GetWidth()/2) - 2))) &&
                 (vY >= (pTool->m_vY - 2)) &&
         {
             if ((vX >= (pTool->m_vX - ((wxCoord)(pTool->GetWidth()/2) - 2))) &&
                 (vY >= (pTool->m_vY - 2)) &&
@@ -973,7 +975,7 @@ wxToolBarToolBase* wxToolBar::FindToolForPosition(
         }
         node = node->GetNext();
     }
         }
         node = node->GetNext();
     }
-    return (wxToolBarToolBase *)NULL;
+    return NULL;
 } // end of wxToolBar::FindToolForPosition
 
 // ----------------------------------------------------------------------------
 } // end of wxToolBar::FindToolForPosition
 
 // ----------------------------------------------------------------------------
@@ -1165,7 +1167,7 @@ void wxToolBar::RaiseTool ( wxToolBarToolBase* pToolBase,
 
 void wxToolBar::OnTimer ( wxTimerEvent& rEvent )
 {
 
 void wxToolBar::OnTimer ( wxTimerEvent& rEvent )
 {
-    if (rEvent.GetId() == m_vToolTimer.GetTimerId())
+    if (rEvent.GetId() == m_vToolTimer.GetId())
     {
         wxPoint vPos( m_vXMouse, m_vYMouse );
 
     {
         wxPoint vPos( m_vXMouse, m_vYMouse );
 
@@ -1173,7 +1175,7 @@ void wxToolBar::OnTimer ( wxTimerEvent& rEvent )
         m_vToolTimer.Stop();
         m_vToolExpTimer.Start(4000L, TRUE);
     }
         m_vToolTimer.Stop();
         m_vToolExpTimer.Start(4000L, TRUE);
     }
-    else if (rEvent.GetId() == m_vToolExpTimer.GetTimerId())
+    else if (rEvent.GetId() == m_vToolExpTimer.GetId())
     {
         m_pToolTip->HideToolTipWindow();
         GetParent()->Refresh();
     {
         m_pToolTip->HideToolTipWindow();
         GetParent()->Refresh();