Update from Hartwig for OS X implementation
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@49079 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -178,11 +178,11 @@ public:
|
||||
|
||||
OSStatus UpdateItems(void) // updates all items
|
||||
{
|
||||
return this->UpdateItems(kDataBrowserNoItem,0,NULL,kDataBrowserItemNoProperty,kDataBrowserNoItem);
|
||||
return this->UpdateItems(kDataBrowserNoItem,0,NULL,kDataBrowserItemNoProperty,kDataBrowserItemNoProperty);
|
||||
}
|
||||
OSStatus UpdateItems(DataBrowserItemID const* item) // updates all columns of item
|
||||
{
|
||||
return this->UpdateItems(kDataBrowserNoItem,1,item,kDataBrowserItemNoProperty,kDataBrowserNoItem);
|
||||
return this->UpdateItems(kDataBrowserNoItem,1,item,kDataBrowserItemNoProperty,kDataBrowserItemNoProperty);
|
||||
}
|
||||
OSStatus UpdateItems(DataBrowserItemID container, UInt32 numItems, DataBrowserItemID const* items, DataBrowserPropertyID preSortProperty, DataBrowserPropertyID propertyID) const;
|
||||
|
||||
|
@@ -10,31 +10,9 @@
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef wxUSE_GENERICDATAVIEWCTRL
|
||||
|
||||
#include <ctype.h>
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <stdarg.h>
|
||||
|
||||
#include "wx/wxprec.h"
|
||||
|
||||
#if wxUSE_DATAVIEWCTRL
|
||||
|
||||
#include "wx/utils.h"
|
||||
|
||||
#ifndef WX_PRECOMP
|
||||
#include "wx/app.h"
|
||||
#include "wx/toplevel.h"
|
||||
#include "wx/font.h"
|
||||
#endif
|
||||
|
||||
#include "wx/apptrait.h"
|
||||
|
||||
#include "wx/mac/uma.h"
|
||||
|
||||
|
||||
#include <limits>
|
||||
#ifdef __DARWIN__
|
||||
#include <Carbon/Carbon.h>
|
||||
#else
|
||||
@@ -43,7 +21,19 @@
|
||||
#include <TextEncodingConverter.h>
|
||||
#endif
|
||||
|
||||
#include "wx/wxprec.h"
|
||||
#ifndef WX_PRECOMP
|
||||
#include "wx/app.h"
|
||||
#include "wx/toplevel.h"
|
||||
#include "wx/font.h"
|
||||
#endif
|
||||
|
||||
#include "wx/dataview.h"
|
||||
#include "wx/utils.h"
|
||||
|
||||
#include "wx/mac/carbon/databrow.h"
|
||||
#include "wx/mac/private.h"
|
||||
#include "wx/mac/uma.h"
|
||||
|
||||
#if defined(__MWERKS__) && wxUSE_UNICODE
|
||||
#if __MWERKS__ < 0x4100 || !defined(__DARWIN__)
|
||||
@@ -51,12 +41,6 @@
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#include <limits>
|
||||
|
||||
#include "wx/mac/carbon/databrow.h"
|
||||
|
||||
#include "wx/dataview.h"
|
||||
|
||||
// ============================================================================
|
||||
// wxMacDataBrowserTableViewControl
|
||||
// ============================================================================
|
||||
@@ -813,14 +797,14 @@ OSStatus wxMacDataViewDataBrowserListViewControl::DataBrowserGetSetItemDataProc(
|
||||
|
||||
void wxMacDataViewDataBrowserListViewControl::DataBrowserItemNotificationProc(DataBrowserItemID itemID, DataBrowserItemNotification message, DataBrowserItemDataRef itemData)
|
||||
{
|
||||
wxDataViewCtrl* dataViewCtrlPtr(dynamic_cast<wxDataViewCtrl*>(this->GetPeer()));
|
||||
|
||||
|
||||
// check if the data view control pointer still exists because this call back function can still be called when the control has already been deleted:
|
||||
if (dataViewCtrlPtr != NULL)
|
||||
switch (message)
|
||||
{
|
||||
case kDataBrowserContainerClosed:
|
||||
{
|
||||
// variable definitions:
|
||||
wxDataViewCtrl* dataViewCtrlPtr(dynamic_cast<wxDataViewCtrl*>(this->GetPeer()));
|
||||
|
||||
if (dataViewCtrlPtr != NULL) // can become NULL when the window is being deleted (wxWidget has already disposed the data before receiving this event
|
||||
{
|
||||
// initialize wxWidget event:
|
||||
wxDataViewEvent dataViewEvent(wxEVT_COMMAND_DATAVIEW_ITEM_COLLAPSED,dataViewCtrlPtr->GetId()); // variable definition
|
||||
@@ -829,16 +813,10 @@ void wxMacDataViewDataBrowserListViewControl::DataBrowserItemNotificationProc(Da
|
||||
dataViewEvent.SetItem(wxDataViewItem(reinterpret_cast<void*>(itemID)));
|
||||
// finally send the equivalent wxWidget event:
|
||||
dataViewCtrlPtr->GetEventHandler()->ProcessEvent(dataViewEvent);
|
||||
} /* if */
|
||||
} /* block */
|
||||
break;
|
||||
case kDataBrowserContainerOpened:
|
||||
{
|
||||
// variable definitions:
|
||||
wxDataViewCtrl* dataViewCtrlPtr(dynamic_cast<wxDataViewCtrl*>(this->GetPeer()));
|
||||
|
||||
wxCHECK_RET(dataViewCtrlPtr != NULL,_("Pointer to data view control not set correctly."));
|
||||
dataViewCtrlPtr->AddChildrenLevel(wxDataViewItem(reinterpret_cast<void*>(itemID)));
|
||||
// initialize wxWidget event:
|
||||
wxDataViewEvent dataViewEvent(wxEVT_COMMAND_DATAVIEW_ITEM_EXPANDED,dataViewCtrlPtr->GetId()); // variable definition
|
||||
|
||||
@@ -846,14 +824,11 @@ void wxMacDataViewDataBrowserListViewControl::DataBrowserItemNotificationProc(Da
|
||||
dataViewEvent.SetItem(wxDataViewItem(reinterpret_cast<void*>(itemID)));
|
||||
// finally send the equivalent wxWidget event:
|
||||
dataViewCtrlPtr->GetEventHandler()->ProcessEvent(dataViewEvent);
|
||||
// add children to the expanded container:
|
||||
dataViewCtrlPtr->AddChildrenLevel(wxDataViewItem(reinterpret_cast<void*>(itemID)));
|
||||
} /* block */
|
||||
break;
|
||||
case kDataBrowserEditStarted:
|
||||
{
|
||||
// variable definitions:
|
||||
wxDataViewCtrl* dataViewCtrlPtr(dynamic_cast<wxDataViewCtrl*>(this->GetPeer()));
|
||||
|
||||
if (dataViewCtrlPtr != NULL)
|
||||
{
|
||||
// initialize wxWidget event:
|
||||
DataBrowserPropertyID propertyID;
|
||||
@@ -872,15 +847,9 @@ void wxMacDataViewDataBrowserListViewControl::DataBrowserItemNotificationProc(Da
|
||||
} /* if */
|
||||
// finally send the equivalent wxWidget event:
|
||||
dataViewCtrlPtr->GetEventHandler()->ProcessEvent(dataViewEvent);
|
||||
} /* if */
|
||||
} /* block */
|
||||
break;
|
||||
case kDataBrowserEditStopped:
|
||||
{
|
||||
// variable definitions:
|
||||
wxDataViewCtrl* dataViewCtrlPtr(dynamic_cast<wxDataViewCtrl*>(this->GetPeer()));
|
||||
|
||||
if (dataViewCtrlPtr != NULL)
|
||||
{
|
||||
// initialize wxWidget event:
|
||||
DataBrowserPropertyID propertyID;
|
||||
@@ -899,32 +868,14 @@ void wxMacDataViewDataBrowserListViewControl::DataBrowserItemNotificationProc(Da
|
||||
} /* if */
|
||||
// finally send the equivalent wxWidget event:
|
||||
dataViewCtrlPtr->GetEventHandler()->ProcessEvent(dataViewEvent);
|
||||
} /* if */
|
||||
} /* block */
|
||||
break;
|
||||
case kDataBrowserItemAdded:
|
||||
{
|
||||
// variable definitions:
|
||||
wxDataViewCtrl* dataViewCtrlPtr(dynamic_cast<wxDataViewCtrl*>(this->GetPeer()));
|
||||
|
||||
wxCHECK_RET(dataViewCtrlPtr != NULL,_("Pointer to data view control not set correctly."));
|
||||
// initialize wxWidget event:
|
||||
wxDataViewEvent dataViewEvent(wxEVT_COMMAND_DATAVIEW_MODEL_ITEM_ADDED,dataViewCtrlPtr->GetId()); // variable definition
|
||||
|
||||
dataViewEvent.SetEventObject(dataViewCtrlPtr);
|
||||
dataViewEvent.SetItem(wxDataViewItem(reinterpret_cast<void*>(itemID)));
|
||||
// finally send the equivalent wxWidget event:
|
||||
dataViewCtrlPtr->GetEventHandler()->ProcessEvent(dataViewEvent);
|
||||
} /* block */
|
||||
break;
|
||||
break; // not used anymore
|
||||
case kDataBrowserItemDeselected:
|
||||
break; // not implemented by wxWidgets; see kDataBrowserSelectionSetChanged
|
||||
case kDataBrowserItemDoubleClicked:
|
||||
{
|
||||
// variable definitions:
|
||||
wxDataViewCtrl* dataViewCtrlPtr(dynamic_cast<wxDataViewCtrl*>(this->GetPeer()));
|
||||
|
||||
wxCHECK_RET(dataViewCtrlPtr != NULL,_("Pointer to data view control not set correctly."));
|
||||
// initialize wxWidget event:
|
||||
wxDataViewEvent dataViewEvent(wxEVT_COMMAND_DATAVIEW_ITEM_ACTIVATED,dataViewCtrlPtr->GetId()); // variable definition
|
||||
|
||||
@@ -935,30 +886,11 @@ void wxMacDataViewDataBrowserListViewControl::DataBrowserItemNotificationProc(Da
|
||||
} /* block */
|
||||
break;
|
||||
case kDataBrowserItemRemoved:
|
||||
{
|
||||
// variable definitions:
|
||||
wxDataViewCtrl* dataViewCtrlPtr(dynamic_cast<wxDataViewCtrl*>(this->GetPeer()));
|
||||
|
||||
if (dataViewCtrlPtr != NULL) // can become NULL when the window is being deleted (wxWidget has already disposed the data before receiving this event
|
||||
{
|
||||
// initialize wxWidget event:
|
||||
wxDataViewEvent dataViewEvent(wxEVT_COMMAND_DATAVIEW_MODEL_ITEM_DELETED,dataViewCtrlPtr->GetId()); // variable definition
|
||||
|
||||
dataViewEvent.SetEventObject(dataViewCtrlPtr);
|
||||
dataViewEvent.SetItem(wxDataViewItem(reinterpret_cast<void*>(itemID)));
|
||||
// finally send the equivalent wxWidget event:
|
||||
dataViewCtrlPtr->GetEventHandler()->ProcessEvent(dataViewEvent);
|
||||
} /* if */
|
||||
} /* block */
|
||||
break;
|
||||
break; // not used anymore
|
||||
case kDataBrowserItemSelected:
|
||||
break; // not implemented by wxWidgets; see kDataBrowserSelectionSetChanged
|
||||
case kDataBrowserSelectionSetChanged:
|
||||
{
|
||||
// variable definitions:
|
||||
wxDataViewCtrl* dataViewCtrlPtr(dynamic_cast<wxDataViewCtrl*>(this->GetPeer()));
|
||||
|
||||
wxCHECK_RET(dataViewCtrlPtr != NULL,_("Pointer to data view control not set correctly."));
|
||||
// initialize wxWidget event:
|
||||
wxDataViewEvent dataViewEvent(wxEVT_COMMAND_DATAVIEW_SELECTION_CHANGED,dataViewCtrlPtr->GetId()); // variable definition
|
||||
|
||||
@@ -970,11 +902,6 @@ void wxMacDataViewDataBrowserListViewControl::DataBrowserItemNotificationProc(Da
|
||||
break;
|
||||
case kDataBrowserUserStateChanged:
|
||||
{
|
||||
// variable definitions and initialization:
|
||||
DataBrowserPropertyID propertyID;
|
||||
wxDataViewCtrl* dataViewCtrlPtr(dynamic_cast<wxDataViewCtrl*>(this->GetPeer()));
|
||||
|
||||
wxCHECK_RET(dataViewCtrlPtr != NULL,_("Pointer to data view control not set correctly"));
|
||||
// update column widths:
|
||||
for (size_t i=0; i<dataViewCtrlPtr->GetColumnCount(); ++i)
|
||||
{
|
||||
@@ -987,6 +914,8 @@ void wxMacDataViewDataBrowserListViewControl::DataBrowserItemNotificationProc(Da
|
||||
columnPtr->SetWidthVariable(columnWidth);
|
||||
} /* for */
|
||||
// update order status:
|
||||
DataBrowserPropertyID propertyID; // variable definition
|
||||
|
||||
if ((this->GetSortProperty(&propertyID) == noErr) && (propertyID >= kMinPropertyID))
|
||||
{
|
||||
DataBrowserSortOrder sortOrder;
|
||||
|
@@ -92,6 +92,25 @@ static pascal OSStatus wxMacDataViewCtrlEventHandler(EventHandlerCallRef handler
|
||||
return eventNotHandledErr;
|
||||
} /* wxMacDataViewCtrlEventHandler(EventHandlerCallRef, EventRef, void*) */
|
||||
|
||||
static DataBrowserItemID* CreateDataBrowserItemIDArray(size_t& noOfEntries, wxDataViewItemArray const& items) // returns a newly allocated pointer to valid data browser item IDs
|
||||
{
|
||||
size_t const noOfItems = items.GetCount();
|
||||
|
||||
DataBrowserItemID* itemIDs(new DataBrowserItemID[noOfItems]);
|
||||
|
||||
|
||||
// convert all valid data view items to data browser items
|
||||
noOfEntries = 0;
|
||||
for (size_t i=0; i<noOfItems; ++i)
|
||||
if (items[i].IsOk())
|
||||
{
|
||||
itemIDs[noOfEntries] = reinterpret_cast<DataBrowserItemID>(items[i].GetID());
|
||||
++noOfEntries;
|
||||
} /* if */
|
||||
// done:
|
||||
return itemIDs;
|
||||
} /* CreateDataBrowserItemIDArray(size_t&, wxDataViewItemArray const&) */
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// local function pointers
|
||||
//-----------------------------------------------------------------------------
|
||||
@@ -119,19 +138,39 @@ public:
|
||||
parent.IsOk() && (this->m_dataViewControlPtr->AddItem(reinterpret_cast<DataBrowserItemID>(parent.GetID()),&itemID) == noErr));
|
||||
} /* ItemAdded(wxDataViewItem const&, wxDataViewItem const&) */
|
||||
|
||||
virtual bool ItemsAdded(wxDataViewItem const& parent, wxDataViewItemArray const& items)
|
||||
{
|
||||
bool noFailureFlag;
|
||||
|
||||
DataBrowserItemID* itemIDs;
|
||||
|
||||
size_t noOfEntries;
|
||||
|
||||
|
||||
// convert all valid data view items to data browser items:
|
||||
itemIDs = ::CreateDataBrowserItemIDArray(noOfEntries,items);
|
||||
// insert all valid items into control:
|
||||
noFailureFlag = ((noOfEntries == 0) ||
|
||||
!(parent.IsOk()) && (this->m_dataViewControlPtr->AddItems(kDataBrowserNoItem,noOfEntries,itemIDs,kDataBrowserItemNoProperty) == noErr) ||
|
||||
parent.IsOk() && (this->m_dataViewControlPtr->AddItems(reinterpret_cast<DataBrowserItemID>(parent.GetID()),noOfEntries,itemIDs,kDataBrowserItemNoProperty) == noErr));
|
||||
// give allocated array space free again:
|
||||
delete[] itemIDs;
|
||||
// done:
|
||||
return noFailureFlag;
|
||||
} /* ItemsAdded(wxDataViewItem const&, wxDataViewItemArray const&) */
|
||||
|
||||
virtual bool ItemChanged(wxDataViewItem const& item)
|
||||
{
|
||||
DataBrowserItemID itemID(reinterpret_cast<DataBrowserItemID>(item.GetID()));
|
||||
|
||||
|
||||
wxCHECK_MSG(item.IsOk(),false,_("Changed item is invalid."));
|
||||
wxCHECK_MSG(this->GetOwner() != NULL,false,_("Owner not initialized."));
|
||||
if (this->m_dataViewControlPtr->UpdateItems(&itemID) == noErr)
|
||||
{
|
||||
wxDataViewCtrl* dataViewCtrlPtr(dynamic_cast<wxDataViewCtrl*>(this->m_dataViewControlPtr->GetPeer()));
|
||||
|
||||
// sent the equivalent wxWidget event:
|
||||
wxDataViewEvent dataViewEvent(wxEVT_COMMAND_DATAVIEW_VALUE_ITEM_CHANGED,dataViewCtrlPtr->GetId()); // variable defintion
|
||||
wxDataViewEvent dataViewEvent(wxEVT_COMMAND_DATAVIEW_ITEM_VALUE_CHANGED,dataViewCtrlPtr->GetId()); // variable defintion
|
||||
|
||||
dataViewEvent.SetEventObject(dataViewCtrlPtr);
|
||||
dataViewEvent.SetItem(item);
|
||||
@@ -144,6 +183,39 @@ public:
|
||||
return false;
|
||||
} /* ItemChanged(wxDataViewItem const&) */
|
||||
|
||||
virtual bool ItemsChanged(wxDataViewItemArray const& items)
|
||||
{
|
||||
bool noFailureFlag;
|
||||
|
||||
DataBrowserItemID* itemIDs;
|
||||
|
||||
size_t noOfEntries;
|
||||
|
||||
|
||||
// convert all valid data view items to data browser items:
|
||||
itemIDs = ::CreateDataBrowserItemIDArray(noOfEntries,items);
|
||||
// change items (ATTENTION: ONLY ITEMS OF THE ROOT ARE CHANGED BECAUSE THE PARENT PARAMETER IS MISSING):
|
||||
noFailureFlag = (this->m_dataViewControlPtr->UpdateItems(kDataBrowserNoItem,noOfEntries,itemIDs,kDataBrowserItemNoProperty,kDataBrowserItemNoProperty) == noErr);
|
||||
if (noFailureFlag)
|
||||
{
|
||||
wxDataViewCtrl* dataViewCtrlPtr(dynamic_cast<wxDataViewCtrl*>(this->m_dataViewControlPtr->GetPeer()));
|
||||
|
||||
// send for all changed items a wxWidget event:
|
||||
wxDataViewEvent dataViewEvent(wxEVT_COMMAND_DATAVIEW_ITEM_VALUE_CHANGED,dataViewCtrlPtr->GetId()); // variable defintion
|
||||
|
||||
dataViewEvent.SetEventObject(dataViewCtrlPtr);
|
||||
for (size_t i=0; i<noOfEntries; ++i)
|
||||
{
|
||||
dataViewEvent.SetItem(reinterpret_cast<void*>(itemIDs[i]));
|
||||
dataViewCtrlPtr->GetEventHandler()->ProcessEvent(dataViewEvent);
|
||||
} /* for */
|
||||
} /* if */
|
||||
// release allocated array space:
|
||||
delete[] itemIDs;
|
||||
// done:
|
||||
return noFailureFlag;
|
||||
} /* ItemsChanged(wxDataViewItem const&) */
|
||||
|
||||
virtual bool ItemDeleted(wxDataViewItem const& parent, wxDataViewItem const& item)
|
||||
{
|
||||
if (item.IsOk())
|
||||
@@ -154,10 +226,12 @@ public:
|
||||
wxDataViewCtrl* dataViewCtrlPtr(dynamic_cast<wxDataViewCtrl*>(this->m_dataViewControlPtr->GetPeer()));
|
||||
|
||||
// when this method is called and currently an item is being edited this item may have already been deleted in the model (the passed item and the being edited item have
|
||||
// not to be identical because the being edited item might be below the passed item in the hierarchy); therefore, the control is informed that currently a deleting process
|
||||
// is started and that variables can currently not be updated even when requested by the system:
|
||||
// not to be identical because the being edited item might be below the passed item in the hierarchy);
|
||||
// to prevent the control trying to ask the model to update an already deleted item the control is informed that currently a deleting process
|
||||
// has been started and that variables can currently not be updated even when requested by the system:
|
||||
dataViewCtrlPtr->SetDeleting(true);
|
||||
errorStatus = this->m_dataViewControlPtr->RemoveItem(reinterpret_cast<DataBrowserItemID>(parent.GetID()),&itemID);
|
||||
// enable automatic updating again:
|
||||
dataViewCtrlPtr->SetDeleting(false);
|
||||
return (errorStatus == noErr);
|
||||
} /* if */
|
||||
@@ -165,6 +239,37 @@ public:
|
||||
return false;
|
||||
} /* ItemDeleted(wxDataViewItem const&, wxDataViewItem const&) */
|
||||
|
||||
virtual bool ItemsDeleted(wxDataViewItem const& parent, wxDataViewItemArray const& items)
|
||||
{
|
||||
bool noFailureFlag;
|
||||
|
||||
DataBrowserItemID* itemIDs;
|
||||
|
||||
wxDataViewCtrl* dataViewCtrlPtr(dynamic_cast<wxDataViewCtrl*>(this->m_dataViewControlPtr->GetPeer()));
|
||||
|
||||
size_t noOfEntries;
|
||||
|
||||
|
||||
wxCHECK_MSG(dataViewCtrlPtr != NULL,false,_("Data view control is not correctly initialized"));
|
||||
// convert all valid data view items to data browser items:
|
||||
itemIDs = ::CreateDataBrowserItemIDArray(noOfEntries,items);
|
||||
// when this method is called and currently an item is being edited this item may have already been deleted in the model (the passed item and the being edited item have
|
||||
// not to be identical because the being edited item might be below the passed item in the hierarchy);
|
||||
// to prevent the control trying to ask the model to update an already deleted item the control is informed that currently a deleting process
|
||||
// has been started and that variables can currently not be updated even when requested by the system:
|
||||
dataViewCtrlPtr->SetDeleting(true);
|
||||
// insert all valid items into control:
|
||||
noFailureFlag = ((noOfEntries == 0) ||
|
||||
!(parent.IsOk()) && (this->m_dataViewControlPtr->RemoveItems(kDataBrowserNoItem,noOfEntries,itemIDs,kDataBrowserItemNoProperty) == noErr) ||
|
||||
parent.IsOk() && (this->m_dataViewControlPtr->RemoveItems(reinterpret_cast<DataBrowserItemID>(parent.GetID()),noOfEntries,itemIDs,kDataBrowserItemNoProperty) == noErr));
|
||||
// enable automatic updating again:
|
||||
dataViewCtrlPtr->SetDeleting(false);
|
||||
// give allocated array space free again:
|
||||
delete[] itemIDs;
|
||||
// done:
|
||||
return noFailureFlag;
|
||||
} /* ItemsDeleted(wxDataViewItem const&, wxDataViewItemArray const&) */
|
||||
|
||||
virtual bool ValueChanged(wxDataViewItem const& item, unsigned int col)
|
||||
{
|
||||
DataBrowserItemID itemID(reinterpret_cast<DataBrowserItemID>(item.GetID()));
|
||||
@@ -199,10 +304,7 @@ public:
|
||||
|
||||
virtual bool Cleared(void)
|
||||
{
|
||||
if (this->m_dataViewControlPtr->RemoveItems() == noErr)
|
||||
return true;
|
||||
else
|
||||
return false;
|
||||
return (this->m_dataViewControlPtr->RemoveItems() == noErr);
|
||||
} /* Cleared(void) */
|
||||
|
||||
virtual void Resort(void)
|
||||
@@ -1107,8 +1209,12 @@ void wxDataViewCtrl::AddChildrenLevel(wxDataViewItem const& parentItem)
|
||||
|
||||
wxCHECK_RET(this->GetModel() != NULL,_("Model pointer not initialized."));
|
||||
NoOfChildren = this->GetModel()->GetChildren(parentItem,items);
|
||||
#if 0
|
||||
for (int i=0; i<NoOfChildren; ++i)
|
||||
(void) this->GetModel()->ItemAdded(parentItem,items[i]);
|
||||
#else
|
||||
(void) this->GetModel()->ItemsAdded(parentItem,items);
|
||||
#endif
|
||||
} /* wxDataViewCtrl::AddChildrenLevel(wxDataViewItem const&) */
|
||||
|
||||
wxDataViewColumn* wxDataViewCtrl::GetColumnPtr(DataBrowserPropertyID propertyID) const
|
||||
|
Reference in New Issue
Block a user