fixed wxCheckListBox behaviour in presense of wxLB_SORT style (bug 529786)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@14896 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
parent
f88c1a172e
commit
fd7ab28c5e
@ -147,6 +147,7 @@ wxMSW:
|
|||||||
recursion any more
|
recursion any more
|
||||||
- wxTextCtrl with wxTE_RICH flag scrolls to the end when text is appended to it
|
- wxTextCtrl with wxTE_RICH flag scrolls to the end when text is appended to it
|
||||||
- the separators are not seen behind the controls added to the toolbar any more
|
- the separators are not seen behind the controls added to the toolbar any more
|
||||||
|
- wxLB_SORT style can be used with wxCheckListBox
|
||||||
- wxWindowDC and wxClientDC::GetSize() works correctly now
|
- wxWindowDC and wxClientDC::GetSize() works correctly now
|
||||||
|
|
||||||
wxGTK:
|
wxGTK:
|
||||||
|
@ -43,7 +43,6 @@ public:
|
|||||||
|
|
||||||
// override base class virtuals
|
// override base class virtuals
|
||||||
virtual void Delete(int n);
|
virtual void Delete(int n);
|
||||||
virtual void InsertItems(int nItems, const wxString items[], int pos);
|
|
||||||
|
|
||||||
virtual bool SetFont( const wxFont &font );
|
virtual bool SetFont( const wxFont &font );
|
||||||
|
|
||||||
|
@ -299,26 +299,6 @@ void wxCheckListBox::Delete(int N)
|
|||||||
m_aItems.RemoveAt(N);
|
m_aItems.RemoveAt(N);
|
||||||
}
|
}
|
||||||
|
|
||||||
void wxCheckListBox::InsertItems(int nItems, const wxString items[], int pos)
|
|
||||||
{
|
|
||||||
wxCHECK_RET( pos >= 0 && pos <= m_noItems,
|
|
||||||
wxT("invalid index in wxCheckListBox::InsertItems") );
|
|
||||||
|
|
||||||
wxListBox::InsertItems(nItems, items, pos);
|
|
||||||
|
|
||||||
int i;
|
|
||||||
for ( i = 0; i < nItems; i++ ) {
|
|
||||||
wxOwnerDrawn *pNewItem = CreateItem((size_t)(pos + i));
|
|
||||||
pNewItem->SetName(items[i]);
|
|
||||||
pNewItem->SetFont(GetFont());
|
|
||||||
|
|
||||||
m_aItems.Insert(pNewItem, (size_t)(pos + i));
|
|
||||||
|
|
||||||
ListBox_SetItemData((HWND)GetHWND(), i + pos, pNewItem);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
bool wxCheckListBox::SetFont( const wxFont &font )
|
bool wxCheckListBox::SetFont( const wxFont &font )
|
||||||
{
|
{
|
||||||
size_t i;
|
size_t i;
|
||||||
|
@ -284,11 +284,11 @@ int wxListBox::DoAppend(const wxString& item)
|
|||||||
if ( m_windowStyle & wxLB_OWNERDRAW ) {
|
if ( m_windowStyle & wxLB_OWNERDRAW ) {
|
||||||
wxOwnerDrawn *pNewItem = CreateItem(index); // dummy argument
|
wxOwnerDrawn *pNewItem = CreateItem(index); // dummy argument
|
||||||
pNewItem->SetName(item);
|
pNewItem->SetName(item);
|
||||||
m_aItems.Add(pNewItem);
|
m_aItems.Insert(pNewItem, index);
|
||||||
ListBox_SetItemData(GetHwnd(), index, pNewItem);
|
ListBox_SetItemData(GetHwnd(), index, pNewItem);
|
||||||
pNewItem->SetFont(GetFont());
|
pNewItem->SetFont(GetFont());
|
||||||
}
|
}
|
||||||
#endif
|
#endif // wxUSE_OWNER_DRAWN
|
||||||
|
|
||||||
SetHorizontalExtent(item);
|
SetHorizontalExtent(item);
|
||||||
|
|
||||||
@ -329,14 +329,10 @@ void wxListBox::DoSetItems(const wxArrayString& choices, void** clientData)
|
|||||||
#if wxUSE_OWNER_DRAWN
|
#if wxUSE_OWNER_DRAWN
|
||||||
if ( m_windowStyle & wxLB_OWNERDRAW ) {
|
if ( m_windowStyle & wxLB_OWNERDRAW ) {
|
||||||
// first delete old items
|
// first delete old items
|
||||||
size_t ui = m_aItems.Count();
|
WX_CLEAR_ARRAY(m_aItems);
|
||||||
while ( ui-- != 0 ) {
|
|
||||||
delete m_aItems[ui];
|
|
||||||
}
|
|
||||||
m_aItems.Empty();
|
|
||||||
|
|
||||||
// then create new ones
|
// then create new ones
|
||||||
for ( ui = 0; ui < (size_t)m_noItems; ui++ ) {
|
for ( size_t ui = 0; ui < (size_t)m_noItems; ui++ ) {
|
||||||
wxOwnerDrawn *pNewItem = CreateItem(ui);
|
wxOwnerDrawn *pNewItem = CreateItem(ui);
|
||||||
pNewItem->SetName(choices[ui]);
|
pNewItem->SetName(choices[ui]);
|
||||||
m_aItems.Add(pNewItem);
|
m_aItems.Add(pNewItem);
|
||||||
@ -378,12 +374,7 @@ void wxListBox::Free()
|
|||||||
#if wxUSE_OWNER_DRAWN
|
#if wxUSE_OWNER_DRAWN
|
||||||
if ( m_windowStyle & wxLB_OWNERDRAW )
|
if ( m_windowStyle & wxLB_OWNERDRAW )
|
||||||
{
|
{
|
||||||
size_t uiCount = m_aItems.Count();
|
WX_CLEAR_ARRAY(m_aItems);
|
||||||
while ( uiCount-- != 0 ) {
|
|
||||||
delete m_aItems[uiCount];
|
|
||||||
}
|
|
||||||
|
|
||||||
m_aItems.Clear();
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
#endif // wxUSE_OWNER_DRAWN
|
#endif // wxUSE_OWNER_DRAWN
|
||||||
@ -521,7 +512,19 @@ wxListBox::DoInsertItems(const wxArrayString& items, int pos)
|
|||||||
|
|
||||||
int nItems = items.GetCount();
|
int nItems = items.GetCount();
|
||||||
for ( int i = 0; i < nItems; i++ )
|
for ( int i = 0; i < nItems; i++ )
|
||||||
ListBox_InsertString(GetHwnd(), i + pos, items[i]);
|
{
|
||||||
|
int idx = ListBox_InsertString(GetHwnd(), i + pos, items[i]);
|
||||||
|
|
||||||
|
#if wxUSE_OWNER_DRAWN
|
||||||
|
wxOwnerDrawn *pNewItem = CreateItem(idx);
|
||||||
|
pNewItem->SetName(items[i]);
|
||||||
|
pNewItem->SetFont(GetFont());
|
||||||
|
m_aItems.Insert(pNewItem, idx);
|
||||||
|
|
||||||
|
ListBox_SetItemData(GetHwnd(), idx, pNewItem);
|
||||||
|
#endif // wxUSE_OWNER_DRAWN
|
||||||
|
}
|
||||||
|
|
||||||
m_noItems += nItems;
|
m_noItems += nItems;
|
||||||
|
|
||||||
SetHorizontalExtent();
|
SetHorizontalExtent();
|
||||||
@ -566,6 +569,7 @@ void wxListBox::SetString(int N, const wxString& s)
|
|||||||
{
|
{
|
||||||
// update item's text
|
// update item's text
|
||||||
m_aItems[N]->SetName(s);
|
m_aItems[N]->SetName(s);
|
||||||
|
|
||||||
// reassign the item's data
|
// reassign the item's data
|
||||||
ListBox_SetItemData(GetHwnd(), N, m_aItems[N]);
|
ListBox_SetItemData(GetHwnd(), N, m_aItems[N]);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user