X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/8b97949eac07868acc35b05a9d563067fbe76c6d..569f027b89890ed6f5ddbaf45bb1b53810e3519d:/src/msw/renderer.cpp diff --git a/src/msw/renderer.cpp b/src/msw/renderer.cpp index 4dd96d850a..d4c36549f8 100644 --- a/src/msw/renderer.cpp +++ b/src/msw/renderer.cpp @@ -26,10 +26,12 @@ #ifndef WX_PRECOMP #include "wx/string.h" + #include "wx/window.h" + #include "wx/dc.h" #endif //WX_PRECOMP +#include "wx/splitter.h" #include "wx/renderer.h" - #include "wx/msw/uxtheme.h" // ---------------------------------------------------------------------------- @@ -60,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) @@ -80,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 */ @@ -111,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 @@ -128,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"); @@ -153,7 +174,7 @@ wxRendererXP::DrawSplitterSash(wxWindow *win, wxUxThemeEngine::Get()->DrawThemeBackground ( - hTheme, + (WXHTHEME)hTheme, dc.GetHDC(), 3 /* RP_BAND */, 0 /* no state */ ,