X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/85b657c79d32e5876ce5b8ae1e7b9519fee18247..feb8276801ff0a375d5a9221b40d6b45d4552656:/src/msw/renderer.cpp diff --git a/src/msw/renderer.cpp b/src/msw/renderer.cpp index 8a0e5e0f14..d045a5ee8e 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" // ---------------------------------------------------------------------------- @@ -62,13 +62,15 @@ public: virtual void DrawSplitterBorder(wxWindow *win, wxDC& dc, - const wxRect& rect); + const wxRect& rect, + int flags = 0); virtual void DrawSplitterSash(wxWindow *win, wxDC& dc, const wxSize& size, wxCoord position, - wxOrientation orient); - virtual wxPoint GetSplitterSashAndBorder(const wxWindow *win); + wxOrientation orient, + int flags = 0); + virtual wxSplitterRenderParams GetSplitterParams(const wxWindow *win); private: DECLARE_NO_COPY_CLASS(wxRendererXP) @@ -82,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 */ @@ -113,16 +115,25 @@ wxRendererNative& wxRendererXP::Get() // the width of the sash: this is the same as used by Explorer... static const wxCoord SASH_WIDTH = 4; -wxPoint wxRendererXP::GetSplitterSashAndBorder(const wxWindow * WXUNUSED(win)) +wxSplitterRenderParams +wxRendererXP::GetSplitterParams(const wxWindow * win) { - return wxPoint(SASH_WIDTH, 0); + 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)) +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 @@ -130,8 +141,16 @@ wxRendererXP::DrawSplitterSash(wxWindow *win, wxDC& dc, const wxSize& size, wxCoord position, - wxOrientation orient) + wxOrientation orient, + int flags) { + if (win->GetWindowStyle() & wxSP_NO_XP_THEME) + { + m_rendererNative.DrawSplitterSash( + win, dc, size, position, orient, flags); + return; + } + // 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");