X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/85b657c79d32e5876ce5b8ae1e7b9519fee18247..56a44c64517cc79a1afead0e9397da740b1bc79d:/src/msw/renderer.cpp diff --git a/src/msw/renderer.cpp b/src/msw/renderer.cpp index 8a0e5e0f14..d4c36549f8 100644 --- a/src/msw/renderer.cpp +++ b/src/msw/renderer.cpp @@ -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");