X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/0f99ce3d757a5d1b95d1821b2e0eef968ef659a7..21e0a4d5f15ea1df40d29359fc1e84085936ef3f:/src/msw/tbar95.cpp diff --git a/src/msw/tbar95.cpp b/src/msw/tbar95.cpp index 1da408f33b..f8ef378aed 100644 --- a/src/msw/tbar95.cpp +++ b/src/msw/tbar95.cpp @@ -239,8 +239,7 @@ bool wxToolBar::Create(wxWindow *parent, SetFont(wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT)); // workaround for flat toolbar on Windows XP classic style: we have to set - // the style after creating the control, doing it at creation time doesn't - // work + // the style after creating the control; doing it at creation time doesn't work #if wxUSE_UXTHEME if ( style & wxTB_FLAT ) { @@ -300,8 +299,8 @@ void wxToolBar::Recreate() ::SetParent(GetHwndOf(win), GetHwnd()); } - // only destroy the old toolbar now -- after all the children had been - // reparented + // only destroy the old toolbar now -- + // after all the children had been reparented ::DestroyWindow(hwndOld); // it is for the old bitmap control and can't be used with the new one @@ -327,14 +326,10 @@ wxToolBar::~wxToolBar() // is not - otherwise toolbar leaves a hole in the place it used to occupy wxFrame *frame = wxDynamicCast(GetParent(), wxFrame); if ( frame && !frame->IsBeingDeleted() ) - { frame->SendSizeEvent(); - } if ( m_hBitmap ) - { ::DeleteObject((HBITMAP) m_hBitmap); - } delete m_disabledImgList; } @@ -393,14 +388,10 @@ WXDWORD wxToolBar::MSWGetStyle(long style, WXDWORD *exstyle) const // incorrect background colour - and not using it still results in the // correct (flat) toolbar, so don't use it there if ( s_verComCtl > 400 && s_verComCtl < 600 ) - { msStyle |= TBSTYLE_FLAT | TBSTYLE_TRANSPARENT; - } if ( s_verComCtl >= 470 && style & wxTB_HORZ_LAYOUT ) - { msStyle |= TBSTYLE_LIST; - } } if ( style & wxTB_NODIVIDER ) @@ -451,9 +442,7 @@ bool wxToolBar::DoDeleteTool(size_t pos, wxToolBarToolBase *tool) } if ( tool2->IsControl() ) - { pos += ((wxToolBarTool *)tool2)->GetSeparatorsCount() - 1; - } } // now determine the number of buttons to delete and the area taken by them @@ -509,6 +498,12 @@ bool wxToolBar::DoDeleteTool(size_t pos, wxToolBarToolBase *tool) void wxToolBar::CreateDisabledImageList() { + if (m_disabledImgList != NULL) + { + delete m_disabledImgList; + m_disabledImgList = NULL; + } + // as we can't use disabled image list with older versions of comctl32.dll, // don't even bother creating it if ( wxTheApp->GetComCtl32Version() >= 470 ) @@ -528,14 +523,12 @@ void wxToolBar::CreateDisabledImageList() bmpDisabled.GetMask() != NULL, GetToolsCount() ); - return; + break; } } // we don't have any disabled bitmaps } - - m_disabledImgList = NULL; } bool wxToolBar::Realize() @@ -550,21 +543,18 @@ bool wxToolBar::Realize() const bool isVertical = HasFlag(wxTB_VERTICAL); bool doRemap, doRemapBg, doTransparent; -#ifdef __WXWINCE__ - doRemapBg = false; - doRemap = false; - doTransparent = false; -#else - if (wxSystemOptions::GetOptionInt(wxT("msw.remap")) == 2) + doRemapBg = doRemap = doTransparent = false; + +#ifndef __WXWINCE__ + int remapValue = (-1); + if (wxSystemOptions::HasOption(wxT("msw.remap"))) + remapValue = wxSystemOptions::GetOptionInt(wxT("msw.remap")); + + doTransparent = (remapValue == 2); + if (!doTransparent) { - doRemapBg = doRemap = false; - doTransparent = true; - } - else - { doRemap = !wxSystemOptions::HasOption(wxT("msw.remap")) - || wxSystemOptions::GetOptionInt(wxT("msw.remap")) == 1; + doRemap = (remapValue != 0); doRemapBg = !doRemap; - doTransparent = false; } #endif @@ -607,13 +597,14 @@ bool wxToolBar::Realize() wxMemoryDC dcAllButtons; wxBitmap bitmap(totalBitmapWidth, totalBitmapHeight); dcAllButtons.SelectObject(bitmap); -#ifdef __WXWINCE__ - dcAllButtons.SetBackground(wxBrush(wxColour(192,192,192))); -#else + +#ifndef __WXWINCE__ if (doTransparent) dcAllButtons.SetBackground(*wxTRANSPARENT_BRUSH); else - dcAllButtons.SetBackground(*wxLIGHT_GREY_BRUSH); + dcAllButtons.SetBackground(wxBrush(GetBackgroundColour())); +#else + dcAllButtons.SetBackground(wxBrush(wxColour(192,192,192))); #endif dcAllButtons.Clear(); @@ -631,8 +622,6 @@ bool wxToolBar::Realize() totalBitmapWidth, totalBitmapHeight); dcAllButtons.SelectObject(bitmap); - - } #endif // !__WXWINCE__ @@ -701,9 +690,7 @@ bool wxToolBar::Realize() #endif // wxUSE_IMAGE if (doRemap) - { MapBitmap(bmpDisabled.GetHBITMAP(), w, h); - } m_disabledImgList->Add(bmpDisabled); } @@ -726,8 +713,6 @@ bool wxToolBar::Realize() // Map to system colours hBitmap = (HBITMAP)MapBitmap((WXHBITMAP) hBitmap, totalBitmapWidth, totalBitmapHeight); - - } bool addBitmap = true; @@ -822,7 +807,6 @@ bool wxToolBar::Realize() continue; } - TBBUTTON& button = buttons[i]; wxZeroMemory(button); @@ -888,9 +872,8 @@ bool wxToolBar::Realize() break; if ( tool->Toggle(false) ) - { DoToggleTool(tool, false); - } + prevButton.fsState = TBSTATE_ENABLED; nodePrev = nodePrev->GetPrevious(); prevIndex--; @@ -963,7 +946,6 @@ bool wxToolBar::Realize() } wxControl *control = tool->GetControl(); - wxSize size = control->GetSize(); // the position of the leftmost controls corner