Refactor wxDataViewEvent constructors

Take care of all the common stuff such as setting the event object and the
model, which is used for all events, in the ctor. Also set both the column
pointer and the column index at once instead of having two separate setters
for them which could result in inconsistent event objects (and did, as
sometimes only one or only the other field was set).

This makes the code shorter (we save 160 lines) and more clear and ensures
that everything is always initialized.

Closes #12649.
This commit is contained in:
Vadim Zeitlin
2016-03-18 23:33:27 +01:00
parent e2e7d3d391
commit 9829446755
6 changed files with 166 additions and 325 deletions

View File

@@ -122,13 +122,8 @@ bool wxOSXDataViewModelNotifier::ItemChanged(wxDataViewItem const& item)
wxCHECK_MSG(GetOwner() != NULL,false,"Owner not initialized.");
if (m_DataViewCtrlPtr->GetDataViewPeer()->Update(GetOwner()->GetParent(item),item))
{
// sent the equivalent wxWidget event:
wxDataViewEvent dataViewEvent(wxEVT_DATAVIEW_ITEM_VALUE_CHANGED,m_DataViewCtrlPtr->GetId());
dataViewEvent.SetEventObject(m_DataViewCtrlPtr);
dataViewEvent.SetModel(m_DataViewCtrlPtr->GetModel());
dataViewEvent.SetItem(item);
// sent the equivalent wxWidget event:
// send the equivalent wxWidgets event:
wxDataViewEvent dataViewEvent(wxEVT_DATAVIEW_ITEM_VALUE_CHANGED, m_DataViewCtrlPtr, item);
m_DataViewCtrlPtr->HandleWindowEvent(dataViewEvent);
// row height may have to be adjusted:
AdjustRowHeight(item);
@@ -144,16 +139,11 @@ bool wxOSXDataViewModelNotifier::ItemsChanged(wxDataViewItemArray const& items)
{
size_t const noOfItems = items.GetCount();
wxDataViewEvent dataViewEvent(wxEVT_DATAVIEW_ITEM_VALUE_CHANGED,m_DataViewCtrlPtr->GetId());
dataViewEvent.SetEventObject(m_DataViewCtrlPtr);
dataViewEvent.SetModel(m_DataViewCtrlPtr->GetModel());
for (size_t indexItem=0; indexItem<noOfItems; ++indexItem)
if (m_DataViewCtrlPtr->GetDataViewPeer()->Update(GetOwner()->GetParent(items[indexItem]),items[indexItem]))
{
// send for all changed items a wxWidget event:
dataViewEvent.SetItem(items[indexItem]);
// send for all changed items a wxWidgets event:
wxDataViewEvent dataViewEvent(wxEVT_DATAVIEW_ITEM_VALUE_CHANGED,m_DataViewCtrlPtr,items[indexItem]);
m_DataViewCtrlPtr->HandleWindowEvent(dataViewEvent);
}
else
@@ -211,13 +201,9 @@ bool wxOSXDataViewModelNotifier::ValueChanged(wxDataViewItem const& item, unsign
wxCHECK_MSG(GetOwner() != NULL,false,"Owner not initialized.");
if (m_DataViewCtrlPtr->GetDataViewPeer()->Update(GetOwner()->GetParent(item),item))
{
wxDataViewEvent dataViewEvent(wxEVT_DATAVIEW_ITEM_VALUE_CHANGED,m_DataViewCtrlPtr->GetId());
wxDataViewEvent dataViewEvent(wxEVT_DATAVIEW_ITEM_VALUE_CHANGED, m_DataViewCtrlPtr, m_DataViewCtrlPtr->GetColumn(col), item);
dataViewEvent.SetEventObject(m_DataViewCtrlPtr);
dataViewEvent.SetModel(m_DataViewCtrlPtr->GetModel());
dataViewEvent.SetColumn(col);
dataViewEvent.SetItem(item);
// send the equivalent wxWidget event:
// send the equivalent wxWidgets event:
m_DataViewCtrlPtr->HandleWindowEvent(dataViewEvent);
AdjustAutosizedColumns();