#define NATIVE_TEXT_INDENT_XP 4
#define NATIVE_TEXT_INDENT_CLASSIC 2
-#define TEXTCTRLYADJUST_XP 3
-#define TEXTCTRLYADJUST_CLASSIC 3
-
#define COMBOBOX_ANIMATION_RESOLUTION 10
#define COMBOBOX_ANIMATION_DURATION 200 // In milliseconds
if ( style & wxCC_STD_BUTTON )
m_iFlags |= wxCC_POPUP_ON_MOUSE_UP;
+ // Prepare background for double-buffering or better background theme
+ // support, whichever is possible.
+ SetDoubleBuffered(true);
+ if ( !IsDoubleBuffered() )
+ SetBackgroundStyle( wxBG_STYLE_PAINT );
+
// Create textctrl, if necessary
CreateTextCtrl( wxNO_BORDER );
// Add keyboard input handlers for main control and textctrl
InstallInputHandlers();
- // Prepare background for double-buffering
- SetBackgroundStyle( wxBG_STYLE_CUSTOM );
-
// SetInitialSize should be called last
SetInitialSize(size);
//
// Recalculates button and textctrl areas
- int textCtrlYAdjust;
-
-#if wxUSE_UXTHEME
- if ( wxUxThemeEngine::GetIfActive() )
- {
- textCtrlYAdjust = TEXTCTRLYADJUST_XP;
- }
- else
-#endif
- {
- textCtrlYAdjust = TEXTCTRLYADJUST_CLASSIC;
- }
-
// Technically Classic Windows style combo has more narrow button,
// but the native renderer doesn't paint it well like that.
int btnWidth = 17;
CalculateAreas(btnWidth);
// Position textctrl using standard routine
- PositionTextCtrl(0, textCtrlYAdjust);
+ PositionTextCtrl();
}
// Draws non-XP GUI dotted line around the focus area
// TODO: Convert drawing in this function to Windows API Code
wxSize sz = GetClientSize();
- wxAutoBufferedPaintDC dc(this);
+ wxDC* dcPtr = wxAutoBufferedPaintDCFactory(this);
+ wxDC& dc = *dcPtr;
const wxRect& rectButton = m_btnArea;
wxRect rectTextField = m_tcArea;
else
wxComboPopup::DefaultPaintComboControl(this,dc,rectTextField);
}
+
+ delete dcPtr;
}
void wxComboCtrl::OnMouseEvent( wxMouseEvent& event )