avoid flicker in methods which don't change listbox size by not calling XtUnmanage/ManageChild() unnecessarily (patch 1566670)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@41591 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -209,33 +209,18 @@ void wxListBox::DoSetFirstItem( int N )
|
||||
|
||||
void wxListBox::Delete(unsigned int n)
|
||||
{
|
||||
wxSizeKeeper sk( this );
|
||||
Widget listBox = (Widget) m_mainWidget;
|
||||
|
||||
bool managed = XtIsManaged(listBox);
|
||||
|
||||
if (managed)
|
||||
XtUnmanageChild (listBox);
|
||||
|
||||
XmListDeletePos (listBox, n + 1);
|
||||
|
||||
if (managed)
|
||||
XtManageChild (listBox);
|
||||
|
||||
sk.Restore();
|
||||
m_clientDataDict.Delete(n, HasClientObjectData());
|
||||
m_noItems --;
|
||||
}
|
||||
|
||||
int wxListBox::DoAppend(const wxString& item)
|
||||
{
|
||||
wxSizeKeeper sk( this );
|
||||
Widget listBox = (Widget) m_mainWidget;
|
||||
|
||||
bool managed = XtIsManaged(listBox);
|
||||
|
||||
if (managed)
|
||||
XtUnmanageChild (listBox);
|
||||
int n;
|
||||
XtVaGetValues (listBox, XmNitemCount, &n, NULL);
|
||||
wxXmString text( item );
|
||||
@@ -246,10 +231,6 @@ int wxListBox::DoAppend(const wxString& item)
|
||||
// selection policy!!
|
||||
SetSelectionPolicy();
|
||||
|
||||
if (managed)
|
||||
XtManageChild (listBox);
|
||||
|
||||
sk.Restore();
|
||||
m_noItems ++;
|
||||
|
||||
return GetCount() - 1;
|
||||
@@ -257,16 +238,11 @@ int wxListBox::DoAppend(const wxString& item)
|
||||
|
||||
void wxListBox::DoSetItems(const wxArrayString& items, void** clientData)
|
||||
{
|
||||
wxSizeKeeper sk( this );
|
||||
Widget listBox = (Widget) m_mainWidget;
|
||||
|
||||
if( HasClientObjectData() )
|
||||
m_clientDataDict.DestroyData();
|
||||
|
||||
bool managed = XtIsManaged(listBox);
|
||||
|
||||
if (managed)
|
||||
XtUnmanageChild (listBox);
|
||||
XmString *text = new XmString[items.GetCount()];
|
||||
unsigned int i;
|
||||
for (i = 0; i < items.GetCount(); ++i)
|
||||
@@ -285,11 +261,6 @@ void wxListBox::DoSetItems(const wxArrayString& items, void** clientData)
|
||||
// selection policy!!
|
||||
SetSelectionPolicy();
|
||||
|
||||
if (managed)
|
||||
XtManageChild (listBox);
|
||||
|
||||
sk.Restore();
|
||||
|
||||
m_noItems = items.GetCount();
|
||||
}
|
||||
|
||||
@@ -487,14 +458,8 @@ wxString wxListBox::GetString(unsigned int n) const
|
||||
|
||||
void wxListBox::DoInsertItems(const wxArrayString& items, unsigned int pos)
|
||||
{
|
||||
wxSizeKeeper sk( this );
|
||||
Widget listBox = (Widget) m_mainWidget;
|
||||
|
||||
bool managed = XtIsManaged(listBox);
|
||||
|
||||
if (managed)
|
||||
XtUnmanageChild(listBox);
|
||||
|
||||
XmString *text = new XmString[items.GetCount()];
|
||||
unsigned int i;
|
||||
// Steve Hammes: Motif 1.1 compatibility
|
||||
@@ -520,11 +485,6 @@ void wxListBox::DoInsertItems(const wxArrayString& items, unsigned int pos)
|
||||
// selection policy!!
|
||||
SetSelectionPolicy();
|
||||
|
||||
if (managed)
|
||||
XtManageChild(listBox);
|
||||
|
||||
sk.Restore();
|
||||
|
||||
m_noItems += items.GetCount();
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user