Consistently use InitListEvent() to initialize wxListEvents

This notably fixes missing item index and data for the CHECKED events,
and simplifies the code in the other places.
This commit is contained in:
Vadim Zeitlin
2019-09-15 00:42:41 +02:00
parent d579b5760f
commit 409748be72

View File

@@ -268,15 +268,12 @@ public:
m_rows[row].m_checked = m_rows[row].m_checked =
static_cast<Qt::CheckState>(value.toUInt()) == Qt::Checked; static_cast<Qt::CheckState>(value.toUInt()) == Qt::Checked;
wxListItem listItem; wxListEvent event;
listItem.SetId(row); InitListEvent(event,
m_listCtrl,
const wxEventType eventType = m_rows[row].m_checked ? m_rows[row].m_checked ? wxEVT_LIST_ITEM_CHECKED
wxEVT_LIST_ITEM_CHECKED : wxEVT_LIST_ITEM_UNCHECKED; : wxEVT_LIST_ITEM_UNCHECKED,
index);
wxListEvent event(eventType, m_listCtrl->GetId());
event.SetEventObject(m_listCtrl);
event.SetItem(listItem);
m_listCtrl->HandleWindowEvent(event); m_listCtrl->HandleWindowEvent(event);
return true; return true;
} }
@@ -939,15 +936,13 @@ public:
return; return;
const wxString editedText = m_itemDelegate.GetEditControl()->GetLineText(0); const wxString editedText = m_itemDelegate.GetEditControl()->GetLineText(0);
wxListItem listItem;
listItem.SetId(current_index.row());
listItem.SetColumn(current_index.column());
listItem.SetText(editedText);
wxListEvent event(wxEVT_LIST_END_LABEL_EDIT, GetHandler()->GetId()); wxListEvent event;
event.SetEventObject(GetHandler()); InitListEvent(event,
event.SetItem(listItem); GetHandler(),
event.SetIndex(listItem.GetId()); wxEVT_LIST_END_LABEL_EDIT,
current_index);
event.m_item.SetText(editedText);
if (hint == QAbstractItemDelegate::RevertModelCache) if (hint == QAbstractItemDelegate::RevertModelCache)
{ {
@@ -1630,12 +1625,9 @@ bool wxListCtrl::DeleteItem(long item)
m_model->removeRow(item, QModelIndex()); m_model->removeRow(item, QModelIndex());
wxListItem listItem; wxListEvent event;
listItem.SetId(item); InitListEvent(event, this, wxEVT_LIST_DELETE_ITEM);
event.m_item.SetId(item);
wxListEvent event(wxEVT_LIST_DELETE_ITEM, GetId());
event.SetEventObject(this);
event.SetItem(listItem);
HandleWindowEvent(event); HandleWindowEvent(event);
@@ -1649,8 +1641,9 @@ bool wxListCtrl::DeleteAllItems()
m_model->removeRows(0, GetItemCount(), QModelIndex()); m_model->removeRows(0, GetItemCount(), QModelIndex());
wxListEvent event(wxEVT_LIST_DELETE_ALL_ITEMS, GetId()); wxListEvent event;
event.SetEventObject(this); InitListEvent(event, this, wxEVT_LIST_DELETE_ALL_ITEMS);
HandleWindowEvent(event); HandleWindowEvent(event);
return true; return true;
@@ -1687,15 +1680,8 @@ wxTextCtrl* wxListCtrl::EditLabel(long item,
const QModelIndex index = m_model->index(item, 0); const QModelIndex index = m_model->index(item, 0);
m_qtTreeWidget->openPersistentEditor(index); m_qtTreeWidget->openPersistentEditor(index);
wxListItem listItem; wxListEvent event;
listItem.SetId(index.row()); InitListEvent(event, this, wxEVT_LIST_BEGIN_LABEL_EDIT, index);
listItem.SetColumn(index.column());
GetItem(listItem);
wxListEvent event(wxEVT_LIST_BEGIN_LABEL_EDIT, GetId());
event.SetEventObject(this);
event.SetItem(listItem);
// close the editor again if event is vetoed // close the editor again if event is vetoed
if (HandleWindowEvent(event) && !event.IsAllowed()) if (HandleWindowEvent(event) && !event.IsAllowed())
@@ -1768,12 +1754,9 @@ long wxListCtrl::InsertItem(const wxListItem& info)
{ {
const long index = m_model->InsertItem(info); const long index = m_model->InsertItem(info);
wxListItem tmp = info; wxListEvent event;
tmp.SetId(index); InitListEvent(event, this, wxEVT_LIST_INSERT_ITEM);
wxListEvent event(wxEVT_LIST_INSERT_ITEM, GetId());
event.SetItem(tmp);
event.SetEventObject(this);
HandleWindowEvent(event); HandleWindowEvent(event);
return index; return index;