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:
@@ -556,6 +556,8 @@ MSW:
|
|||||||
- Fix wxTaskBarIcon for older Windows systems (Daniel Wyatt).
|
- Fix wxTaskBarIcon for older Windows systems (Daniel Wyatt).
|
||||||
- Fixed wxOwnerDrawnComboBox keyboard handling: drop-down is no longer
|
- Fixed wxOwnerDrawnComboBox keyboard handling: drop-down is no longer
|
||||||
displayed when arrow key is pressed (without Alt).
|
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.
|
- Fixed wxComboCtrl::SetButtonPosition() on Vista/Win7.
|
||||||
|
|
||||||
i18n:
|
i18n:
|
||||||
|
@@ -730,6 +730,7 @@ void wxComboCtrl::DoTimerEvent()
|
|||||||
{
|
{
|
||||||
bool stopTimer = false;
|
bool stopTimer = false;
|
||||||
|
|
||||||
|
wxWindow* win = GetPopupWindow();
|
||||||
wxWindow* popup = GetPopupControl()->GetControl();
|
wxWindow* popup = GetPopupControl()->GetControl();
|
||||||
|
|
||||||
// Popup was hidden before it was fully shown?
|
// Popup was hidden before it was fully shown?
|
||||||
@@ -741,7 +742,6 @@ void wxComboCtrl::DoTimerEvent()
|
|||||||
{
|
{
|
||||||
wxLongLong t = ::wxGetLocalTimeMillis();
|
wxLongLong t = ::wxGetLocalTimeMillis();
|
||||||
const wxRect& rect = m_animRect;
|
const wxRect& rect = m_animRect;
|
||||||
wxWindow* win = GetPopupWindow();
|
|
||||||
|
|
||||||
int pos = (int) (t-m_animStart).GetLo();
|
int pos = (int) (t-m_animStart).GetLo();
|
||||||
if ( pos < COMBOBOX_ANIMATION_DURATION )
|
if ( pos < COMBOBOX_ANIMATION_DURATION )
|
||||||
@@ -759,8 +759,10 @@ void wxComboCtrl::DoTimerEvent()
|
|||||||
}
|
}
|
||||||
else
|
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 );
|
win->SetSize( rect.x, rect.y, rect.width, h );
|
||||||
|
popup->Move( 0, -y );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -771,9 +773,13 @@ void wxComboCtrl::DoTimerEvent()
|
|||||||
|
|
||||||
if ( stopTimer )
|
if ( stopTimer )
|
||||||
{
|
{
|
||||||
popup->Move( 0, 0 );
|
|
||||||
m_animTimer.Stop();
|
m_animTimer.Stop();
|
||||||
DoShowPopup( m_animRect, m_animFlags );
|
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
|
#endif
|
||||||
|
Reference in New Issue
Block a user