From fb5c63beb72cf2f949226833b737b2c409c4b4e1 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Mon, 22 Dec 2014 01:31:22 +0000 Subject: [PATCH] Don't warn if model cell value is empty in wxOSX wxDVC. This follows similar change to wxGTK a few commits ago and makes wxOSX consistent with the generic version. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@78296 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/osx/cocoa/dataview.mm | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/src/osx/cocoa/dataview.mm b/src/osx/cocoa/dataview.mm index 96f1af9579..e9ba27f366 100644 --- a/src/osx/cocoa/dataview.mm +++ b/src/osx/cocoa/dataview.mm @@ -1766,9 +1766,27 @@ outlineView:(NSOutlineView*)outlineView return; wxDataViewRenderer * const renderer = dvCol->GetRenderer(); + wxDataViewRendererNativeData * const data = renderer->GetNativeData(); + // let the renderer know about what it's going to render next + data->SetColumnPtr(tableColumn); + data->SetItem(item); + data->SetItemCell(cell); + + // set the state (enabled/disabled) of the item: this must be done first as + // even if we return below because the cell is empty, it still needs to be + // disabled if it's not supposed to be enabled + renderer->OSXApplyEnabled(model->IsEnabled(dvItem, colIdx)); + + // check if we have anything to render wxVariant value; model->GetValue(value, dvItem, colIdx); + if ( value.IsNull() ) + { + // for consistency with the generic implementation, just handle missing + // values as blank + return; + } if ( value.GetType() != renderer->GetVariantType() ) { @@ -1781,13 +1799,6 @@ outlineView:(NSOutlineView*)outlineView return; } - wxDataViewRendererNativeData * const data = renderer->GetNativeData(); - - // let the renderer know about what it's going to render next - data->SetColumnPtr(tableColumn); - data->SetItem(item); - data->SetItemCell(cell); - // use the attributes: notice that we need to do this whether we have them // or not as even if this cell doesn't have any attributes, the previous // one might have had some and then we need to reset them back to default @@ -1795,9 +1806,6 @@ outlineView:(NSOutlineView*)outlineView model->GetAttr(dvItem, colIdx, attr); renderer->OSXApplyAttr(attr); - // set the state (enabled/disabled) of the item - renderer->OSXApplyEnabled(model->IsEnabled(dvItem, colIdx)); - // and finally do draw it renderer->MacRender(); }