X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/c4e6c15eeb1f2d115102696c383222a22071fe46..8da1f9a99ee0ff9493cc7845ec13100cdeac431c:/src/msw/renderer.cpp diff --git a/src/msw/renderer.cpp b/src/msw/renderer.cpp index 1421f42fb9..9b83f01338 100644 --- a/src/msw/renderer.cpp +++ b/src/msw/renderer.cpp @@ -6,7 +6,7 @@ // Created: 20.07.2003 // RCS-ID: $Id$ // Copyright: (c) 2003 Vadim Zeitlin -// License: wxWindows license +// License: wxWindows licence /////////////////////////////////////////////////////////////////////////////// // ============================================================================ @@ -30,8 +30,8 @@ #include "wx/dc.h" #endif //WX_PRECOMP +#include "wx/splitter.h" #include "wx/renderer.h" - #include "wx/msw/uxtheme.h" // ---------------------------------------------------------------------------- @@ -84,8 +84,8 @@ private: wxRendererNative& wxRendererNative::GetDefault() { wxUxThemeEngine *themeEngine = wxUxThemeEngine::Get(); - return themeEngine && themeEngine->IsThemeActive() ? wxRendererXP::Get() - : wxRendererMSW::Get(); + return themeEngine && themeEngine->IsAppThemed() ? wxRendererXP::Get() + : wxRendererMSW::Get(); } /* static */ @@ -116,17 +116,24 @@ wxRendererNative& wxRendererXP::Get() static const wxCoord SASH_WIDTH = 4; wxSplitterRenderParams -wxRendererXP::GetSplitterParams(const wxWindow * WXUNUSED(win)) +wxRendererXP::GetSplitterParams(const wxWindow * win) { - return wxSplitterRenderParams(SASH_WIDTH, 0, false); + if (win->GetWindowStyle() & wxSP_NO_XP_THEME) + return m_rendererNative.GetSplitterParams(win); + else + return wxSplitterRenderParams(SASH_WIDTH, 0, false); } void -wxRendererXP::DrawSplitterBorder(wxWindow * WXUNUSED(win), - wxDC& WXUNUSED(dc), - const wxRect& WXUNUSED(rect), - int WXUNUSED(flags)) +wxRendererXP::DrawSplitterBorder(wxWindow * win, + wxDC& dc, + const wxRect& rect, + int flags) { + if (win->GetWindowStyle() & wxSP_NO_XP_THEME) + { + m_rendererNative.DrawSplitterBorder(win, dc, rect, flags); + } } void @@ -135,38 +142,42 @@ wxRendererXP::DrawSplitterSash(wxWindow *win, const wxSize& size, wxCoord position, wxOrientation orient, - int WXUNUSED(flags)) + int flags) { - // I don't know if it is correct to use the rebar background for the - // splitter but it least this works ok in the default theme - wxUxThemeHandle hTheme(win, L"REBAR"); - if ( hTheme ) + if ( !win->HasFlag(wxSP_NO_XP_THEME) ) { - RECT rect; - if ( orient == wxVERTICAL ) + wxUxThemeHandle hTheme(win, L"WINDOW"); + if ( hTheme ) { - rect.left = position; - rect.right = position + SASH_WIDTH; - rect.top = 0; - rect.bottom = size.y; + RECT rect; + if ( orient == wxVERTICAL ) + { + rect.left = position; + rect.right = position + SASH_WIDTH; + rect.top = 0; + rect.bottom = size.y; + } + else // wxHORIZONTAL + { + rect.left = 0; + rect.right = size.x; + rect.top = position; + rect.bottom = position + SASH_WIDTH; + } + + wxUxThemeEngine::Get()->DrawThemeBackground + ( + (WXHTHEME)hTheme, + dc.GetHDC(), + 29, // WP_DIALOG: dlg background + 0, // no particular state + &rect, + NULL + ); + return; } - else // wxHORIZONTAL - { - rect.left = 0; - rect.right = size.x; - rect.top = position; - rect.bottom = position + SASH_WIDTH; - } - - wxUxThemeEngine::Get()->DrawThemeBackground - ( - (WXHTHEME)hTheme, - dc.GetHDC(), - 3 /* RP_BAND */, - 0 /* no state */ , - &rect, - NULL - ); } + + m_rendererNative.DrawSplitterSash(win, dc, size, position, orient, flags); }