diff options
| author | Carolyn MacLeod | 2012-03-10 18:15:23 +0000 |
|---|---|---|
| committer | Carolyn MacLeod | 2012-03-10 21:42:25 +0000 |
| commit | d4768e1203a5077ab3bf6ed0bdc55f1be7dbe216 (patch) | |
| tree | 4da48c39b0c2efe9635d40c0b258f751980a21f1 | |
| parent | cfe6ffcea1d99dc4b4ce3146d2ad4b9c767e7566 (diff) | |
| download | eclipse.platform.swt-d4768e1203a5077ab3bf6ed0bdc55f1be7dbe216.tar.gz eclipse.platform.swt-d4768e1203a5077ab3bf6ed0bdc55f1be7dbe216.tar.xz eclipse.platform.swt-d4768e1203a5077ab3bf6ed0bdc55f1be7dbe216.zip | |
Mac VoiceOver calls menuForEvent. Fix CCombo.
3 files changed, 12 insertions, 5 deletions
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/CCombo.java b/bundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/CCombo.java index 7914898d6a..f835690345 100644 --- a/bundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/CCombo.java +++ b/bundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/CCombo.java @@ -1750,10 +1750,18 @@ void textEvent (Event event) { case SWT.MenuDetect: { Event e = new Event (); e.time = event.time; + e.detail = event.detail; e.x = event.x; e.y = event.y; - e.detail = event.detail; + if (event.detail == SWT.MENU_KEYBOARD) { + Point pt = getDisplay().map(text, null, text.getCaretLocation()); + e.x = pt.x; + e.y = pt.y; + } notifyListeners (SWT.MenuDetect, e); + event.doit = e.doit; + event.x = e.x; + event.y = e.y; break; } case SWT.Modify: { diff --git a/bundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/StyledText.java b/bundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/StyledText.java index 78bf72f3cb..9dc35aba62 100644 --- a/bundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/StyledText.java +++ b/bundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/StyledText.java @@ -5969,9 +5969,7 @@ void handleKeyUp(Event event) { */ void handleMenuDetect(Event event) { if (event.detail == SWT.MENU_KEYBOARD) { - Point point = getPointAtOffset(caretOffset); - Display display = getDisplay(); - point = display.map(this, null, point); + Point point = getDisplay().map(this, null, getPointAtOffset(caretOffset)); event.x = point.x; event.y = point.y; } diff --git a/bundles/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Control.java b/bundles/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Control.java index b778e836ea..3b3685417a 100644 --- a/bundles/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Control.java +++ b/bundles/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Control.java @@ -2418,7 +2418,8 @@ int /*long*/ menuForEvent (int /*long*/ id, int /*long*/ sel, int /*long*/ theEv Event event = new Event (); event.x = x; event.y = y; - event.detail = SWT.MENU_MOUSE; + NSEvent nsEvent = new NSEvent(theEvent); + event.detail = nsEvent.buttonNumber() > 0 ? SWT.MENU_MOUSE : SWT.MENU_KEYBOARD; sendEvent (SWT.MenuDetect, event); //widget could be disposed at this point if (isDisposed ()) return 0; |
