preliminary editing support
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@41324 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
parent
0428ac8c47
commit
8d700f716f
@ -1276,6 +1276,13 @@ void wxMacListCtrlItem::Notification(wxMacDataItemBrowserControl *owner ,
|
|||||||
|
|
||||||
wxListEvent event( wxEVT_COMMAND_LIST_ITEM_SELECTED, list->GetId() );
|
wxListEvent event( wxEVT_COMMAND_LIST_ITEM_SELECTED, list->GetId() );
|
||||||
bool isSingle = list->GetWindowStyle() | wxLC_SINGLE_SEL;
|
bool isSingle = list->GetWindowStyle() | wxLC_SINGLE_SEL;
|
||||||
|
event.SetEventObject( list );
|
||||||
|
event.m_itemIndex = owner->GetLineFromItem( this ) ;
|
||||||
|
if ( !list->IsVirtual() )
|
||||||
|
{
|
||||||
|
lb->MacGetColumnInfo(event.m_itemIndex,0,event.m_item);
|
||||||
|
}
|
||||||
|
|
||||||
switch (message)
|
switch (message)
|
||||||
{
|
{
|
||||||
case kDataBrowserItemDeselected:
|
case kDataBrowserItemDeselected:
|
||||||
@ -1293,18 +1300,25 @@ void wxMacListCtrlItem::Notification(wxMacDataItemBrowserControl *owner ,
|
|||||||
trigger = true;
|
trigger = true;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case kDataBrowserEditStarted :
|
||||||
|
// TODO : how to veto ?
|
||||||
|
event.SetEventType( wxEVT_COMMAND_LIST_BEGIN_LABEL_EDIT ) ;
|
||||||
|
trigger = true ;
|
||||||
|
break ;
|
||||||
|
|
||||||
|
case kDataBrowserEditStopped :
|
||||||
|
// TODO probably trigger only upon the value store callback, because
|
||||||
|
// here IIRC we cannot veto
|
||||||
|
event.SetEventType( wxEVT_COMMAND_LIST_END_LABEL_EDIT ) ;
|
||||||
|
trigger = true ;
|
||||||
|
break ;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( trigger )
|
if ( trigger )
|
||||||
{
|
{
|
||||||
event.SetEventObject( list );
|
|
||||||
event.m_itemIndex = owner->GetLineFromItem( this ) ;
|
|
||||||
if ( !list->IsVirtual() )
|
|
||||||
{
|
|
||||||
lb->MacGetColumnInfo(event.m_itemIndex,0,event.m_item);
|
|
||||||
}
|
|
||||||
// direct notification is not always having the listbox GetSelection() having in synch with event
|
// direct notification is not always having the listbox GetSelection() having in synch with event
|
||||||
wxPostEvent( list->GetEventHandler(), event );
|
wxPostEvent( list->GetEventHandler(), event );
|
||||||
}
|
}
|
||||||
@ -1525,8 +1539,19 @@ OSStatus wxMacListCtrlItem::GetSetData( wxMacDataItemBrowserControl *owner ,
|
|||||||
{
|
{
|
||||||
|
|
||||||
OSStatus err = errDataBrowserPropertyNotSupported;
|
OSStatus err = errDataBrowserPropertyNotSupported;
|
||||||
|
wxListCtrl* list = wxDynamicCast( owner->GetPeer() , wxListCtrl );
|
||||||
if ( !changeValue )
|
if ( !changeValue )
|
||||||
{
|
{
|
||||||
|
switch (property)
|
||||||
|
{
|
||||||
|
case kDataBrowserItemIsEditableProperty :
|
||||||
|
if ( list && list->HasFlag( wxLC_EDIT_LABELS ) )
|
||||||
|
{
|
||||||
|
verify_noerr(SetDataBrowserItemDataBooleanValue( itemData, true ));
|
||||||
|
err = noErr ;
|
||||||
|
}
|
||||||
|
break ;
|
||||||
|
default :
|
||||||
if ( property >= kMinColumnId ){
|
if ( property >= kMinColumnId ){
|
||||||
short listColumn = property - kMinColumnId;
|
short listColumn = property - kMinColumnId;
|
||||||
|
|
||||||
@ -1542,7 +1567,6 @@ OSStatus wxMacListCtrlItem::GetSetData( wxMacDataItemBrowserControl *owner ,
|
|||||||
|
|
||||||
int imgIndex = item->GetImage();
|
int imgIndex = item->GetImage();
|
||||||
if ( (item->GetMask() & wxLIST_MASK_IMAGE) ){
|
if ( (item->GetMask() & wxLIST_MASK_IMAGE) ){
|
||||||
wxListCtrl* list = wxDynamicCast( owner->GetPeer() , wxListCtrl );
|
|
||||||
wxImageList* imageList = list->GetImageList(wxIMAGE_LIST_SMALL);
|
wxImageList* imageList = list->GetImageList(wxIMAGE_LIST_SMALL);
|
||||||
if (imageList && imageList->GetImageCount() > 0){
|
if (imageList && imageList->GetImageCount() > 0){
|
||||||
wxBitmap bmp = imageList->GetBitmap(imgIndex);
|
wxBitmap bmp = imageList->GetBitmap(imgIndex);
|
||||||
@ -1553,13 +1577,27 @@ OSStatus wxMacListCtrlItem::GetSetData( wxMacDataItemBrowserControl *owner ,
|
|||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
break ;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
switch (property)
|
switch (property)
|
||||||
{
|
{
|
||||||
// no editable props here
|
|
||||||
default:
|
default:
|
||||||
|
if ( property >= kMinColumnId ){
|
||||||
|
short listColumn = property - kMinColumnId;
|
||||||
|
|
||||||
|
if (HasColumnInfo(listColumn)){
|
||||||
|
// TODO probably send the 'end edit' from here, as we
|
||||||
|
// can then deal with the veto
|
||||||
|
CFStringRef sr ;
|
||||||
|
verify_noerr( GetDataBrowserItemDataText( itemData , &sr ) ) ;
|
||||||
|
wxMacCFStringHolder cfStr(sr) ;;
|
||||||
|
list->SetItem( owner->GetLineFromItem(this) , listColumn, cfStr.AsString() ) ;
|
||||||
|
err = noErr ;
|
||||||
|
}
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user