From 9b137f80602e508ed423e846dd974ebe2be4fda9 Mon Sep 17 00:00:00 2001 From: Sergey Malenkov Date: Fri, 17 Jul 2015 20:29:10 +0300 Subject: [PATCH] IDEA-142715 It's impossible to move multiple files by mouse between changelists or even select several files via Ctrl/Cmd+Click MouseEvent conversion loses the META_MASK modifier, so we should use getModifiers()|getModifiersEx() to copy all masks. --- .../com/intellij/openapi/actionSystem/ex/ComboBoxAction.java | 2 +- platform/platform-impl/src/com/intellij/ide/IdeEventQueue.java | 2 +- .../src/com/intellij/openapi/wm/impl/IdeGlassPaneImpl.java | 2 +- platform/util/src/com/intellij/util/ui/MouseEventAdapter.java | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/platform/platform-api/src/com/intellij/openapi/actionSystem/ex/ComboBoxAction.java b/platform/platform-api/src/com/intellij/openapi/actionSystem/ex/ComboBoxAction.java index 9733f4762b7b..947bd507fa38 100644 --- a/platform/platform-api/src/com/intellij/openapi/actionSystem/ex/ComboBoxAction.java +++ b/platform/platform-api/src/com/intellij/openapi/actionSystem/ex/ComboBoxAction.java @@ -198,7 +198,7 @@ public abstract class ComboBoxAction extends AnAction implements CustomComponent mouseMoved(MouseEventAdapter.convert(e, e.getComponent(), MouseEvent.MOUSE_MOVED, e.getWhen(), - e.getModifiers(), + e.getModifiers() | e.getModifiersEx(), e.getX(), e.getY())); } diff --git a/platform/platform-impl/src/com/intellij/ide/IdeEventQueue.java b/platform/platform-impl/src/com/intellij/ide/IdeEventQueue.java index f6abdda0ef56..b8ac9c2692f7 100644 --- a/platform/platform-impl/src/com/intellij/ide/IdeEventQueue.java +++ b/platform/platform-impl/src/com/intellij/ide/IdeEventQueue.java @@ -352,7 +352,7 @@ public class IdeEventQueue extends EventQueue { lastMouseWheel = System.currentTimeMillis(); MouseWheelEvent newMouseWheelEvent = MouseEventAdapter.convert(mwe, - wheelDestinationComponent, mwe.getID(), lastMouseWheel, mwe.getModifiers(), mwe.getX(), mwe.getY() + wheelDestinationComponent, mwe.getID(), lastMouseWheel, mwe.getModifiers() | mwe.getModifiersEx(), mwe.getX(), mwe.getY() ); return newMouseWheelEvent; } diff --git a/platform/platform-impl/src/com/intellij/openapi/wm/impl/IdeGlassPaneImpl.java b/platform/platform-impl/src/com/intellij/openapi/wm/impl/IdeGlassPaneImpl.java index 7e31dbeeea43..db8d3c53708d 100644 --- a/platform/platform-impl/src/com/intellij/openapi/wm/impl/IdeGlassPaneImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/wm/impl/IdeGlassPaneImpl.java @@ -406,7 +406,7 @@ public class IdeGlassPaneImpl extends JPanel implements IdeGlassPaneEx, IdeEvent private static MouseEvent convertEvent(final MouseEvent e, final Component target) { final Point point = SwingUtilities.convertPoint(e.getComponent(), e.getPoint(), target); - return MouseEventAdapter.convert(e, target, e.getID(), e.getWhen(), e.getModifiersEx(), point.x, point.y); + return MouseEventAdapter.convert(e, target, point.x, point.y); } private static void fireMouseEvent(final MouseListener listener, final MouseEvent event) { diff --git a/platform/util/src/com/intellij/util/ui/MouseEventAdapter.java b/platform/util/src/com/intellij/util/ui/MouseEventAdapter.java index a7aedde544e4..4b9df5a10ecc 100644 --- a/platform/util/src/com/intellij/util/ui/MouseEventAdapter.java +++ b/platform/util/src/com/intellij/util/ui/MouseEventAdapter.java @@ -98,7 +98,7 @@ public class MouseEventAdapter implements MouseListener, MouseMotionListener, } public static MouseEvent convert(MouseEvent event, Component source, int x, int y) { - return convert(event, source, event.getID(), event.getWhen(), event.getModifiers(), x, y); + return convert(event, source, event.getID(), event.getWhen(), event.getModifiers() | event.getModifiersEx(), x, y); } public static MouseEvent convert(MouseEvent event, Component source, int id, long when, int modifiers, int x, int y) {