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).
 | 
			
		||||
            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
 | 
			
		||||
 | 
			
		||||
        @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
 | 
			
		||||
    // sent whether the cell is editable or not
 | 
			
		||||
    wxDataViewCtrl* const dvc = implementation->GetDataViewCtrl();
 | 
			
		||||
    wxDataViewModel * const model = dvc->GetModel();
 | 
			
		||||
 | 
			
		||||
    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);
 | 
			
		||||
    event.SetColumn( [self clickedColumn] );
 | 
			
		||||
    event.SetColumn(col);
 | 
			
		||||
    dvc->GetEventHandler()->ProcessEvent(event);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user