From: Julian Smart Date: Sat, 11 Feb 2006 15:41:40 +0000 (+0000) Subject: Applied patch [ 1412216 ] non-themed fallback support for other wxNotebook orientation X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/7cc1ad299f621876234131268bbd8b927e7e6168 Applied patch [ 1412216 ] non-themed fallback support for other wxNotebook orientation git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@37490 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/docs/changes.txt b/docs/changes.txt index 824dbde268..53c813b206 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -82,13 +82,13 @@ All (GUI): - Added wxToolbook (uses a wxToolBar to control pages). - Added SetSheetStyle to wxPropertySheetDialog and allowed it to behave like a Mac OS X settings dialog. -- Added XRC tag for wxToolBar elements and for wxToolBar itself -- Fixed centering of top level windows on secondary displays -- Implemented wxDisplay::GetFromWindow() for platforms other than MSW +- Added XRC tag for wxToolBar elements and for wxToolBar itself. +- Fixed centering of top level windows on secondary displays. +- Implemented wxDisplay::GetFromWindow() for platforms other than MSW. wxMSW: -- Fixed crash with ownerdrawn menu items accelerators (Perry Miller) +- Fixed crash with ownerdrawn menu items accelerators (Perry Miller). - wxFileDialog respects absence of wxCHANGE_DIR flag under NT (Brad Anderson). - Switching page of a hidden notebook doesn't lose focus (Jamie Gadd). - Removed wxImageList *GetImageList(int) const. @@ -128,6 +128,7 @@ wxMSW: - Fixed problem with getting input in universal/unicode build of wxMSW. - Link oleacc.lib conditionally. - Drag and drop now works inside static boxes. +- Fall back to unthemed wxNotebook if specified orientation not available. wxGTK: diff --git a/src/msw/notebook.cpp b/src/msw/notebook.cpp index 8405625fcc..4792bbef1c 100644 --- a/src/msw/notebook.cpp +++ b/src/msw/notebook.cpp @@ -275,19 +275,16 @@ bool wxNotebook::Create(wxWindow *parent, style |= wxBORDER_SUNKEN; #endif - // comctl32.dll 6.0 doesn't support non-top tabs with visual styles (the - // control is simply not rendered correctly), so disable them in this case +#if !wxUSE_UXTHEME + // ComCtl32 notebook tabs simply don't work unless they're on top if we have uxtheme, we can + // work around it later (after control creation), but if we don't have uxtheme, we have to clear + // those styles const int verComCtl32 = wxApp::GetComCtl32Version(); if ( verComCtl32 == 600 ) { - // check if we use themes at all -- if we don't, we're still ok -#if wxUSE_UXTHEME - if ( wxUxThemeEngine::GetIfActive() ) -#endif - { - style &= ~(wxBK_BOTTOM | wxBK_LEFT | wxBK_RIGHT); - } + style &= ~(wxNB_BOTTOM | wxNB_LEFT | wxNB_RIGHT); } +#endif //wxUSE_UXTHEME LPCTSTR className = WC_TABCONTROL; @@ -348,6 +345,22 @@ bool wxNotebook::Create(wxWindow *parent, // create backing store UpdateBgBrush(); } + + // comctl32.dll 6.0 doesn't support non-top tabs with visual styles (the + // control is simply not rendered correctly), so we disable themes + // if possible, otherwise we simply clear the styles. + // It's probably not possible to have UXTHEME without ComCtl32 6 or better, but lets + // check it anyway. + const int verComCtl32 = wxApp::GetComCtl32Version(); + if ( verComCtl32 == 600 ) + { + // check if we use themes at all -- if we don't, we're still okay + if ( wxUxThemeEngine::GetIfActive() && (style & (wxNB_BOTTOM|wxNB_LEFT|wxNB_RIGHT))) + { + wxUxThemeEngine::GetIfActive()->SetWindowTheme((HWND)this->GetHandle(), L"", L""); + SetBackgroundColour(GetThemeBackgroundColour()); //correct the background color for the new non-themed control + } + } #endif // wxUSE_UXTHEME // Undocumented hack to get flat notebook style