#include "wx/splitter.h"
#include "wx/renderer.h"
#include "wx/msw/uxtheme.h"
+#include "wx/msw/private.h"
// ----------------------------------------------------------------------------
// wxRendererMSW: wxRendererNative implementation for "old" Win32 systems
static wxRendererNative& Get();
+ virtual void DrawComboBoxDropButton(wxWindow *win,
+ wxDC& dc,
+ const wxRect& rect,
+ int flags = 0);
+
private:
DECLARE_NO_COPY_CLASS(wxRendererMSW)
};
wxCoord position,
wxOrientation orient,
int flags = 0);
+
virtual wxSplitterRenderParams GetSplitterParams(const wxWindow *win);
private:
return s_rendererMSW;
}
+void
+wxRendererMSW::DrawComboBoxDropButton(wxWindow * WXUNUSED(win),
+ wxDC& dc,
+ const wxRect& rect,
+ int flags)
+{
+ RECT r;
+ r.left = rect.GetLeft();
+ r.top = rect.GetTop();
+ r.bottom = rect.GetBottom();
+ r.right = rect.GetRight();
+
+ int style = DFCS_SCROLLCOMBOBOX;
+ if ( flags & wxCONTROL_DISABLED )
+ style |= DFCS_INACTIVE;
+ if ( flags & wxCONTROL_PRESSED )
+ style |= DFCS_PUSHED;
+
+ ::DrawFrameControl(GetHdcOf(dc), &r, DFC_SCROLL, style);
+}
+
// ============================================================================
// wxRendererXP implementation
// ============================================================================
wxOrientation orient,
int flags)
{
- if (win->GetWindowStyle() & wxSP_NO_XP_THEME)
+ if ( !win->HasFlag(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");
- if ( hTheme )
- {
- 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);
}