Greatly reduce rare animation garbage in wxOwnerDrawnComboBox drop-down animation (fixes #12087)

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@64476 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Jaakko Salli 2010-06-03 15:16:25 +00:00
parent 7c3310596e
commit ce5f620a12
2 changed files with 11 additions and 3 deletions

View File

@ -556,6 +556,8 @@ MSW:
- Fix wxTaskBarIcon for older Windows systems (Daniel Wyatt).
- Fixed wxOwnerDrawnComboBox keyboard handling: drop-down is no longer
displayed when arrow key is pressed (without Alt).
- In some rare cases wxOwnerDrawnComboBox drop-down animation could display
as garbage. This has now been greatly reduced (mcben).
- Fixed wxComboCtrl::SetButtonPosition() on Vista/Win7.
i18n:

View File

@ -730,6 +730,7 @@ void wxComboCtrl::DoTimerEvent()
{
bool stopTimer = false;
wxWindow* win = GetPopupWindow();
wxWindow* popup = GetPopupControl()->GetControl();
// Popup was hidden before it was fully shown?
@ -741,7 +742,6 @@ void wxComboCtrl::DoTimerEvent()
{
wxLongLong t = ::wxGetLocalTimeMillis();
const wxRect& rect = m_animRect;
wxWindow* win = GetPopupWindow();
int pos = (int) (t-m_animStart).GetLo();
if ( pos < COMBOBOX_ANIMATION_DURATION )
@ -759,8 +759,10 @@ void wxComboCtrl::DoTimerEvent()
}
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
@ -771,9 +773,13 @@ void wxComboCtrl::DoTimerEvent()
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