// Created: 20.07.2003
// RCS-ID: $Id$
// Copyright: (c) 2003 Vadim Zeitlin <vadim@wxwindows.org>
-// License: wxWindows license
+// License: wxWindows licence
///////////////////////////////////////////////////////////////////////////////
// ============================================================================
#include "wx/dc.h"
#endif //WX_PRECOMP
+#include "wx/splitter.h"
#include "wx/renderer.h"
-
#include "wx/msw/uxtheme.h"
// ----------------------------------------------------------------------------
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)
wxRendererNative& wxRendererNative::GetDefault()
{
wxUxThemeEngine *themeEngine = wxUxThemeEngine::Get();
- return themeEngine && themeEngine->IsThemeActive() ? wxRendererXP::Get()
- : wxRendererMSW::Get();
+ return themeEngine && themeEngine->IsAppThemed() ? wxRendererXP::Get()
+ : wxRendererMSW::Get();
}
/* static */
// 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
wxDC& dc,
const wxSize& size,
wxCoord position,
- wxOrientation orient)
+ wxOrientation orient,
+ 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);
}