X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/4e115ed2c71e11ea37c83ed44f3553523ec16560..c6a6bbbf637a5a580b7ab182483d27522f5e3189:/src/common/tbarbase.cpp diff --git a/src/common/tbarbase.cpp b/src/common/tbarbase.cpp index 47c85a2c61..a8ada3fa9b 100644 --- a/src/common/tbarbase.cpp +++ b/src/common/tbarbase.cpp @@ -1,5 +1,5 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: common/tbarbase.cpp +// Name: src/common/tbarbase.cpp // Purpose: wxToolBarBase implementation // Author: Julian Smart // Modified by: VZ at 11.12.99 (wxScrollableToolBar split off) @@ -26,18 +26,16 @@ #if wxUSE_TOOLBAR +#include "wx/toolbar.h" + #ifndef WX_PRECOMP #include "wx/control.h" -#endif - -#include "wx/frame.h" - -#if wxUSE_IMAGE - #include "wx/image.h" + #include "wx/frame.h" #include "wx/settings.h" -#endif // wxUSE_IMAGE - -#include "wx/toolbar.h" + #if WXWIN_COMPATIBILITY_2_8 + #include "wx/image.h" + #endif // WXWIN_COMPATIBILITY_2_8 +#endif // ---------------------------------------------------------------------------- // wxWidgets macros @@ -113,30 +111,6 @@ bool wxToolBarToolBase::SetLongHelp(const wxString& help) return true; } -#if WXWIN_COMPATIBILITY_2_2 - -const wxBitmap& wxToolBarToolBase::GetBitmap1() const -{ - return GetNormalBitmap(); -} - -const wxBitmap& wxToolBarToolBase::GetBitmap2() const -{ - return GetDisabledBitmap(); -} - -void wxToolBarToolBase::SetBitmap1(const wxBitmap& bmp) -{ - SetNormalBitmap(bmp); -} - -void wxToolBarToolBase::SetBitmap2(const wxBitmap& bmp) -{ - SetDisabledBitmap(bmp); -} - -#endif // WXWIN_COMPATIBILITY_2_2 - // ---------------------------------------------------------------------------- // wxToolBarBase adding/deleting items // ---------------------------------------------------------------------------- @@ -151,6 +125,15 @@ wxToolBarBase::wxToolBarBase() m_defaultHeight = 15; } +void wxToolBarBase::FixupStyle() +{ + if ( !HasFlag(wxTB_TOP | wxTB_LEFT | wxTB_RIGHT | wxTB_BOTTOM) ) + { + // this is the default + m_windowStyle |= wxTB_TOP; + } +} + wxToolBarToolBase *wxToolBarBase::DoAddTool(int id, const wxString& label, const wxBitmap& bitmap, @@ -214,12 +197,16 @@ wxToolBarBase::InsertTool(size_t pos, wxToolBarToolBase *tool) return tool; } -wxToolBarToolBase *wxToolBarBase::AddControl(wxControl *control) +wxToolBarToolBase * +wxToolBarBase::AddControl(wxControl *control, const wxString& label) { - return InsertControl(GetToolsCount(), control); + return InsertControl(GetToolsCount(), control, label); } -wxToolBarToolBase *wxToolBarBase::InsertControl(size_t pos, wxControl *control) +wxToolBarToolBase * +wxToolBarBase::InsertControl(size_t pos, + wxControl *control, + const wxString& label) { wxCHECK_MSG( control, (wxToolBarToolBase *)NULL, _T("toolbar: can't insert NULL control") ); @@ -230,7 +217,7 @@ wxToolBarToolBase *wxToolBarBase::InsertControl(size_t pos, wxControl *control) wxCHECK_MSG( pos <= GetToolsCount(), (wxToolBarToolBase *)NULL, _T("invalid position in wxToolBar::InsertControl()") ); - wxToolBarToolBase *tool = CreateTool(control); + wxToolBarToolBase *tool = CreateTool(control, label); if ( !InsertTool(pos, tool) ) { @@ -433,7 +420,10 @@ void wxToolBarBase::UnToggleRadioGroup(wxToolBarToolBase *tool) void wxToolBarBase::ClearTools() { - WX_CLEAR_LIST(wxToolBarToolsList, m_tools); + while ( GetToolsCount() ) + { + DeleteToolByPos(0); + } } bool wxToolBarBase::Realize() @@ -659,6 +649,10 @@ void wxToolBarBase::UpdateWindowUI(long flags) { wxWindowBase::UpdateWindowUI(flags); + // don't waste time updating state of tools in a hidden toolbar + if ( !IsShown() ) + return; + // There is no sense in updating the toolbar UI // if the parent window is about to get destroyed wxWindow *tlw = wxGetTopLevelParent( this ); @@ -690,73 +684,19 @@ void wxToolBarBase::UpdateWindowUI(long flags) } } -#if wxUSE_IMAGE - -/* - * Make a greyed-out image suitable for disabled buttons. - * This code is adapted from wxNewBitmapButton in FL. - */ +#if WXWIN_COMPATIBILITY_2_8 -bool wxCreateGreyedImage(const wxImage& src, wxImage& dst) +bool wxCreateGreyedImage(const wxImage& in, wxImage& out) { - dst = src.Copy(); - - unsigned char rBg, gBg, bBg; - if ( src.HasMask() ) - { - src.GetOrFindMaskColour(&rBg, &gBg, &bBg); - dst.SetMaskColour(rBg, gBg, bBg); - } - else // assuming the pixels along the edges are of the background color - { - rBg = src.GetRed(0, 0); - gBg = src.GetGreen(0, 0); - bBg = src.GetBlue(0, 0); - } - - const wxColour colBg(rBg, gBg, bBg); - - const wxColour colDark = wxSystemSettings::GetColour(wxSYS_COLOUR_3DSHADOW); - const wxColour colLight = wxSystemSettings::GetColour(wxSYS_COLOUR_3DHIGHLIGHT); - - // Second attempt, just making things monochrome - const int width = src.GetWidth(); - const int height = src.GetHeight(); - - for ( int x = 0; x < width; x++ ) - { - for ( int y = 0; y < height; y++ ) - { - const int r = src.GetRed(x, y); - const int g = src.GetGreen(x, y); - const int b = src.GetBlue(x, y); - - if ( r == rBg && g == gBg && b == bBg ) - { - // Leave the background colour as-is - continue; - } - - // Change light things to the background colour - wxColour col; - if ( r >= (colLight.Red() - 50) && - g >= (colLight.Green() - 50) && - b >= (colLight.Blue() - 50) ) - { - col = colBg; - } - else // Change dark things to really dark - { - col = colDark; - } - - dst.SetRGB(x, y, col.Red(), col.Green(), col.Blue()); - } - } +#if wxUSE_IMAGE + out = in.ConvertToGreyscale(); + if ( out.Ok() ) + return true; +#endif // wxUSE_IMAGE - return true; + return false; } -#endif // wxUSE_IMAGE +#endif // WXWIN_COMPATIBILITY_2_8 #endif // wxUSE_TOOLBAR