pos,
size,
style | wxFULL_REPAINT_ON_RESIZE,
- wxDefaultValidator,
+ validator,
name) )
return false;
m_iFlags |= wxCC_POPUP_ON_MOUSE_UP;
// Create textctrl, if necessary
- CreateTextCtrl( wxNO_BORDER, validator );
+ CreateTextCtrl( wxNO_BORDER );
// Add keyboard input handlers for main control and textctrl
InstallInputHandlers();
{
bool stopTimer = false;
+ wxWindow* win = GetPopupWindow();
wxWindow* popup = GetPopupControl()->GetControl();
// Popup was hidden before it was fully shown?
{
wxLongLong t = ::wxGetLocalTimeMillis();
const wxRect& rect = m_animRect;
- wxWindow* win = GetPopupWindow();
int pos = (int) (t-m_animStart).GetLo();
if ( pos < COMBOBOX_ANIMATION_DURATION )
}
else
{
- popup->Move( 0, -y );
+ // Note that apparently Move() should be called after
+ // SetSize() to reduce (or even eliminate) animation garbage
win->SetSize( rect.x, rect.y, rect.width, h );
+ popup->Move( 0, -y );
}
}
else
if ( stopTimer )
{
- popup->Move( 0, 0 );
m_animTimer.Stop();
DoShowPopup( m_animRect, m_animFlags );
+ popup->Move( 0, 0 );
+
+ // Do a one final refresh to clean up the rare cases of animation
+ // garbage
+ win->Refresh();
}
}
#endif
case WXK_UP:
case WXK_NUMPAD_DOWN:
case WXK_NUMPAD_UP:
- // On XP or with writable combo in Classic, arrows don't open the
- // popup but Alt-arrow does
- if ( event.AltDown() ||
- ( !isPopupShown &&
- HasFlag(wxCB_READONLY)
-#if wxUSE_UXTHEME
- && !wxUxThemeEngine::GetIfActive()
-#endif
- ) )
- {
+ // Arrow keys (and mouse wheel) toggle the popup in the native
+ // combo boxes
+ if ( event.AltDown() )
return true;
- }
break;
}