// send first the event to wxWidgets that the sorting has changed so that
// the program can do special actions before the sorting actually starts:
- wxDataViewEvent event(wxEVT_COMMAND_DATAVIEW_COLUMN_SORTED,dvc->GetId()); // variable defintion
+ wxDataViewEvent event(wxEVT_COMMAND_DATAVIEW_COLUMN_SORTED,dvc->GetId()); // variable definition
event.SetEventObject(dvc);
if (noOfDescriptors > 0)
size_t const dataSize = event.GetDataObject()->GetDataSize(idDataFormat);
size_t const dataBufferSize = sizeof(wxDataFormatId)+dataSize;
// variable definitions (used in all case statements):
- wxMemoryBuffer dataBuffer(dataBufferSize);
+ // give additional headroom for trailing NULL
+ wxMemoryBuffer dataBuffer(dataBufferSize+4);
dataBuffer.AppendData(&idDataFormat,sizeof(wxDataFormatId));
switch (idDataFormat)
break;
default:
wxFAIL_MSG("Data object has invalid or unsupported data format");
- [dataArray release];
return NO;
}
}
}
else
{
- [dataArray release];
delete itemObject;
return NO; // dragging was vetoed or no data available
}
@implementation wxCustomCell
+#if 0 // starting implementation for custom cell clicks
+
+- (id)init
+{
+ self = [super init];
+ [self setAction:@selector(clickedAction)];
+ [self setTarget:self];
+ return self;
+}
+
+- (void) clickedAction: (id) sender
+{
+ wxUnusedVar(sender);
+}
+
+#endif
+
-(NSSize) cellSize
{
wxCustomRendererObject * const
return wxDataViewItem([[m_OutlineView itemAtRow:[m_OutlineView selectedRow]] pointer]);
}
+wxDataViewColumn *wxCocoaDataViewControl::GetCurrentColumn() const
+{
+ int col = [m_OutlineView selectedColumn];
+ if ( col == -1 )
+ return NULL;
+ return GetColumn(col);
+}
+
void wxCocoaDataViewControl::SetCurrentItem(const wxDataViewItem& item)
{
// We can't have unselected current item in a NSTableView, as the
const wxDataViewItem& item,
unsigned col)
{
- // TODO: we probably should get rid of this code entirely and make this
- // function pure virtual, but currently we still have some native
- // renderers (wxDataViewChoiceRenderer) which don't override it and
- // there is also wxDataViewCustomRenderer for which it's not obvious
- // how it should be implemented so keep this "auto-deduction" of
- // variant type from NSObject for now
+ // TODO: This code should really be removed and this function be made pure
+ // virtual. We just need to decide what to do with custom renderers
+ // (i.e. wxDataViewCustomRenderer), currently OS X "in place" editing
+ // which doesn't really create an editor control is not compatible
+ // with the in place editing under other platforms.
wxVariant value;
if ( [object isKindOfClass:[NSString class]] )
}
const wxColour& c = attr.GetColour();
- colText = [NSColor colorWithDeviceRed:c.Red() / 255.
+ colText = [NSColor colorWithCalibratedRed:c.Red() / 255.
green:c.Green() / 255.
blue:c.Blue() / 255.
alpha:c.Alpha() / 255.];
[cell release];
}
+void
+wxDataViewChoiceRenderer::OSXOnCellChanged(NSObject *value,
+ const wxDataViewItem& item,
+ unsigned col)
+{
+ // At least under OS X 10.7 we get the index of the item selected and not
+ // its string.
+ wxDataViewModel *model = GetOwner()->GetOwner()->GetModel();
+ model->ChangeValue(GetChoice(ObjectToLong(value)), item, col);
+}
+
bool wxDataViewChoiceRenderer::MacRender()
{
if (GetValue().GetType() == GetVariantType())
iconText << GetValue();
if (iconText.GetIcon().IsOk())
[cell setImage:[[wxBitmap(iconText.GetIcon()).GetNSImage() retain] autorelease]];
+ else
+ [cell setImage:nil];
[cell setStringValue:[[wxCFStringRef(iconText.GetText()).AsNSString() retain] autorelease]];
return true;
}