]> git.saurik.com Git - wxWidgets.git/blobdiff - src/aui/auibar.cpp
fix ownerdrawn button label drawing in ODS_NOACCEL case (#3519)
[wxWidgets.git] / src / aui / auibar.cpp
index a5f6cdee78ed54cd73b303126f93cb8f2ff58e0f..da42c3bc4269d261471d523f9f6a893569e4fa49 100644 (file)
@@ -37,7 +37,9 @@
 #include "wx/aui/framemanager.h"
 
 #ifdef __WXMAC__
-#include "wx/mac/carbon/private.h"
+#include "wx/osx/private.h"
+// for themeing support
+#include <Carbon/Carbon.h>
 #endif
 
 #include "wx/arrimpl.cpp"
@@ -69,13 +71,13 @@ const int BUTTON_DROPDOWN_WIDTH = 10;
 wxBitmap wxAuiBitmapFromBits(const unsigned char bits[], int w, int h,
                              const wxColour& color);
 
-double wxAuiBlendColour(double fg, double bg, double alpha);
+unsigned char wxAuiBlendColour(unsigned char fg, unsigned char bg, double alpha);
 wxColor wxAuiStepColour(const wxColor& c, int percent);
 
 static wxBitmap MakeDisabledBitmap(wxBitmap& bmp)
 {
     wxImage image = bmp.ConvertToImage();
-    
+
     int mr, mg, mb;
     mr = image.GetMaskRed();
     mg = image.GetMaskGreen();
@@ -98,9 +100,9 @@ static wxBitmap MakeDisabledBitmap(wxBitmap& bmp)
             if (has_mask && *r == mr && *g == mg && *b == mb)
                 continue;
 
-            *r = (unsigned char)wxAuiBlendColour((double)*r, 255.0, 0.4);
-            *g = (unsigned char)wxAuiBlendColour((double)*g, 255.0, 0.4);
-            *b = (unsigned char)wxAuiBlendColour((double)*b, 255.0, 0.4);
+            *r = wxAuiBlendColour(*r, 255, 0.4);
+            *g = wxAuiBlendColour(*g, 255, 0.4);
+            *b = wxAuiBlendColour(*b, 255, 0.4);
         }
     }
 
@@ -110,24 +112,22 @@ static wxBitmap MakeDisabledBitmap(wxBitmap& bmp)
 static wxColor GetBaseColor()
 {
 
-#ifdef __WXMAC__
-    wxBrush toolbarbrush;
-    toolbarbrush.MacSetTheme( kThemeBrushToolbarBackground );
-    wxColor base_color = toolbarbrush.GetColour();
+#if defined( __WXMAC__ ) && wxOSX_USE_COCOA_OR_CARBON
+    wxColor base_colour = wxColour( wxMacCreateCGColorFromHITheme(kThemeBrushToolbarBackground));
 #else
-    wxColor base_color = wxSystemSettings::GetColour(wxSYS_COLOUR_3DFACE);
+    wxColor base_colour = wxSystemSettings::GetColour(wxSYS_COLOUR_3DFACE);
 #endif
 
     // the base_colour is too pale to use as our base colour,
     // so darken it a bit --
-    if ((255-base_color.Red()) +
-        (255-base_color.Green()) +
-        (255-base_color.Blue()) < 60)
+    if ((255-base_colour.Red()) +
+        (255-base_colour.Green()) +
+        (255-base_colour.Blue()) < 60)
     {
-        base_color = wxAuiStepColour(base_color, 92);
+        base_colour = wxAuiStepColour(base_colour, 92);
     }
 
-    return base_color;
+    return base_colour;
 }
 
 
@@ -159,10 +159,11 @@ private:
 
 
 
