X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/360b068ca2ef06d10b360584273086f1856b168c..241c8d223ee3c2c2ffbc3a8ae5f6309167fbe1de:/src/mac/carbon/databrow.cpp diff --git a/src/mac/carbon/databrow.cpp b/src/mac/carbon/databrow.cpp index a4485f8bc5..6d4e55cc5b 100644 --- a/src/mac/carbon/databrow.cpp +++ b/src/mac/carbon/databrow.cpp @@ -169,7 +169,7 @@ wxMacDataBrowserTableViewControl::wxMacDataBrowserTableViewControl(wxWindow* pee this->SetCustomCallbacks(&customCallbacks); // style setting: - this->EnableCellSizeModification(); + this->EnableCellSizeModification( ((style & wxDV_VARIABLE_LINE_HEIGHT) != 0), true ); DataBrowserSelectionFlags flags; // variable definition @@ -650,7 +650,8 @@ void wxMacDataViewDataBrowserListViewControl::DataBrowserGetContextualMenuProc(M *helpItemString = NULL; // create information for a context menu event: wxDataViewEvent dataViewEvent(wxEVT_COMMAND_DATAVIEW_ITEM_CONTEXT_MENU,dataViewCtrlPtr->GetId()); - + + dataViewEvent.SetEventObject(dataViewCtrlPtr); dataViewEvent.SetModel(dataViewCtrlPtr->GetModel()); // get the item information; // theoretically more than one ID can be returned but the event can only handle one item, therefore all item related data is using the data of the first item in the array: @@ -680,6 +681,10 @@ OSStatus wxMacDataViewDataBrowserListViewControl::DataBrowserGetSetItemDataProc( wxCHECK_MSG(dataViewCtrlPtr->GetModel() != NULL,errDataBrowserNotConfigured,_("Pointer to model not set correctly.")); dataViewColumnPtr = dataViewCtrlPtr->GetColumnPtr(propertyID); wxCHECK_MSG((dataViewColumnPtr != NULL) && (dataViewColumnPtr->GetRenderer() != NULL),errDataBrowserNotConfigured,_("There is no column or renderer for the specified column index.")); + + wxDataViewItem dvItem(reinterpret_cast(itemID)); + unsigned int col = dataViewColumnPtr->GetModelColumn(); + switch (dataViewColumnPtr->GetRenderer()->GetPropertyType()) { case kDataBrowserCheckboxType: @@ -695,14 +700,22 @@ OSStatus wxMacDataViewDataBrowserListViewControl::DataBrowserGetSetItemDataProc( // variable definition and initialization: wxVariant modifiedData(true); - return (dataViewCtrlPtr->GetModel()->SetValue(modifiedData,wxDataViewItem(reinterpret_cast(itemID)),dataViewColumnPtr->GetModelColumn()) ? OSStatus(noErr) : OSStatus(errDataBrowserNotConfigured)); + if (dataViewCtrlPtr->GetModel()->SetValue(modifiedData, dvItem, col) && + dataViewCtrlPtr->GetModel()->ValueChanged(dvItem, col)) + return noErr; + else + return errDataBrowserInvalidPropertyData; } /* if */ else if (buttonValue == kThemeButtonOff) { // variable definition and initialization: wxVariant modifiedData(false); - return (dataViewCtrlPtr->GetModel()->SetValue(modifiedData,wxDataViewItem(reinterpret_cast(itemID)),dataViewColumnPtr->GetModelColumn()) ? OSStatus(noErr) : OSStatus(errDataBrowserNotConfigured)); + if (dataViewCtrlPtr->GetModel()->SetValue(modifiedData, dvItem, col) && + dataViewCtrlPtr->GetModel()->ValueChanged(dvItem, col)) + return noErr; + else + return errDataBrowserInvalidPropertyData; } /* if */ else return errDataBrowserInvalidPropertyData; @@ -725,11 +738,12 @@ OSStatus wxMacDataViewDataBrowserListViewControl::DataBrowserGetSetItemDataProc( wxMacCFStringHolder modifiedString(stringReference); #endif wxVariant modifiedData(modifiedString.AsString()); - - if (dataViewCtrlPtr->GetModel()->SetValue(modifiedData,wxDataViewItem(reinterpret_cast(itemID)),dataViewColumnPtr->GetModelColumn())) - return noErr; - else - return errDataBrowserNotConfigured; + + if (dataViewCtrlPtr->GetModel()->SetValue(modifiedData, dvItem, col) && + dataViewCtrlPtr->GetModel()->ValueChanged(dvItem, col)) + return noErr; + else + return errDataBrowserInvalidPropertyData; } /* if */ else return errorStatus; @@ -1004,7 +1018,7 @@ void wxMacDataViewDataBrowserListViewControl::DataBrowserDrawItemProc(DataBrowse dataViewCustomRendererPtr->SetValue(dataToRender); wxDataViewItem dataitem( reinterpret_cast(itemID) ); - dataViewCtrlPtr->GetModel()->GetValue(dataToRender,dataitem,columnIndex); + dataViewCtrlPtr->GetModel()->GetValue(dataToRender,dataitem,dataViewColumnPtr->GetModelColumn()); dataViewCustomRendererPtr->SetValue(dataToRender); // try to determine the content's size (drawable part):