Call wxDataViewCustomRenderer::ActivateCell() in Mac version too
Do this for consistency with the other ports. Closes #17746.
This commit is contained in:
@@ -2501,10 +2501,6 @@ public:
|
|||||||
corresponding event. Is @NULL otherwise (for keyboard activation).
|
corresponding event. Is @NULL otherwise (for keyboard activation).
|
||||||
Mouse coordinates are adjusted to be relative to the cell.
|
Mouse coordinates are adjusted to be relative to the cell.
|
||||||
|
|
||||||
@note Currently support for this method is not implemented in the
|
|
||||||
native macOS version of the control, i.e. it will be never called
|
|
||||||
there.
|
|
||||||
|
|
||||||
@since 2.9.3
|
@since 2.9.3
|
||||||
|
|
||||||
@note Do not confuse this method with item activation in wxDataViewCtrl
|
@note Do not confuse this method with item activation in wxDataViewCtrl
|
||||||
|
@@ -1677,10 +1677,35 @@ outlineView:(NSOutlineView*)outlineView
|
|||||||
// and setDoubleAction: seems to be wrong as this action message is always
|
// and setDoubleAction: seems to be wrong as this action message is always
|
||||||
// sent whether the cell is editable or not
|
// sent whether the cell is editable or not
|
||||||
wxDataViewCtrl* const dvc = implementation->GetDataViewCtrl();
|
wxDataViewCtrl* const dvc = implementation->GetDataViewCtrl();
|
||||||
|
wxDataViewModel * const model = dvc->GetModel();
|
||||||
|
|
||||||
const wxDataViewItem item = wxDataViewItemFromItem([self itemAtRow:[self clickedRow]]);
|
const wxDataViewItem item = wxDataViewItemFromItem([self itemAtRow:[self clickedRow]]);
|
||||||
|
|
||||||
|
const NSInteger col = [self clickedColumn];
|
||||||
|
wxDataViewColumn* const dvCol = implementation->GetColumn(col);
|
||||||
|
|
||||||
|
// Check if we need to activate a custom renderer first.
|
||||||
|
if ( wxDataViewCustomRenderer* const
|
||||||
|
renderer = wxDynamicCast(dvCol->GetRenderer(), wxDataViewCustomRenderer) )
|
||||||
|
{
|
||||||
|
if ( renderer->GetMode() == wxDATAVIEW_CELL_ACTIVATABLE &&
|
||||||
|
model->IsEnabled(item, dvCol->GetModelColumn()) )
|
||||||
|
{
|
||||||
|
const wxRect rect = implementation->GetRectangle(item, dvCol);
|
||||||
|
|
||||||
|
wxMouseEvent mouseEvent(wxEVT_LEFT_DCLICK);
|
||||||
|
wxPoint pos = dvc->ScreenToClient(wxGetMousePosition());
|
||||||
|
pos -= rect.GetPosition();
|
||||||
|
mouseEvent.m_x = pos.x;
|
||||||
|
mouseEvent.m_y = pos.y;
|
||||||
|
|
||||||
|
renderer->ActivateCell(rect, model, item, col, &mouseEvent);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// And then send the ACTIVATED event in any case.
|
||||||
wxDataViewEvent event(wxEVT_DATAVIEW_ITEM_ACTIVATED, dvc, item);
|
wxDataViewEvent event(wxEVT_DATAVIEW_ITEM_ACTIVATED, dvc, item);
|
||||||
event.SetColumn( [self clickedColumn] );
|
event.SetColumn(col);
|
||||||
dvc->GetEventHandler()->ProcessEvent(event);
|
dvc->GetEventHandler()->ProcessEvent(event);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user