-const wxColour DISABLED_TEXT_COLOR = wxColour(wxAuiBlendColour(0,255,0.4),
-                                              wxAuiBlendColour(0,255,0.4),
-                                              wxAuiBlendColour(0,255,0.4));
-                                              
+static const unsigned char
+    DISABLED_TEXT_GREY_HUE = wxAuiBlendColour(0, 255, 0.4);
+const wxColour DISABLED_TEXT_COLOR(DISABLED_TEXT_GREY_HUE,
+                                   DISABLED_TEXT_GREY_HUE,
+                                   DISABLED_TEXT_GREY_HUE);
 
 wxAuiDefaultToolBarArt::wxAuiDefaultToolBarArt()
 {
@@ -171,7 +172,7 @@ wxAuiDefaultToolBarArt::wxAuiDefaultToolBarArt()
     m_flags = 0;
     m_text_orientation = wxAUI_TBTOOL_TEXT_BOTTOM;
     m_highlight_colour = wxSystemSettings::GetColour(wxSYS_COLOUR_HIGHLIGHT);
-    
+
     m_separator_size = 7;
     m_gripper_size = 7;
     m_overflow_size = 16;
@@ -185,10 +186,10 @@ wxAuiDefaultToolBarArt::wxAuiDefaultToolBarArt()
     m_gripper_pen1 = wxPen(darker5_colour);
     m_gripper_pen2 = wxPen(darker3_colour);
     m_gripper_pen3 = *wxWHITE_PEN;
-    
+
     static unsigned char button_dropdown_bits[] = { 0xe0, 0xf1, 0xfb };
     static unsigned char overflow_bits[] = { 0x80, 0xff, 0x80, 0xc1, 0xe3, 0xf7 };
-       
+
     m_button_dropdown_bmp = wxAuiBitmapFromBits(button_dropdown_bits, 5, 3,
                                                 *wxBLACK);
     m_disabled_button_dropdown_bmp = wxAuiBitmapFromBits(
@@ -260,7 +261,7 @@ void wxAuiDefaultToolBarArt::DrawLabel(
     int text_x, text_y;
     text_x = rect.x + 1;
     text_y = rect.y + (rect.height-text_height)/2;
-    dc.DrawText(item.label, text_x, text_y);
+    dc.DrawText(item.GetLabel(), text_x, text_y);
     dc.DestroyClippingRegion();
 }
 
@@ -272,70 +273,70 @@ void wxAuiDefaultToolBarArt::DrawButton(
                                     const wxRect& rect)
 {
     int text_width = 0, text_height = 0;
-    
+
     if (m_flags & wxAUI_TB_TEXT)
     {
         dc.SetFont(m_font);
-        
+
         int tx, ty;
 
         dc.GetTextExtent(wxT("ABCDHgj"), &tx, &text_height);
         text_width = 0;
-        dc.GetTextExtent(item.label, &text_width, &ty);
+        dc.GetTextExtent(item.GetLabel(), &text_width, &ty);
     }
 
     int bmp_x = 0, bmp_y = 0;
     int text_x = 0, text_y = 0;
-    
+
     if (m_text_orientation == wxAUI_TBTOOL_TEXT_BOTTOM)
     {
         bmp_x = rect.x +
                 (rect.width/2) -
-                (item.bitmap.GetWidth()/2);
-                
+                (item.GetBitmap().GetWidth()/2);
+
         bmp_y = rect.y +
                 ((rect.height-text_height)/2) -
-                (item.bitmap.GetHeight()/2);
-                
+                (item.GetBitmap().GetHeight()/2);
+
         text_x = rect.x + (rect.width/2) - (text_width/2) + 1;
         text_y = rect.y + rect.height - text_height - 1;
     }
-     else if (m_text_orientation == wxAUI_TBTOOL_TEXT_RIGHT)
+    else if (m_text_orientation == wxAUI_TBTOOL_TEXT_RIGHT)
     {
         bmp_x = rect.x + 3;
-                
+
         bmp_y = rect.y +
                 (rect.height/2) -
-                (item.bitmap.GetHeight()/2);
-                
-        text_x = bmp_x + 3 + item.bitmap.GetWidth();
+                (item.GetBitmap().GetHeight()/2);
+
+        text_x = bmp_x + 3 + item.GetBitmap().GetWidth();
         text_y = rect.y +
                  (rect.height/2) -
                  (text_height/2);
     }
 
 
-    if (!(item.state & wxAUI_BUTTON_STATE_DISABLED))
+    if (!(item.GetState() & wxAUI_BUTTON_STATE_DISABLED))
     {
-        if (item.state & wxAUI_BUTTON_STATE_PRESSED)
+        if (item.GetState() & wxAUI_BUTTON_STATE_PRESSED)
         {
             dc.SetPen(wxPen(m_highlight_colour));
             dc.SetBrush(wxBrush(wxAuiStepColour(m_highlight_colour, 150)));
             dc.DrawRectangle(rect);
         }
-         else if ((item.state & wxAUI_BUTTON_STATE_HOVER) || item.sticky == true)
+        else if ((item.GetState() & wxAUI_BUTTON_STATE_HOVER) || item.IsSticky())
         {
             dc.SetPen(wxPen(m_highlight_colour));
             dc.SetBrush(wxBrush(wxAuiStepColour(m_highlight_colour, 170)));
-            
+
             // draw an even lighter background for checked item hovers (since
             // the hover background is the same color as the check background)
-            if (item.state & wxAUI_BUTTON_STATE_CHECKED)
+            if (item.GetState() & wxAUI_BUTTON_STATE_CHECKED)
                 dc.SetBrush(wxBrush(wxAuiStepColour(m_highlight_colour, 180)));
-            
+
             dc.DrawRectangle(rect);
         }
-         else if (item.state & wxAUI_BUTTON_STATE_CHECKED)
+        else if (item.GetState() & wxAUI_BUTTON_STATE_CHECKED)
         {
             // it's important to put this code in an else statment after the
             // hover, otherwise hovers won't draw properly for checked items
@@ -346,24 +347,24 @@ void wxAuiDefaultToolBarArt::DrawButton(
     }
 
     wxBitmap bmp;
-    if (item.state & wxAUI_BUTTON_STATE_DISABLED)
-        bmp = item.disabled_bitmap;
-         else
-        bmp = item.bitmap;
-    
+    if (item.GetState() & wxAUI_BUTTON_STATE_DISABLED)
+        bmp = item.GetDisabledBitmap();
+    else
+        bmp = item.GetBitmap();
+
     if (!bmp.IsOk())
         return;
-        
+
     dc.DrawBitmap(bmp, bmp_x, bmp_y, true);
 
     // set the item's text color based on if it is disabled
     dc.SetTextForeground(*wxBLACK);
-    if (item.state & wxAUI_BUTTON_STATE_DISABLED)
+    if (item.GetState() & wxAUI_BUTTON_STATE_DISABLED)
         dc.SetTextForeground(DISABLED_TEXT_COLOR);
-        
-    if ((m_flags & wxAUI_TB_TEXT) && item.label.Length() > 0)
+
+    if ( (m_flags & wxAUI_TB_TEXT) && !item.GetLabel().empty() )
     {
-        dc.DrawText(item.label, text_x, text_y);
+        dc.DrawText(item.GetLabel(), text_x, text_y);
     }
 }
 
@@ -376,7 +377,7 @@ void wxAuiDefaultToolBarArt::DrawDropDownButton(
 {
     int text_width = 0, text_height = 0, text_x = 0, text_y = 0;
     int bmp_x = 0, bmp_y = 0, dropbmp_x = 0, dropbmp_y = 0;
-    
+
     wxRect button_rect = wxRect(rect.x,
                                 rect.y,
                                 rect.width-BUTTON_DROPDOWN_WIDTH,
@@ -385,67 +386,67 @@ void wxAuiDefaultToolBarArt::DrawDropDownButton(
                                   rect.y,
                                   BUTTON_DROPDOWN_WIDTH+1,
                                   rect.height);
-    
+
     if (m_flags & wxAUI_TB_TEXT)
     {
         dc.SetFont(m_font);
-        
+
         int tx, ty;
         if (m_flags & wxAUI_TB_TEXT)
         {
             dc.GetTextExtent(wxT("ABCDHgj"), &tx, &text_height);
             text_width = 0;
-        }   
-    
-        dc.GetTextExtent(item.label, &text_width, &ty);
+        }
+
+        dc.GetTextExtent(item.GetLabel(), &text_width, &ty);
     }
 
 
-    
+
     dropbmp_x = dropdown_rect.x +
                 (dropdown_rect.width/2) -
                 (m_button_dropdown_bmp.GetWidth()/2);
     dropbmp_y = dropdown_rect.y +
                 (dropdown_rect.height/2) -
                 (m_button_dropdown_bmp.GetHeight()/2);
-    
-    
+
+
     if (m_text_orientation == wxAUI_TBTOOL_TEXT_BOTTOM)
     {
         bmp_x = button_rect.x +
                 (button_rect.width/2) -
-                (item.bitmap.GetWidth()/2);
+                (item.GetBitmap().GetWidth()/2);
         bmp_y = button_rect.y +
                 ((button_rect.height-text_height)/2) -
-                (item.bitmap.GetHeight()/2);
-    
+                (item.GetBitmap().GetHeight()/2);
+
         text_x = rect.x + (rect.width/2) - (text_width/2) + 1;
         text_y = rect.y + rect.height - text_height - 1;
     }
-     else if (m_text_orientation == wxAUI_TBTOOL_TEXT_RIGHT)
+    else if (m_text_orientation == wxAUI_TBTOOL_TEXT_RIGHT)
     {
         bmp_x = rect.x + 3;
-                
+
         bmp_y = rect.y +
                 (rect.height/2) -
-                (item.bitmap.GetHeight()/2);
-                
-        text_x = bmp_x + 3 + item.bitmap.GetWidth();
+                (item.GetBitmap().GetHeight()/2);
+
+        text_x = bmp_x + 3 + item.GetBitmap().GetWidth();
         text_y = rect.y +
                  (rect.height/2) -
                  (text_height/2);
     }
-    
-    
-    if (item.state & wxAUI_BUTTON_STATE_PRESSED)
+
+
+    if (item.GetState() & wxAUI_BUTTON_STATE_PRESSED)
     {
         dc.SetPen(wxPen(m_highlight_colour));
         dc.SetBrush(wxBrush(wxAuiStepColour(m_highlight_colour, 140)));
         dc.DrawRectangle(button_rect);
         dc.DrawRectangle(dropdown_rect);
     }
-     else if (item.state & wxAUI_BUTTON_STATE_HOVER ||
-              item.sticky == true)
+    else if (item.GetState() & wxAUI_BUTTON_STATE_HOVER ||
+             item.IsSticky())
     {
         dc.SetPen(wxPen(m_highlight_colour));
         dc.SetBrush(wxBrush(wxAuiStepColour(m_highlight_colour, 170)));
@@ -455,31 +456,31 @@ void wxAuiDefaultToolBarArt::DrawDropDownButton(
 
     wxBitmap bmp;
     wxBitmap dropbmp;
-    if (item.state & wxAUI_BUTTON_STATE_DISABLED)
+    if (item.GetState() & wxAUI_BUTTON_STATE_DISABLED)
     {
-        bmp = item.disabled_bitmap;
+        bmp = item.GetDisabledBitmap();
         dropbmp = m_disabled_button_dropdown_bmp;
     }
-     else
+    else
     {
-        bmp = item.bitmap;
+        bmp = item.GetBitmap();
         dropbmp = m_button_dropdown_bmp;
     }
-    
+
     if (!bmp.IsOk())
         return;
-        
+
     dc.DrawBitmap(bmp, bmp_x, bmp_y, true);
     dc.DrawBitmap(dropbmp, dropbmp_x, dropbmp_y, true);
 
     // set the item's text color based on if it is disabled
     dc.SetTextForeground(*wxBLACK);
-    if (item.state & wxAUI_BUTTON_STATE_DISABLED)
+    if (item.GetState() & wxAUI_BUTTON_STATE_DISABLED)
         dc.SetTextForeground(DISABLED_TEXT_COLOR);
-        
-    if ((m_flags & wxAUI_TB_TEXT) && item.label.Length() > 0)
+
+    if ( (m_flags & wxAUI_TB_TEXT) && !item.GetLabel().empty() )
     {
-        dc.DrawText(item.label, text_x, text_y);
+        dc.DrawText(item.GetLabel(), text_x, text_y);
     }
 }
 
@@ -494,34 +495,34 @@ void wxAuiDefaultToolBarArt::DrawControlLabel(
 
     if (m_text_orientation != wxAUI_TBTOOL_TEXT_BOTTOM)
         return;
-        
+
     int text_x = 0, text_y = 0;
     int text_width = 0, text_height = 0;
 
     dc.SetFont(m_font);
-    
+
     int tx, ty;
     if (m_flags & wxAUI_TB_TEXT)
     {
         dc.GetTextExtent(wxT("ABCDHgj"), &tx, &text_height);
         text_width = 0;
-    }   
-    
-    dc.GetTextExtent(item.label, &text_width, &ty);
-    
+    }
+
+    dc.GetTextExtent(item.GetLabel(), &text_width, &ty);
+
     // don't draw the label if it is wider than the item width
     if (text_width > rect.width)
         return;
-    
+
     // set the label's text color
     dc.SetTextForeground(*wxBLACK);
-        
+
     text_x = rect.x + (rect.width/2) - (text_width/2) + 1;
     text_y = rect.y + rect.height - text_height - 1;
-    
-    if ((m_flags & wxAUI_TB_TEXT) && item.label.Length() > 0)
+
+    if ( (m_flags & wxAUI_TB_TEXT) && !item.GetLabel().empty() )
     {
-        dc.DrawText(item.label, text_x, text_y);
+        dc.DrawText(item.GetLabel(), text_x, text_y);
     }
 }
 
@@ -537,8 +538,8 @@ wxSize wxAuiDefaultToolBarArt::GetLabelSize(
     dc.GetTextExtent(wxT("ABCDHgj"), &width, &height);
 
     // get item's width
-    width = item.min_size.GetWidth();
-    
+    width = item.GetMinSize().GetWidth();
+
     return wxSize(width, height);
 }
 
@@ -547,46 +548,47 @@ wxSize wxAuiDefaultToolBarArt::GetToolSize(
                                         wxWindow* WXUNUSED(wnd),
                                         const wxAuiToolBarItem& item)
 {
-    if (!item.bitmap.IsOk() && !(m_flags & wxAUI_TB_TEXT))
+    if (!item.GetBitmap().IsOk() && !(m_flags & wxAUI_TB_TEXT))
         return wxSize(16,16);
-        
-    int width = item.bitmap.GetWidth();
-    int height = item.bitmap.GetHeight();
-    
+
+    int width = item.GetBitmap().GetWidth();
+    int height = item.GetBitmap().GetHeight();
+
     if (m_flags & wxAUI_TB_TEXT)
     {
         dc.SetFont(m_font);
         int tx, ty;
-        
+
         if (m_text_orientation == wxAUI_TBTOOL_TEXT_BOTTOM)
         {
             dc.GetTextExtent(wxT("ABCDHgj"), &tx, &ty);
             height += ty;
-            
-            if (item.label.Length() > 0)
+
+            if ( !item.GetLabel().empty() )
             {
-                dc.GetTextExtent(item.label, &tx, &ty);
+                dc.GetTextExtent(item.GetLabel(), &tx, &ty);
                 width = wxMax(width, tx+6);
             }
         }
-         else if (m_text_orientation == wxAUI_TBTOOL_TEXT_RIGHT && item.label.Length() > 0)
+        else if ( m_text_orientation == wxAUI_TBTOOL_TEXT_RIGHT &&
+                  !item.GetLabel().empty() )
         {
             width += 3; // space between left border and bitmap
             width += 3; // space between bitmap and text
-            
-            if (item.label.Length() > 0)
+
+            if ( !item.GetLabel().empty() )
             {
-                dc.GetTextExtent(item.label, &tx, &ty);
+                dc.GetTextExtent(item.GetLabel(), &tx, &ty);
                 width += tx;
                 height = wxMax(height, ty);
             }
         }
-    }    
+    }
 
     // if the tool has a dropdown button, add it to the width
-    if (item.dropdown == true)
+    if (item.HasDropDown())
         width += (BUTTON_DROPDOWN_WIDTH+4);
-    
+
     return wxSize(width, height);
 }
 
@@ -598,9 +600,9 @@ void wxAuiDefaultToolBarArt::DrawSeparator(
     bool horizontal = true;
     if (m_flags & wxAUI_TB_VERTICAL)
         horizontal = false;
-        
+
     wxRect rect = _rect;
-    
+
     if (horizontal)
     {
         rect.x += (rect.width/2);
@@ -609,7 +611,7 @@ void wxAuiDefaultToolBarArt::DrawSeparator(
         rect.y += (rect.height/2) - (new_height/2);
         rect.height = new_height;
     }
-     else
+    else
     {
         rect.y += (rect.height/2);
         rect.height = 1;
@@ -617,12 +619,12 @@ void wxAuiDefaultToolBarArt::DrawSeparator(
         rect.x += (rect.width/2) - (new_width/2);
         rect.width = new_width;
     }
-    
+
     wxColour start_colour = wxAuiStepColour(m_base_colour, 80);
     wxColour end_colour = wxAuiStepColour(m_base_colour, 80);
     dc.GradientFillLinear(rect, start_colour, end_colour, horizontal ? wxSOUTH : wxEAST);
 }
-                
+
 void wxAuiDefaultToolBarArt::DrawGripper(wxDC& dc,
                                     wxWindow* WXUNUSED(wnd),
                                     const wxRect& rect)
@@ -631,7 +633,7 @@ void wxAuiDefaultToolBarArt::DrawGripper(wxDC& dc,
     while (1)
     {
         int x, y;
-        
+
         if (m_flags & wxAUI_TB_VERTICAL)
         {
             x = rect.x + (i*4) + 5;
@@ -639,14 +641,14 @@ void wxAuiDefaultToolBarArt::DrawGripper(wxDC& dc,
             if (x > rect.GetWidth()-5)
                 break;
         }
-         else
+        else
         {
             x = rect.x + 3;
             y = rect.y + (i*4) + 5;
             if (y > rect.GetHeight()-5)
                 break;
         }
-        
+
         dc.SetPen(m_gripper_pen1);
         dc.DrawPoint(x, y);
         dc.SetPen(m_gripper_pen2);
@@ -661,7 +663,7 @@ void wxAuiDefaultToolBarArt::DrawGripper(wxDC& dc,
     }
 
 }
-                
+
 void wxAuiDefaultToolBarArt::DrawOverflowButton(wxDC& dc,
                                           wxWindow* wnd,
                                           const wxRect& rect,
@@ -672,7 +674,7 @@ void wxAuiDefaultToolBarArt::DrawOverflowButton(wxDC& dc,
     {
         wxRect cli_rect = wnd->GetClientRect();
         wxColor light_gray_bg = wxAuiStepColour(m_highlight_colour, 170);
-        
+
         if (m_flags & wxAUI_TB_VERTICAL)
         {
             dc.SetPen(wxPen(m_highlight_colour));
@@ -723,32 +725,28 @@ int wxAuiDefaultToolBarArt::ShowDropDown(wxWindow* wnd,
     wxMenu menuPopup;
 
     size_t items_added = 0;
-    
+
     size_t i, count = items.GetCount();
     for (i = 0; i < count; ++i)
     {
         wxAuiToolBarItem& item = items.Item(i);
-        
-        if (item.kind == wxITEM_NORMAL)
+
+        if (item.GetKind() == wxITEM_NORMAL)
         {
-            wxString text = item.short_help;
+            wxString text = item.GetShortHelp();
             if (text.empty())
-                text = item.label;
-                
+                text = item.GetLabel();
+
             if (text.empty())
                 text = wxT(" ");
-                
-            #ifdef __WXMAC__
-            wxMenuItem* m =  new wxMenuItem(&menuPopup, item.id, text, item.short_help);
-            #else
-            wxMenuItem* m =  new wxMenuItem(&menuPopup, item.id, text, item.short_help, false);
-            #endif
-
-            m->SetBitmap(item.bitmap);
+
+            wxMenuItem* m =  new wxMenuItem(&menuPopup, item.GetId(), text, item.GetShortHelp());
+
+            m->SetBitmap(item.GetBitmap());
             menuPopup.Append(m);
             items_added++;
         }
-         else if (item.kind == wxITEM_SEPARATOR)
+        else if (item.GetKind() == wxITEM_SEPARATOR)
         {
             if (items_added > 0)
                 menuPopup.AppendSeparator();
@@ -828,7 +826,7 @@ wxAuiToolBar::wxAuiToolBar(wxWindow* parent,
     SetFont(*wxNORMAL_FONT);
     m_art->SetFlags((unsigned int)m_style);
     SetExtraStyle(wxWS_EX_PROCESS_IDLE);
-    if (style & wxAUI_TB_HORZ_TEXT)
+    if (style & wxAUI_TB_HORZ_LAYOUT)
         SetToolTextOrientation(wxAUI_TBTOOL_TEXT_RIGHT);
 }
 
@@ -844,26 +842,26 @@ void wxAuiToolBar::SetWindowStyleFlag(long style)
     wxControl::SetWindowStyleFlag(style);
 
     m_style = style;
-    
+
     if (m_art)
     {
         m_art->SetFlags((unsigned int)m_style);
     }
-    
+
     if (m_style & wxAUI_TB_GRIPPER)
         m_gripper_visible = true;
-         else
+    else
         m_gripper_visible = false;
 
 
     if (m_style & wxAUI_TB_OVERFLOW)
         m_overflow_visible = true;
-         else
+    else
         m_overflow_visible = false;
-    
-    if (style & wxAUI_TB_HORZ_TEXT)
+
+    if (style & wxAUI_TB_HORZ_LAYOUT)
         SetToolTextOrientation(wxAUI_TBTOOL_TEXT_RIGHT);
-         else
+    else
         SetToolTextOrientation(wxAUI_TBTOOL_TEXT_BOTTOM);
 }
 
@@ -871,9 +869,9 @@ void wxAuiToolBar::SetWindowStyleFlag(long style)
 void wxAuiToolBar::SetArtProvider(wxAuiToolBarArt* art)
 {
     delete m_art;
-    
+
     m_art = art;
-    
+
     if (m_art)
     {
         m_art->SetFlags((unsigned int)m_style);
@@ -911,8 +909,8 @@ void wxAuiToolBar::AddTool(int tool_id,
                            const wxBitmap& bitmap,
                            const wxBitmap& disabled_bitmap,
                            wxItemKind kind,
-                           const wxString& WXUNUSED(short_help_string),
-                           const wxString& WXUNUSED(long_help_string),
+                           const wxString& short_help_string,
+                           const wxString& long_help_string,
                            wxObject* WXUNUSED(client_data))
 {
     wxAuiToolBarItem item;
@@ -920,9 +918,11 @@ void wxAuiToolBar::AddTool(int tool_id,
     item.label = label;
     item.bitmap = bitmap;
     item.disabled_bitmap = disabled_bitmap;
+    item.short_help = short_help_string;
+    item.long_help = long_help_string;
     item.active = true;
     item.dropdown = false;
-    item.space_pixels = 0;
+    item.spacer_pixels = 0;
     item.id = tool_id;
     item.state = 0;
     item.proportion = 0;
@@ -931,7 +931,7 @@ void wxAuiToolBar::AddTool(int tool_id,
     item.min_size = wxDefaultSize;
     item.user_data = 0;
     item.sticky = false;
-    
+
     if (!item.disabled_bitmap.IsOk())
     {
         // no disabled bitmap specified, we need to make one
@@ -943,7 +943,7 @@ void wxAuiToolBar::AddTool(int tool_id,
             item.disabled_bitmap = MakeDisabledBitmap(item.bitmap);
         }
     }
-    
+
     m_items.Add(item);
 }
 
@@ -957,7 +957,7 @@ void wxAuiToolBar::AddControl(wxControl* control,
     item.disabled_bitmap = wxNullBitmap;
     item.active = true;
     item.dropdown = false;
-    item.space_pixels = 0;
+    item.spacer_pixels = 0;
     item.id = control->GetId();
     item.state = 0;
     item.proportion = 0;
@@ -977,7 +977,7 @@ void wxAuiToolBar::AddLabel(int tool_id,
     wxSize min_size = wxDefaultSize;
     if (width != -1)
         min_size.x = width;
-    
+
     wxAuiToolBarItem item;
     item.window = NULL;
     item.label = label;
@@ -985,7 +985,7 @@ void wxAuiToolBar::AddLabel(int tool_id,
     item.disabled_bitmap = wxNullBitmap;
     item.active = true;
     item.dropdown = false;
-    item.space_pixels = 0;
+    item.spacer_pixels = 0;
     item.id = tool_id;
     item.state = 0;
     item.proportion = 0;
@@ -1028,7 +1028,7 @@ void wxAuiToolBar::AddSpacer(int pixels)
     item.disabled_bitmap = wxNullBitmap;
     item.active = true;
     item.dropdown = false;
-    item.space_pixels = pixels;
+    item.spacer_pixels = pixels;
     item.id = -1;
     item.state = 0;
     item.proportion = 0;
@@ -1050,7 +1050,7 @@ void wxAuiToolBar::AddStretchSpacer(int proportion)
     item.disabled_bitmap = wxNullBitmap;
     item.active = true;
     item.dropdown = false;
-    item.space_pixels = 0;
+    item.spacer_pixels = 0;
     item.id = -1;
     item.state = 0;
     item.proportion = proportion;
@@ -1078,7 +1078,7 @@ bool wxAuiToolBar::DeleteTool(int tool_id)
         Realize();
         return true;
     }
-    
+
     return false;
 }
 
@@ -1090,7 +1090,7 @@ bool wxAuiToolBar::DeleteByIndex(int idx)
         Realize();
         return true;
     }
-    
+
     return false;
 }
 
@@ -1110,7 +1110,7 @@ wxAuiToolBarItem* wxAuiToolBar::FindTool(int tool_id) const
         if (item.id == tool_id)
             return &item;
     }
-    
+
     return NULL;
 }
 
@@ -1120,21 +1120,21 @@ wxAuiToolBarItem* wxAuiToolBar::FindToolByPosition(wxCoord x, wxCoord y) const
     for (i = 0, count = m_items.GetCount(); i < count; ++i)
     {
         wxAuiToolBarItem& item = m_items.Item(i);
-        
+
         if (!item.sizer_item)
             continue;
-         
+
         wxRect rect = item.sizer_item->GetRect();
         if (rect.Contains(x,y))
         {
             // if the item doesn't fit on the toolbar, return NULL
             if (!GetToolFitsByIndex(i))
                 return NULL;
-            
+
             return &item;
         }
     }
-    
+
     return NULL;
 }
 
@@ -1144,26 +1144,26 @@ wxAuiToolBarItem* wxAuiToolBar::FindToolByPositionWithPacking(wxCoord x, wxCoord
     for (i = 0, count = m_items.GetCount(); i < count; ++i)
     {
         wxAuiToolBarItem& item = m_items.Item(i);
-        
+
         if (!item.sizer_item)
             continue;
-         
+
         wxRect rect = item.sizer_item->GetRect();
-        
+
         // apply tool packing
         if (i+1 < count)
             rect.width += m_tool_packing;
-        
+
         if (rect.Contains(x,y))
         {
             // if the item doesn't fit on the toolbar, return NULL
             if (!GetToolFitsByIndex(i))
                 return NULL;
-            
+
             return &item;
         }
     }
-    
+
     return NULL;
 }
 
@@ -1171,10 +1171,10 @@ wxAuiToolBarItem* wxAuiToolBar::FindToolByIndex(int idx) const
 {
     if (idx < 0)
         return NULL;
-    
+
     if (idx >= (int)m_items.size())
         return NULL;
-    
+
     return &(m_items[idx]);
 }
 
@@ -1188,13 +1188,13 @@ wxSize wxAuiToolBar::GetToolBitmapSize() const
     // TODO: wxToolBar compatibility
     return wxSize(16,15);
 }
-    
+
 void wxAuiToolBar::SetToolProportion(int tool_id, int proportion)
 {
     wxAuiToolBarItem* item = FindTool(tool_id);
     if (!item)
         return;
-        
+
     item->proportion = proportion;
 }
 
@@ -1203,7 +1203,7 @@ int wxAuiToolBar::GetToolProportion(int tool_id) const
     wxAuiToolBarItem* item = FindTool(tool_id);
     if (!item)
         return 0;
-    
+
     return item->proportion;
 }
 
@@ -1217,14 +1217,14 @@ int wxAuiToolBar::GetToolSeparation() const
 {
     if (m_art)
         return m_art->GetElementSize(wxAUI_TBART_SEPARATOR_SIZE);
-         else
+    else
         return 5;
 }
-    
+
 
 void wxAuiToolBar::SetToolDropDown(int tool_id, bool dropdown)
 {
-    wxAuiToolBarItem* item = FindTool(tool_id);    
+    wxAuiToolBarItem* item = FindTool(tool_id);
     if (!item)
         return;
 
@@ -1236,7 +1236,7 @@ bool wxAuiToolBar::GetToolDropDown(int tool_id) const
     wxAuiToolBarItem* item = FindTool(tool_id);
     if (!item)
         return 0;
-    
+
     return item->dropdown;
 }
 
@@ -1245,16 +1245,16 @@ void wxAuiToolBar::SetToolSticky(int tool_id, bool sticky)
     // ignore separators
     if (tool_id == -1)
         return;
-    
-    wxAuiToolBarItem* item = FindTool(tool_id);    
+
+    wxAuiToolBarItem* item = FindTool(tool_id);
     if (!item)
         return;
-    
+
     if (item->sticky == sticky)
         return;
-    
+
     item->sticky = sticky;
-    
+
     Refresh(false);
     Update();
 }
@@ -1264,7 +1264,7 @@ bool wxAuiToolBar::GetToolSticky(int tool_id) const
     wxAuiToolBarItem* item = FindTool(tool_id);
     if (!item)
         return 0;
-    
+
     return item->sticky;
 }
 
@@ -1354,12 +1354,12 @@ void wxAuiToolBar::SetOverflowVisible(bool visible)
 bool wxAuiToolBar::SetFont(const wxFont& font)
 {
     bool res = wxWindow::SetFont(font);
-    
+
     if (m_art)
     {
         m_art->SetFont(font);
     }
-    
+
     return res;
 }
 
@@ -1367,7 +1367,7 @@ bool wxAuiToolBar::SetFont(const wxFont& font)
 void wxAuiToolBar::SetHoverItem(wxAuiToolBarItem* pitem)
 {
     wxAuiToolBarItem* former_hover = NULL;
-    
+
     size_t i, count;
     for (i = 0, count = m_items.GetCount(); i < count; ++i)
     {
@@ -1376,12 +1376,12 @@ void wxAuiToolBar::SetHoverItem(wxAuiToolBarItem* pitem)
             former_hover = &item;
         item.state &= ~wxAUI_BUTTON_STATE_HOVER;
     }
-    
+
     if (pitem)
     {
         pitem->state |= wxAUI_BUTTON_STATE_HOVER;
     }
-    
+
     if (former_hover != pitem)
     {
         Refresh(false);
@@ -1392,7 +1392,7 @@ void wxAuiToolBar::SetHoverItem(wxAuiToolBarItem* pitem)
 void wxAuiToolBar::SetPressedItem(wxAuiToolBarItem* pitem)
 {
     wxAuiToolBarItem* former_item = NULL;
-    
+
     size_t i, count;
     for (i = 0, count = m_items.GetCount(); i < count; ++i)
     {
@@ -1401,13 +1401,13 @@ void wxAuiToolBar::SetPressedItem(wxAuiToolBarItem* pitem)
             former_item = &item;
         item.state &= ~wxAUI_BUTTON_STATE_PRESSED;
     }
-    
+
     if (pitem)
     {
         pitem->state &= ~wxAUI_BUTTON_STATE_HOVER;
         pitem->state |= wxAUI_BUTTON_STATE_PRESSED;
     }
-    
+
     if (former_item != pitem)
     {
         Refresh(false);
@@ -1422,47 +1422,47 @@ void wxAuiToolBar::RefreshOverflowState()
         m_overflow_state = 0;
         return;
     }
-    
+
     int overflow_state = 0;
-    
+
     wxRect overflow_rect = GetOverflowRect();
 
-    
+
     // find out the mouse's current position
     wxPoint pt = ::wxGetMousePosition();
     pt = this->ScreenToClient(pt);
-    
+
     // find out if the mouse cursor is inside the dropdown rectangle
     if (overflow_rect.Contains(pt.x, pt.y))
     {
         if (::wxGetMouseState().LeftDown())
             overflow_state = wxAUI_BUTTON_STATE_PRESSED;
-             else
+        else
             overflow_state = wxAUI_BUTTON_STATE_HOVER;
     }
-           
+
     if (overflow_state != m_overflow_state)
     {
         m_overflow_state = overflow_state;
         Refresh(false);
         Update();
     }
-    
+
     m_overflow_state = overflow_state;
 }
 
 void wxAuiToolBar::ToggleTool(int tool_id, bool state)
 {
     wxAuiToolBarItem* tool = FindTool(tool_id);
-    
+
     if (tool)
     {
         if (tool->kind != wxITEM_CHECK)
             return;
-        
+
         if (state == true)
             tool->state |= wxAUI_BUTTON_STATE_CHECKED;
-         else
+        else
             tool->state &= ~wxAUI_BUTTON_STATE_CHECKED;
     }
 }
@@ -1470,27 +1470,27 @@ void wxAuiToolBar::ToggleTool(int tool_id, bool state)
 bool wxAuiToolBar::GetToolToggled(int tool_id) const
 {
     wxAuiToolBarItem* tool = FindTool(tool_id);
-    
+
     if (tool)
     {
         if (tool->kind != wxITEM_CHECK)
             return false;
-        
+
         return (tool->state & wxAUI_BUTTON_STATE_CHECKED) ? true : false;
     }
-    
+
     return false;
 }
 
 void wxAuiToolBar::EnableTool(int tool_id, bool state)
 {
     wxAuiToolBarItem* tool = FindTool(tool_id);
-    
+
     if (tool)
     {
         if (state == true)
             tool->state &= ~wxAUI_BUTTON_STATE_DISABLED;
-         else
+        else
             tool->state |= wxAUI_BUTTON_STATE_DISABLED;
     }
 }
@@ -1498,10 +1498,10 @@ void wxAuiToolBar::EnableTool(int tool_id, bool state)
 bool wxAuiToolBar::GetToolEnabled(int tool_id) const
 {
     wxAuiToolBarItem* tool = FindTool(tool_id);
-    
+
     if (tool)
         return (tool->state & wxAUI_BUTTON_STATE_DISABLED) ? false : true;
-    
+
     return false;
 }
 
@@ -1511,7 +1511,7 @@ wxString wxAuiToolBar::GetToolLabel(int tool_id) const
     wxASSERT_MSG(tool, wxT("can't find tool in toolbar item array"));
     if (!tool)
         return wxEmptyString;
-        
+
     return tool->label;
 }
 
@@ -1530,7 +1530,7 @@ wxBitmap wxAuiToolBar::GetToolBitmap(int tool_id) const
     wxASSERT_MSG(tool, wxT("can't find tool in toolbar item array"));
     if (!tool)
         return wxNullBitmap;
-        
+
     return tool->bitmap;
 }
 
@@ -1549,7 +1549,7 @@ wxString wxAuiToolBar::GetToolShortHelp(int tool_id) const
     wxASSERT_MSG(tool, wxT("can't find tool in toolbar item array"));
     if (!tool)
         return wxEmptyString;
-        
+
     return tool->short_help;
 }
 
@@ -1568,7 +1568,7 @@ wxString wxAuiToolBar::GetToolLongHelp(int tool_id) const
     wxASSERT_MSG(tool, wxT("can't find tool in toolbar item array"));
     if (!tool)
         return wxEmptyString;
-        
+
     return tool->long_help;
 }
 
@@ -1600,7 +1600,7 @@ int wxAuiToolBar::GetToolIndex(int tool_id) const
     // first separator in the toolbar since its id is equal to -1
     if (tool_id == -1)
         return wxNOT_FOUND;
-    
+
     size_t i, count = m_items.GetCount();
     for (i = 0; i < count; ++i)
     {
@@ -1608,7 +1608,7 @@ int wxAuiToolBar::GetToolIndex(int tool_id) const
         if (item.id == tool_id)
             return i;
     }
-    
+
     return wxNOT_FOUND;
 }
 
@@ -1616,30 +1616,30 @@ bool wxAuiToolBar::GetToolFitsByIndex(int tool_idx) const
 {
     if (tool_idx < 0 || tool_idx >= (int)m_items.GetCount())
         return false;
-        
+
     if (!m_items[tool_idx].sizer_item)
         return false;
-        
+
     int cli_w, cli_h;
     GetClientSize(&cli_w, &cli_h);
-    
+
     wxRect rect = m_items[tool_idx].sizer_item->GetRect();
-    
+
     if (m_style & wxAUI_TB_VERTICAL)
     {
         // take the dropdown size into account
         if (m_overflow_visible)
             cli_h -= m_overflow_sizer_item->GetSize().y;
-        
+
         if (rect.y+rect.height < cli_h)
             return true;
     }
-     else
+    else
     {
         // take the dropdown size into account
         if (m_overflow_visible)
             cli_w -= m_overflow_sizer_item->GetSize().x;
-        
+
         if (rect.x+rect.width < cli_w)
             return true;
     }
@@ -1660,7 +1660,7 @@ wxRect wxAuiToolBar::GetToolRect(int tool_id) const
     {
         return tool->sizer_item->GetRect();
     }
-    
+
     return wxRect();
 }
 
@@ -1671,7 +1671,7 @@ bool wxAuiToolBar::GetToolBarFits() const
         // empty toolbar always 'fits'
         return true;
     }
-    
+
     // entire toolbar content fits if the last tool fits
     return GetToolFitsByIndex(m_items.GetCount() - 1);
 }
@@ -1685,11 +1685,11 @@ bool wxAuiToolBar::Realize()
     bool horizontal = true;
     if (m_style & wxAUI_TB_VERTICAL)
         horizontal = false;
-        
-        
+
+
     // create the new sizer to add toolbar elements to
     wxBoxSizer* sizer = new wxBoxSizer(horizontal ? wxHORIZONTAL : wxVERTICAL);
-    
+
     // add gripper area
     int separator_size = m_art->GetElementSize(wxAUI_TBART_SEPARATOR_SIZE);
     int gripper_size = m_art->GetElementSize(wxAUI_TBART_GRIPPER_SIZE);
@@ -1697,31 +1697,31 @@ bool wxAuiToolBar::Realize()
     {
         if (horizontal)
             m_gripper_sizer_item = sizer->Add(gripper_size, 1, 0, wxEXPAND);
-             else
+        else
             m_gripper_sizer_item = sizer->Add(1, gripper_size, 0, wxEXPAND);
     }
-     else
+    else
     {
         m_gripper_sizer_item = NULL;
     }
-    
+
     // add "left" padding
     if (m_left_padding > 0)
     {
         if (horizontal)
             sizer->Add(m_left_padding, 1);
-             else
+        else
             sizer->Add(1, m_left_padding);
     }
-    
+
     size_t i, count;
     for (i = 0, count = m_items.GetCount(); i < count; ++i)
     {
         wxAuiToolBarItem& item = m_items.Item(i);
         wxSizerItem* sizer_item = NULL;
-        
+
         switch (item.kind)
-        { 
+        {
             case wxITEM_LABEL:
             {
                 wxSize size = m_art->GetLabelSize(dc, this, item);
@@ -1733,10 +1733,10 @@ bool wxAuiToolBar::Realize()
                 {
                     sizer->AddSpacer(m_tool_packing);
                 }
-                
+
                 break;
             }
-            
+
             case wxITEM_CHECK:
             case wxITEM_NORMAL:
             {
@@ -1750,15 +1750,15 @@ bool wxAuiToolBar::Realize()
                 {
                     sizer->AddSpacer(m_tool_packing);
                 }
-                
+
                 break;
             }
-               
+
             case wxITEM_SEPARATOR:
             {
                 if (horizontal)
                     sizer_item = sizer->Add(separator_size, 1, 0, wxEXPAND);
-                     else
+                else
                     sizer_item = sizer->Add(1, separator_size, 0, wxEXPAND);
 
                 // add tool packing
@@ -1766,37 +1766,39 @@ bool wxAuiToolBar::Realize()
                 {
                     sizer->AddSpacer(m_tool_packing);
                 }
-                
+
                 break;
             }
-            
+
             case wxITEM_SPACER:
                 if (item.proportion > 0)
                     sizer_item = sizer->AddStretchSpacer(item.proportion);
-                 else
-                    sizer_item = sizer->Add(item.space_pixels, 1);
+                else
+                    sizer_item = sizer->Add(item.spacer_pixels, 1);
                 break;
-                
+
             case wxITEM_CONTROL:
             {
                 //sizer_item = sizer->Add(item.window, item.proportion, wxEXPAND);
                 wxSizerItem* ctrl_sizer_item;
-                
+
                 wxBoxSizer* vert_sizer = new wxBoxSizer(wxVERTICAL);
                 vert_sizer->AddStretchSpacer(1);
                 ctrl_sizer_item = vert_sizer->Add(item.window, 0, wxEXPAND);
                 vert_sizer->AddStretchSpacer(1);
-                if ((m_style & wxAUI_TB_TEXT) && item.label.Length() > 0)
+                if ( (m_style & wxAUI_TB_TEXT) &&
+                     m_tool_text_orientation == wxAUI_TBTOOL_TEXT_BOTTOM &&
+                     !item.GetLabel().empty() )
                 {
-                    wxSize s = GetLabelSize(item.label);
+                    wxSize s = GetLabelSize(item.GetLabel());
                     vert_sizer->Add(1, s.y);
                 }
-                
-                
+
+
                 sizer_item = sizer->Add(vert_sizer, item.proportion, wxEXPAND);
-                
+
                 wxSize min_size = item.min_size;
-                
+
 
                 // proportional items will disappear from the toolbar if
                 // their min width is not set to something really small
@@ -1804,10 +1806,10 @@ bool wxAuiToolBar::Realize()
                 {
                     min_size.x = 1;
                 }
-                
+
                 if (min_size.IsFullySpecified())
                 {
-                    sizer_item->SetMinSize(min_size);                     
+                    sizer_item->SetMinSize(min_size);
                     ctrl_sizer_item->SetMinSize(min_size);
                 }
 
@@ -1818,7 +1820,7 @@ bool wxAuiToolBar::Realize()
                 }
             }
         }
-        
+
         item.sizer_item = sizer_item;
     }
 
@@ -1827,13 +1829,13 @@ bool wxAuiToolBar::Realize()
     {
         if (horizontal)
             sizer->Add(m_right_padding, 1);
-             else
+        else
             sizer->Add(1, m_right_padding);
     }
-    
+
     // add drop down area
     m_overflow_sizer_item = NULL;
-    
+
     if (m_style & wxAUI_TB_OVERFLOW)
     {
         int overflow_size = m_art->GetElementSize(wxAUI_TBART_OVERFLOW_SIZE);
@@ -1841,43 +1843,43 @@ bool wxAuiToolBar::Realize()
         {
             if (horizontal)
                 m_overflow_sizer_item = sizer->Add(overflow_size, 1, 0, wxEXPAND);
-                 else
+            else
                 m_overflow_sizer_item = sizer->Add(1, overflow_size, 0, wxEXPAND);
         }
-         else
+        else
         {
             m_overflow_sizer_item = NULL;
         }
     }
-    
+
 
     // the outside sizer helps us apply the "top" and "bottom" padding
     wxBoxSizer* outside_sizer = new wxBoxSizer(horizontal ? wxVERTICAL : wxHORIZONTAL);
-    
+
     // add "top" padding
     if (m_top_padding > 0)
     {
         if (horizontal)
             outside_sizer->Add(1, m_top_padding);
-             else
+        else
             outside_sizer->Add(m_top_padding, 1);
     }
 
     // add the sizer that contains all of the toolbar elements
     outside_sizer->Add(sizer, 1, wxEXPAND);
-    
+
     // add "bottom" padding
     if (m_bottom_padding > 0)
     {
         if (horizontal)
             outside_sizer->Add(1, m_bottom_padding);
-             else
+        else
             outside_sizer->Add(m_bottom_padding, 1);
     }
-    
+
     delete m_sizer; // remove old sizer
     m_sizer = outside_sizer;
-      
+
     // calculate the rock-bottom minimum size
     for (i = 0, count = m_items.GetCount(); i < count; ++i)
     {
@@ -1885,22 +1887,22 @@ bool wxAuiToolBar::Realize()
         if (item.sizer_item && item.proportion > 0 && item.min_size.IsFullySpecified())
             item.sizer_item->SetMinSize(0,0);
     }
-    
+
     m_absolute_min_size = m_sizer->GetMinSize();
-    
+
     // reset the min sizes to what they were
     for (i = 0, count = m_items.GetCount(); i < count; ++i)
     {
         wxAuiToolBarItem& item = m_items.Item(i);
         if (item.sizer_item && item.proportion > 0 && item.min_size.IsFullySpecified())
             item.sizer_item->SetMinSize(item.min_size);
-    }    
+    }
 
     // set control size
     wxSize size = m_sizer->GetMinSize();
     m_minWidth = size.x;
     m_minHeight = size.y;
-    
+
     if ((m_style & wxAUI_TB_NO_AUTORESIZE) == 0)
     {
         wxSize cur_size = GetClientSize();
@@ -1909,17 +1911,17 @@ bool wxAuiToolBar::Realize()
         {
             SetClientSize(new_size);
         }
-         else
+        else
         {
             m_sizer->SetDimension(0, 0, cur_size.x, cur_size.y);
         }
-    }    
-     else
+    }
+    else
     {
         wxSize cur_size = GetClientSize();
         m_sizer->SetDimension(0, 0, cur_size.x, cur_size.y);
     }
-    
+
     Refresh(false);
     return true;
 }
@@ -1930,7 +1932,7 @@ int wxAuiToolBar::GetOverflowState() const
 }
 
 wxRect wxAuiToolBar::GetOverflowRect() const
-{        
+{
     wxRect cli_rect(wxPoint(0,0), GetClientSize());
     wxRect overflow_rect = m_overflow_sizer_item->GetRect();
     int overflow_size = m_art->GetElementSize(wxAUI_TBART_OVERFLOW_SIZE);
@@ -1942,26 +1944,26 @@ wxRect wxAuiToolBar::GetOverflowRect() const
         overflow_rect.width = cli_rect.width;
         overflow_rect.height = overflow_size;
     }
-     else
+    else
     {
         overflow_rect.x = cli_rect.width - overflow_size;
         overflow_rect.y = 0;
         overflow_rect.width = overflow_size;
         overflow_rect.height = cli_rect.height;
     }
-    
+
     return overflow_rect;
 }
 
 wxSize wxAuiToolBar::GetLabelSize(const wxString& label)
 {
     wxClientDC dc(this);
-    
+
     int tx, ty;
     int text_width = 0, text_height = 0;
 
     dc.SetFont(m_font);
-    
+
     // get the text height
     dc.GetTextExtent(wxT("ABCDHgj"), &tx, &text_height);
 
@@ -1982,10 +1984,10 @@ void wxAuiToolBar::DoIdleUpdate()
     for (i = 0, count = m_items.GetCount(); i < count; ++i)
     {
         wxAuiToolBarItem& item = m_items.Item(i);
-        
+
         if (item.id == -1)
             continue;
-            
+
         wxUpdateUIEvent evt(item.id);
         evt.SetEventObject(this);
 
@@ -1996,9 +1998,9 @@ void wxAuiToolBar::DoIdleUpdate()
                 bool is_enabled;
                 if (item.window)
                     is_enabled = item.window->IsEnabled();
-                     else
+                else
                     is_enabled = (item.state & wxAUI_BUTTON_STATE_DISABLED) ? false : true;
-                                 
+
                 bool new_enabled = evt.GetEnabled();
                 if (new_enabled != is_enabled)
                 {
@@ -2006,17 +2008,17 @@ void wxAuiToolBar::DoIdleUpdate()
                     {
                         item.window->Enable(new_enabled);
                     }
-                     else
+                    else
                     {
                         if (new_enabled)
                             item.state &= ~wxAUI_BUTTON_STATE_DISABLED;
-                             else
+                        else
                             item.state |= wxAUI_BUTTON_STATE_DISABLED;
                     }
                     need_refresh = true;
                 }
             }
-            
+
             if (evt.GetSetChecked())
             {
                 // make sure we aren't checking an item that can't be
@@ -2030,16 +2032,16 @@ void wxAuiToolBar::DoIdleUpdate()
                 {
                     if (new_checked)
                         item.state |= wxAUI_BUTTON_STATE_CHECKED;
-                         else
+                    else
                         item.state &= ~wxAUI_BUTTON_STATE_CHECKED;
-                        
+
                     need_refresh = true;
                 }
             }
 
         }
     }
-    
+
 
     if (need_refresh)
     {
@@ -2055,7 +2057,7 @@ void wxAuiToolBar::OnSize(wxSizeEvent& WXUNUSED(evt))
 
     if (x > y)
         SetOrientation(wxHORIZONTAL);
-         else
+    else
         SetOrientation(wxVERTICAL);
 
     if (((x >= y) && m_absolute_min_size.x > x) ||
@@ -2073,7 +2075,7 @@ void wxAuiToolBar::OnSize(wxSizeEvent& WXUNUSED(evt))
             }
         }
     }
