From 07637d6cdf48343be1464dcf328283f874257870 Mon Sep 17 00:00:00 2001 From: Tobias Melcher Date: Thu, 17 Apr 2025 16:41:09 +0200 Subject: [PATCH] fix freeze on MacOS in ColumnViewerEditor cancelEditing cannot be called when shouldFireDoubleClick on mouseDown event returns true Fixes: https://github.com/eclipse-platform/eclipse.platform.ui/issues/2927 --- .../org/eclipse/jface/viewers/ColumnViewerEditor.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ColumnViewerEditor.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ColumnViewerEditor.java index 32ee02448bf..71a7189d0f6 100644 --- a/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ColumnViewerEditor.java +++ b/bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/ColumnViewerEditor.java @@ -19,6 +19,7 @@ package org.eclipse.jface.viewers; import org.eclipse.core.runtime.ListenerList; +import org.eclipse.jface.util.Util; import org.eclipse.swt.SWT; import org.eclipse.swt.events.DisposeListener; import org.eclipse.swt.events.FocusAdapter; @@ -279,7 +280,13 @@ public void mouseDown(MouseEvent e) { private boolean shouldFireDoubleClick(int activationTime, int mouseTime, ColumnViewerEditorActivationEvent activationEvent) { - return mouseTime <= activationTime + boolean lessThanActivationTime = mouseTime <= activationTime; + if (Util.isMac() && lessThanActivationTime + && (activationEvent.eventType == ColumnViewerEditorActivationEvent.MOUSE_CLICK_SELECTION + || activationEvent.eventType == ColumnViewerEditorActivationEvent.MOUSE_DOUBLE_CLICK_SELECTION)) { + return false; + } + return lessThanActivationTime && activationEvent.eventType != ColumnViewerEditorActivationEvent.KEY_PRESSED && activationEvent.eventType != ColumnViewerEditorActivationEvent.PROGRAMMATIC && activationEvent.eventType != ColumnViewerEditorActivationEvent.TRAVERSAL;