boolean (MouseEvent e) { Component c = e.getComponent(); //frame activation by mouse click if (e.getID() == MOUSE_PRESSED && c instanceof IdeFrame && !c.hasFocus()) { IdeFocusManager focusManager = IdeFocusManager.getGlobalInstance(); if (focusManager instanceof FocusManagerImpl) { Component at = SwingUtilities.getDeepestComponentAt(c, e.getX(), e.getY()); if (at != null && at.isFocusable()) { //noinspection CastConflictsWithInstanceof ((FocusManagerImpl)focusManager).setLastFocusedAtDeactivation((Window)c, at); } } } if (e.isPopupTrigger()) { if (BUTTON3 == e.getButton()) { if (Registry.is("ide.mouse.popup.trigger.modifiers.disabled") && (~BUTTON3_DOWN_MASK & e.getModifiersEx()) != 0) { // it allows to use our mouse shortcuts for Ctrl+Button3, for example resetPopupTrigger(e); } } else if (SystemInfo.isUnix && !SystemInfo.isMac) { // we can do better than silly triggering popup on everything but left click resetPopupTrigger(e); } } boolean ignore = false; if (!(e.getID() == MOUSE_PRESSED || e.getID() == MOUSE_RELEASED || e.getID() == MOUSE_WHEEL && 0 < e.getModifiersEx() || e.getID() == MOUSE_CLICKED)) { ignore = true; } patchClickCount(e); int clickCount = e.getClickCount(); int button = MouseShortcut.getButton(e); if (button == MouseShortcut.BUTTON_WHEEL_UP || button == MouseShortcut.BUTTON_WHEEL_DOWN) { clickCount = 1; } if (e.isConsumed() || e.isPopupTrigger() || (button > 3 ? e.getID() != MOUSE_PRESSED && e.getID() != MOUSE_WHEEL : e.getID() != MOUSE_RELEASED) || clickCount < 1 || button == NOBUTTON) { // See #16995. It did happen ignore = true; } @JdkConstants.InputEventMask int modifiers = e.getModifiers(); @JdkConstants.InputEventMask int modifiersEx = e.getModifiersEx(); if (e.getID() == MOUSE_PRESSED) { myPressedModifiersStored = true; myModifiers = modifiers; myModifiersEx = modifiersEx; } else if (e.getID() == MOUSE_RELEASED) { myForceTouchIsAllowed = true; if (myPressedModifiersStored) { myPressedModifiersStored = false; modifiers = myModifiers; modifiersEx = myModifiersEx; } } final JRootPane root = findRoot(e); if (root != null) { BlockState blockState = myRootPaneToBlockedId.get(root); if (blockState != null) { if (ArrayUtil.indexOf(SWING_EVENTS_PRIORITY, blockState.currentEventId) < ArrayUtil.indexOf(SWING_EVENTS_PRIORITY, e.getID())) { blockState.currentEventId = e.getID(); if (blockState.blockMode == IdeEventQueue.BlockMode.COMPLETE) { return true; } else { ignore = true; } } else { myRootPaneToBlockedId.remove(root); } } } if (c == null) { throw new IllegalStateException("component cannot be null"); } c = SwingUtilities.getDeepestComponentAt(c, e.getX(), e.getY()); if (c instanceof IdeGlassPaneImpl) { c = ((IdeGlassPaneImpl)c).getTargetComponentFor(e); } if (c == null) { // do nothing if component doesn't contains specified point return false; } if (c instanceof MouseShortcutPanel || c.getParent() instanceof MouseShortcutPanel) { return false; // forward mouse processing to the special shortcut panel } if (doVerticalDiagramScrolling(c, e)) { return true; } if (isHorizontalScrolling(c, e)) { boolean done = doHorizontalScrolling(c, (MouseWheelEvent)e); if (done) return true; } if (ignore) return false; // avoid "cyclic component initialization error" in case of dialogs shown because of component initialization failure if (!KeymapManagerImpl.isKeymapManagerInitialized()) { return false; } MouseShortcut shortcut = new MouseShortcut(button, modifiersEx, clickCount); processEvent(e, modifiers, ActionPlaces.MOUSE_SHORTCUT, shortcut, c, true); return e.getButton() > 3; }