-     else
+    else
     {
         // show all flexible items
         size_t i, count;
@@ -2122,80 +2124,80 @@ void wxAuiToolBar::OnPaint(wxPaintEvent& WXUNUSED(evt))
 {
     wxBufferedPaintDC dc(this);
     wxRect cli_rect(wxPoint(0,0), GetClientSize());
-    
-    
+
+
     bool horizontal = true;
     if (m_style & wxAUI_TB_VERTICAL)
         horizontal = false;
 
 
     m_art->DrawBackground(dc, this, cli_rect);
-    
+
     int gripper_size = m_art->GetElementSize(wxAUI_TBART_GRIPPER_SIZE);
     int dropdown_size = m_art->GetElementSize(wxAUI_TBART_OVERFLOW_SIZE);
-    
+
     // paint the gripper
     if (gripper_size > 0 && m_gripper_sizer_item)
     {
         wxRect gripper_rect = m_gripper_sizer_item->GetRect();
         if (horizontal)
             gripper_rect.width = gripper_size;
-             else
+        else
             gripper_rect.height = gripper_size;
         m_art->DrawGripper(dc, this, gripper_rect);
     }
-    
+
     // calculated how far we can draw items
     int last_extent;
     if (horizontal)
         last_extent = cli_rect.width;
-         else
+    else
         last_extent = cli_rect.height;
     if (m_overflow_visible)
         last_extent -= dropdown_size;
-        
+
     // paint each individual tool
     size_t i, count = m_items.GetCount();
     for (i = 0; i < count; ++i)
     {
         wxAuiToolBarItem& item = m_items.Item(i);
-        
+
         if (!item.sizer_item)
             continue;
-                
+
         wxRect item_rect = item.sizer_item->GetRect();
-        
-        
+
+
         if ((horizontal  && item_rect.x + item_rect.width >= last_extent) ||
             (!horizontal && item_rect.y + item_rect.height >= last_extent))
         {
             break;
         }
-            
+
         if (item.kind == wxITEM_SEPARATOR)
         {
             // draw a separator
             m_art->DrawSeparator(dc, this, item_rect);
         }
-         else if (item.kind == wxITEM_LABEL)
+        else if (item.kind == wxITEM_LABEL)
         {
             // draw a text label only
             m_art->DrawLabel(dc, this, item, item_rect);
         }
-         else if (item.kind == wxITEM_NORMAL)
+        else if (item.kind == wxITEM_NORMAL)
         {
             // draw a regular button or dropdown button
             if (!item.dropdown)
                 m_art->DrawButton(dc, this, item, item_rect);
-             else
+            else
                 m_art->DrawDropDownButton(dc, this, item, item_rect);
         }
-         else if (item.kind == wxITEM_CHECK)
+        else if (item.kind == wxITEM_CHECK)
         {
             // draw a toggle button
             m_art->DrawButton(dc, this, item, item_rect);
         }
-         else if (item.kind == wxITEM_CONTROL)
+        else if (item.kind == wxITEM_CONTROL)
         {
             // draw the control's label
             m_art->DrawControlLabel(dc, this, item, item_rect);
@@ -2204,7 +2206,7 @@ void wxAuiToolBar::OnPaint(wxPaintEvent& WXUNUSED(evt))
         // fire a signal to see if the item wants to be custom-rendered
         OnCustomRender(dc, item, item_rect);
     }
-    
+
     // paint the overflow button
     if (dropdown_size > 0 && m_overflow_sizer_item)
     {
@@ -2221,7 +2223,7 @@ void wxAuiToolBar::OnEraseBackground(wxEraseEvent& WXUNUSED(evt))
 void wxAuiToolBar::OnLeftDown(wxMouseEvent& evt)
 {
     wxRect cli_rect(wxPoint(0,0), GetClientSize());
-    
+
     if (m_gripper_sizer_item)
     {
         wxRect gripper_rect = m_gripper_sizer_item->GetRect();
@@ -2231,21 +2233,21 @@ void wxAuiToolBar::OnLeftDown(wxMouseEvent& evt)
             wxAuiManager* manager = wxAuiManager::GetManager(this);
             if (!manager)
                 return;
-            
+
             int x_drag_offset = evt.GetX() - gripper_rect.GetX();
             int y_drag_offset = evt.GetY() - gripper_rect.GetY();
-            
+
             // gripper was clicked
             manager->StartPaneDrag(this, wxPoint(x_drag_offset, y_drag_offset));
             return;
         }
     }
-    
+
     if (m_overflow_sizer_item)
     {
         wxRect overflow_rect = GetOverflowRect();
-        
-        if (m_art && 
+
+        if (m_art &&
             m_overflow_visible &&
             overflow_rect.Contains(evt.m_x, evt.m_y))
         {
@@ -2254,22 +2256,22 @@ void wxAuiToolBar::OnLeftDown(wxMouseEvent& evt)
             e.SetToolId(-1);
             e.SetClickPoint(wxPoint(evt.GetX(), evt.GetY()));
             bool processed = ProcessEvent(e);
-            
+
             if (processed)
             {
                 DoIdleUpdate();
             }
-             else
+            else
             {
                 size_t i, count;
                 wxAuiToolBarItemArray overflow_items;
-                
+
 
                 // add custom overflow prepend items, if any
                 count = m_custom_overflow_prepend.GetCount();
                 for (i = 0; i < count; ++i)
-                    overflow_items.Add(m_custom_overflow_prepend[i]);               
-                
+                    overflow_items.Add(m_custom_overflow_prepend[i]);
+
                 // only show items that don't fit in the dropdown
                 count = m_items.GetCount();
                 for (i = 0; i < count; ++i)
@@ -2282,7 +2284,7 @@ void wxAuiToolBar::OnLeftDown(wxMouseEvent& evt)
                 count = m_custom_overflow_append.GetCount();
                 for (i = 0; i < count; ++i)
                     overflow_items.Add(m_custom_overflow_append[i]);
-                           
+
                 int res = m_art->ShowDropDown(this, overflow_items);
                 m_overflow_state = 0;
                 Refresh(false);
@@ -2293,15 +2295,15 @@ void wxAuiToolBar::OnLeftDown(wxMouseEvent& evt)
                     GetParent()->ProcessEvent(e);
                 }
             }
-            
+
             return;
         }
     }
-    
+
     m_dragging = false;
     m_action_pos = wxPoint(evt.GetX(), evt.GetY());
     m_action_item = FindToolByPosition(evt.GetX(), evt.GetY());
-    
+
     if (m_action_item)
     {
         if (m_action_item->state & wxAUI_BUTTON_STATE_DISABLED)
@@ -2310,25 +2312,25 @@ void wxAuiToolBar::OnLeftDown(wxMouseEvent& evt)
             m_action_item = NULL;
             return;
         }
-        
+
         SetPressedItem(m_action_item);
-        
+
         // fire the tool dropdown event
         wxAuiToolBarEvent e(wxEVT_COMMAND_AUITOOLBAR_TOOL_DROPDOWN, m_action_item->id);
         e.SetEventObject(this);
         e.SetToolId(m_action_item->id);
         e.SetDropDownClicked(false);
-        
+
         int mouse_x = evt.GetX();
         wxRect rect = m_action_item->sizer_item->GetRect();
-        
+
         if (m_action_item->dropdown &&
             mouse_x >= (rect.x+rect.width-BUTTON_DROPDOWN_WIDTH-1) &&
             mouse_x < (rect.x+rect.width))
         {
             e.SetDropDownClicked(true);
         }
-        
+
         e.SetClickPoint(evt.GetPosition());
         e.SetItemRect(rect);
         ProcessEvent(e);
@@ -2355,32 +2357,32 @@ void wxAuiToolBar::OnLeftUp(wxMouseEvent& evt)
         m_action_item = NULL;
         return;
     }
-     else
+    else
     {
         wxAuiToolBarItem* hit_item;
         hit_item = FindToolByPosition(evt.GetX(), evt.GetY());
-        
+
         if (m_action_item && hit_item == m_action_item)
         {
-            SetToolTip(NULL);
-            
+            UnsetToolTip();
+
             if (hit_item->kind == wxITEM_CHECK)
             {
                 bool toggle = false;
-                
+
                 if (m_action_item->state & wxAUI_BUTTON_STATE_CHECKED)
                     toggle = false;
-                 else
+                else
                     toggle = true;
-                
+
                 ToggleTool(m_action_item->id, toggle);
-                
+
                 wxCommandEvent e(wxEVT_COMMAND_MENU_SELECTED, m_action_item->id);
                 e.SetEventObject(this);
                 ProcessEvent(e);
                 DoIdleUpdate();
             }
-             else
+            else
             {
                 wxCommandEvent e(wxEVT_COMMAND_MENU_SELECTED, m_action_item->id);
                 e.SetEventObject(this);
@@ -2399,14 +2401,14 @@ void wxAuiToolBar::OnLeftUp(wxMouseEvent& evt)
 void wxAuiToolBar::OnRightDown(wxMouseEvent& evt)
 {
     wxRect cli_rect(wxPoint(0,0), GetClientSize());
-    
+
     if (m_gripper_sizer_item)
     {
         wxRect gripper_rect = m_gripper_sizer_item->GetRect();
         if (gripper_rect.Contains(evt.GetX(), evt.GetY()))
             return;
     }
-    
+
     if (m_overflow_sizer_item)
     {
         int dropdown_size = m_art->GetElementSize(wxAUI_TBART_OVERFLOW_SIZE);
@@ -2419,10 +2421,10 @@ void wxAuiToolBar::OnRightDown(wxMouseEvent& evt)
             return;
         }
     }
-    
+
     m_action_pos = wxPoint(evt.GetX(), evt.GetY());
     m_action_item = FindToolByPosition(evt.GetX(), evt.GetY());
-    
+
     if (m_action_item)
     {
         if (m_action_item->state & wxAUI_BUTTON_STATE_DISABLED)
@@ -2438,7 +2440,7 @@ void wxAuiToolBar::OnRightUp(wxMouseEvent& evt)
 {
     wxAuiToolBarItem* hit_item;
     hit_item = FindToolByPosition(evt.GetX(), evt.GetY());
-    
+
     if (m_action_item && hit_item == m_action_item)
     {
         if (hit_item->kind == wxITEM_NORMAL)
@@ -2451,7 +2453,7 @@ void wxAuiToolBar::OnRightUp(wxMouseEvent& evt)
             DoIdleUpdate();
         }
     }
-     else
+    else
     {
         // right-clicked on the invalid area of the toolbar
         wxAuiToolBarEvent e(wxEVT_COMMAND_AUITOOLBAR_RIGHT_CLICK, -1);
@@ -2470,14 +2472,14 @@ void wxAuiToolBar::OnRightUp(wxMouseEvent& evt)
 void wxAuiToolBar::OnMiddleDown(wxMouseEvent& evt)
 {
     wxRect cli_rect(wxPoint(0,0), GetClientSize());
-    
+
     if (m_gripper_sizer_item)
     {
         wxRect gripper_rect = m_gripper_sizer_item->GetRect();
         if (gripper_rect.Contains(evt.GetX(), evt.GetY()))
             return;
     }
-    
+
     if (m_overflow_sizer_item)
     {
         int dropdown_size = m_art->GetElementSize(wxAUI_TBART_OVERFLOW_SIZE);
@@ -2490,10 +2492,10 @@ void wxAuiToolBar::OnMiddleDown(wxMouseEvent& evt)
             return;
         }
     }
-    
+
     m_action_pos = wxPoint(evt.GetX(), evt.GetY());
     m_action_item = FindToolByPosition(evt.GetX(), evt.GetY());
-    
+
     if (m_action_item)
     {
         if (m_action_item->state & wxAUI_BUTTON_STATE_DISABLED)
@@ -2509,7 +2511,7 @@ void wxAuiToolBar::OnMiddleUp(wxMouseEvent& evt)
 {
     wxAuiToolBarItem* hit_item;
     hit_item = FindToolByPosition(evt.GetX(), evt.GetY());
-    
+
     if (m_action_item && hit_item == m_action_item)
     {
         if (hit_item->kind == wxITEM_NORMAL)
@@ -2536,10 +2538,10 @@ void wxAuiToolBar::OnMotion(wxMouseEvent& evt)
         m_action_pos != wxPoint(-1,-1) &&
         abs(evt.m_x - m_action_pos.x) + abs(evt.m_y - m_action_pos.y) > 5)
     {
-        SetToolTip(NULL);
-        
+        UnsetToolTip();
+
         m_dragging = true;
-        
+
         wxAuiToolBarEvent e(wxEVT_COMMAND_AUITOOLBAR_BEGIN_DRAG, GetId());
         e.SetEventObject(this);
         e.SetToolId(m_action_item->id);
@@ -2553,15 +2555,15 @@ void wxAuiToolBar::OnMotion(wxMouseEvent& evt)
     {
         if (!(hit_item->state & wxAUI_BUTTON_STATE_DISABLED))
             SetHoverItem(hit_item);
-             else
+        else
             SetHoverItem(NULL);
     }
-     else
+    else
     {
         // no hit item, remove any hit item
         SetHoverItem(hit_item);
     }
-    
+
     // figure out tooltips
     wxAuiToolBarItem* packing_hit_item;
     packing_hit_item = FindToolByPositionWithPacking(evt.GetX(), evt.GetY());
@@ -2570,29 +2572,29 @@ void wxAuiToolBar::OnMotion(wxMouseEvent& evt)
         if (packing_hit_item != m_tip_item)
         {
             m_tip_item = packing_hit_item;
-            
-            if (packing_hit_item->short_help.Length() > 0)
+
+            if ( !packing_hit_item->short_help.empty() )
                 SetToolTip(packing_hit_item->short_help);
-                 else
-                SetToolTip(NULL);
+            else
+                UnsetToolTip();
         }
     }
-     else
+    else
     {
-        SetToolTip(NULL);
+        UnsetToolTip();
         m_tip_item = NULL;
     }
-    
+
     // if we've pressed down an item and we're hovering
     // over it, make sure it's state is set to pressed
     if (m_action_item)
     {
         if (m_action_item == hit_item)
             SetPressedItem(m_action_item);
-         else
+        else
             SetPressedItem(NULL);
     }
-    
+
     // figure out the dropdown button state (are we hovering or pressing it?)
     RefreshOverflowState();
 }
@@ -2602,7 +2604,7 @@ void wxAuiToolBar::OnLeaveWindow(wxMouseEvent& WXUNUSED(evt))
     RefreshOverflowState();
     SetHoverItem(NULL);
     SetPressedItem(NULL);
-    
+
     m_tip_item = NULL;
 }
 
@@ -2610,7 +2612,7 @@ void wxAuiToolBar::OnLeaveWindow(wxMouseEvent& WXUNUSED(evt))
 void wxAuiToolBar::OnSetCursor(wxSetCursorEvent& evt)
 {
     wxCursor cursor = wxNullCursor;
-    
+
     if (m_gripper_sizer_item)
     {
         wxRect gripper_rect = m_gripper_sizer_item->GetRect();
@@ -2619,7 +2621,7 @@ void wxAuiToolBar::OnSetCursor(wxSetCursorEvent& evt)
             cursor = wxCursor(wxCURSOR_SIZING);
         }
     }
-    
+
     evt.SetCursor(cursor);
 }