X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/a8cb1a4947bbbf5e18ce52448f4c3bb4cff4daee..1feb5443ff11ea45e9f21b1ea9a6f58caf2b6b4f:/src/msw/tbar95.cpp diff --git a/src/msw/tbar95.cpp b/src/msw/tbar95.cpp index f8ef378aed..f98b8c45d6 100644 --- a/src/msw/tbar95.cpp +++ b/src/msw/tbar95.cpp @@ -246,9 +246,7 @@ bool wxToolBar::Create(wxWindow *parent, LRESULT style = ::SendMessage(GetHwnd(), TB_GETSTYLE, 0, 0L); if ( !(style & TBSTYLE_FLAT) ) - { ::SendMessage(GetHwnd(), TB_SETSTYLE, 0, style | TBSTYLE_FLAT); - } } #endif // wxUSE_UXTHEME @@ -317,7 +315,6 @@ void wxToolBar::Recreate() } Realize(); - UpdateSize(); } wxToolBar::~wxToolBar() @@ -362,6 +359,7 @@ wxSize wxToolBar::DoGetBestSize() const } CacheBestSize(sizeBest); + return sizeBest; } @@ -374,8 +372,8 @@ WXDWORD wxToolBar::MSWGetStyle(long style, WXDWORD *exstyle) const (style & ~wxBORDER_MASK) | wxBORDER_NONE, exstyle ); - // always include this one, it never hurts and setting it later only if we - // do have tooltips wouldn't work + // always include this one, it never hurts and setting it later + // only if we do have tooltips wouldn't work msStyle |= TBSTYLE_TOOLTIPS; if ( style & (wxTB_FLAT | wxTB_HORZ_LAYOUT) ) @@ -460,7 +458,6 @@ bool wxToolBar::DoDeleteTool(size_t pos, wxToolBarToolBase *tool) if ( tool->IsControl() ) { nButtonsToDelete = ((wxToolBarTool *)tool)->GetSeparatorsCount(); - width *= nButtonsToDelete; } @@ -493,6 +490,7 @@ bool wxToolBar::DoDeleteTool(size_t pos, wxToolBarToolBase *tool) } InvalidateBestSize(); + return true; } @@ -535,10 +533,8 @@ bool wxToolBar::Realize() { const size_t nTools = GetToolsCount(); if ( nTools == 0 ) - { // nothing to do return true; - } const bool isVertical = HasFlag(wxTB_VERTICAL); @@ -547,8 +543,9 @@ bool wxToolBar::Realize() #ifndef __WXWINCE__ int remapValue = (-1); - if (wxSystemOptions::HasOption(wxT("msw.remap"))) - remapValue = wxSystemOptions::GetOptionInt(wxT("msw.remap")); + const wxChar *remapOptionStr = wxT("msw.remap"); + if (wxSystemOptions::HasOption( remapOptionStr )) + remapValue = wxSystemOptions::GetOptionInt( remapOptionStr ); doTransparent = (remapValue == 2); if (!doTransparent) @@ -593,7 +590,7 @@ bool wxToolBar::Realize() wx_truncate_cast(wxCoord, nTools), totalBitmapHeight = m_defaultHeight; - // Create a bitmap and copy all the tool bitmaps to it + // Create a bitmap and copy all the tool bitmaps into it wxMemoryDC dcAllButtons; wxBitmap bitmap(totalBitmapWidth, totalBitmapHeight); dcAllButtons.SelectObject(bitmap); @@ -831,9 +828,7 @@ bool wxToolBar::Realize() { const wxString& label = tool->GetLabel(); if ( !label.empty() ) - { button.iString = (int)label.c_str(); - } } button.idCommand = tool->GetId(); @@ -887,12 +882,14 @@ bool wxToolBar::Realize() button.fsStyle = TBSTYLE_CHECK; break; + case wxITEM_NORMAL: + button.fsStyle = TBSTYLE_BUTTON; + break; + default: wxFAIL_MSG( _T("unexpected toolbar button kind") ); - // fall through - - case wxITEM_NORMAL: button.fsStyle = TBSTYLE_BUTTON; + break; } bitmapId++; @@ -1021,7 +1018,7 @@ bool wxToolBar::Realize() left = 0; top = y; - y += height + 2*GetMargins().y; + y += height + 2 * GetMargins().y; } else // horizontal toolbar { @@ -1041,22 +1038,19 @@ bool wxToolBar::Realize() if ( !isVertical ) { if ( m_maxRows == 0 ) - { // if not set yet, only one row SetRows(1); - } } else if ( m_nButtons > 0 ) // vertical non empty toolbar { if ( m_maxRows == 0 ) - { // if not set yet, have one column SetRows(m_nButtons); - } } InvalidateBestSize(); SetBestFittingSize(); + UpdateSize(); return true; } @@ -1214,13 +1208,12 @@ wxToolBarToolBase *wxToolBar::FindToolForPosition(wxCoord x, wxCoord y) const pt.x = x; pt.y = y; int index = (int)::SendMessage(GetHwnd(), TB_HITTEST, 0, (LPARAM)&pt); + // MBN: when the point ( x, y ) is close to the toolbar border // TB_HITTEST returns m_nButtons ( not -1 ) if ( index < 0 || (size_t)index >= m_nButtons ) - { // it's a separator or there is no tool at all there return (wxToolBarToolBase *)NULL; - } // when TB_SETBUTTONINFO is available (both during compile- and run-time), // we don't use the dummy separators hack @@ -1244,9 +1237,7 @@ void wxToolBar::UpdateSize() // we must also refresh the frame after the toolbar size (possibly) changed wxFrame *frame = wxDynamicCast(GetParent(), wxFrame); if ( frame ) - { frame->SendSizeEvent(); - } } // ---------------------------------------------------------------------------- @@ -1427,10 +1418,10 @@ bool wxToolBar::HandleSize(WXWPARAM WXUNUSED(wParam), WXLPARAM lParam) bool wxToolBar::HandlePaint(WXWPARAM wParam, WXLPARAM lParam) { - // erase any dummy separators which we used for aligning the controls if - // any here + // erase any dummy separators which were used + // for aligning the controls if any here - // first of all, do we have any controls at all? + // first of all, are there any controls at all? wxToolBarToolsList::compatibility_iterator node; for ( node = m_tools.GetFirst(); node; node = node->GetNext() ) { @@ -1439,10 +1430,8 @@ bool wxToolBar::HandlePaint(WXWPARAM wParam, WXLPARAM lParam) } if ( !node ) - { // no controls, nothing to erase return false; - } // prepare the DC on which we'll be drawing wxClientDC dc(this); @@ -1451,10 +1440,8 @@ bool wxToolBar::HandlePaint(WXWPARAM wParam, WXLPARAM lParam) RECT r; if ( !::GetUpdateRect(GetHwnd(), &r, FALSE) ) - { // nothing to redraw anyhow return false; - } wxRect rectUpdate; wxCopyRECTToRect(r, rectUpdate); @@ -1532,14 +1519,14 @@ void wxToolBar::HandleMouseMove(WXWPARAM WXUNUSED(wParam), WXLPARAM lParam) wxToolBarToolBase* tool = FindToolForPosition( x, y ); // cursor left current tool - if( tool != m_pInTool && !tool ) + if ( tool != m_pInTool && !tool ) { m_pInTool = 0; OnMouseEnter( -1 ); } // cursor entered a tool - if( tool != m_pInTool && tool ) + if ( tool != m_pInTool && tool ) { m_pInTool = tool; OnMouseEnter( tool->GetId() ); @@ -1566,6 +1553,9 @@ WXLRESULT wxToolBar::MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam if ( HandlePaint(wParam, lParam) ) return 0; #endif + + default: + break; } return wxControl::MSWWindowProc(nMsg, wParam, lParam); @@ -1681,5 +1671,5 @@ WXHBITMAP wxToolBar::MapBitmap(WXHBITMAP bitmap, int width, int height) #endif // 0 } -#endif // wxUSE_TOOLBAR && Win95 +#endif // wxUSE_TOOLBAR