mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-156624 Unable to assign mouse wheel shortcut
This commit is contained in:
@@ -76,12 +76,9 @@ public class KeymapUtil {
|
||||
if (!acceleratorText.isEmpty()) {
|
||||
s += ", " + acceleratorText;
|
||||
}
|
||||
} else if (shortcut instanceof PressureShortcut) {
|
||||
s += shortcut.toString();
|
||||
}
|
||||
else if (shortcut instanceof MouseShortcut) {
|
||||
MouseShortcut mouseShortcut = (MouseShortcut)shortcut;
|
||||
s = getMouseShortcutText(mouseShortcut.getButton(), mouseShortcut.getModifiers(), mouseShortcut.getClickCount());
|
||||
s = getMouseShortcutText((MouseShortcut)shortcut);
|
||||
}
|
||||
else if (shortcut instanceof KeyboardModifierGestureShortcut) {
|
||||
final KeyboardModifierGestureShortcut gestureShortcut = (KeyboardModifierGestureShortcut)shortcut;
|
||||
@@ -106,6 +103,11 @@ public class KeymapUtil {
|
||||
}
|
||||
}
|
||||
|
||||
public static String getMouseShortcutText(@NotNull MouseShortcut shortcut) {
|
||||
if (shortcut instanceof PressureShortcut) return shortcut.toString();
|
||||
return getMouseShortcutText(shortcut.getButton(), shortcut.getModifiers(), shortcut.getClickCount());
|
||||
}
|
||||
|
||||
/**
|
||||
* @param button target mouse button
|
||||
* @param modifiers modifiers used within the target click
|
||||
|
||||
+6
-11
@@ -17,17 +17,19 @@ package com.intellij.openapi.keymap.impl.ui;
|
||||
|
||||
import com.intellij.icons.AllIcons;
|
||||
import com.intellij.openapi.actionSystem.MouseShortcut;
|
||||
import com.intellij.openapi.actionSystem.PressureShortcut;
|
||||
import com.intellij.openapi.keymap.KeyMapBundle;
|
||||
import com.intellij.openapi.keymap.Keymap;
|
||||
import com.intellij.openapi.keymap.KeymapUtil;
|
||||
import com.intellij.util.ui.JBUI;
|
||||
import com.intellij.util.ui.UIUtil;
|
||||
|
||||
import javax.swing.*;
|
||||
import java.awt.*;
|
||||
import java.awt.BorderLayout;
|
||||
import java.awt.Component;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
import javax.swing.BorderFactory;
|
||||
import javax.swing.JLabel;
|
||||
import javax.swing.SwingConstants;
|
||||
|
||||
/**
|
||||
* @author Vladimir Kondratyev
|
||||
@@ -66,16 +68,9 @@ final class MouseShortcutDialog extends ShortcutDialog<MouseShortcut> {
|
||||
myText.setForeground(MouseShortcutPanel.FOREGROUND);
|
||||
myText.setText(KeyMapBundle.message("dialog.mouse.pad.default.text"));
|
||||
}
|
||||
else if (shortcut instanceof PressureShortcut) {
|
||||
myText.setForeground(UIUtil.getLabelForeground());
|
||||
myText.setText(KeyMapBundle.message("dialog.mouse.pad.shortcut.text", shortcut.toString()));
|
||||
}
|
||||
else {
|
||||
myText.setForeground(UIUtil.getLabelForeground());
|
||||
myText.setText(KeyMapBundle.message("dialog.mouse.pad.shortcut.text", KeymapUtil.getMouseShortcutText(
|
||||
shortcut.getButton(),
|
||||
shortcut.getModifiers(),
|
||||
shortcut.getClickCount())));
|
||||
myText.setText(KeyMapBundle.message("dialog.mouse.pad.shortcut.text", KeymapUtil.getMouseShortcutText(shortcut)));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+14
-25
@@ -16,14 +16,12 @@
|
||||
package com.intellij.openapi.keymap.impl.ui;
|
||||
|
||||
import com.intellij.openapi.actionSystem.MouseShortcut;
|
||||
import com.intellij.openapi.actionSystem.PressureShortcut;
|
||||
import com.intellij.openapi.actionSystem.Shortcut;
|
||||
import com.intellij.openapi.util.SystemInfo;
|
||||
import com.intellij.openapi.util.registry.Registry;
|
||||
import com.intellij.ui.JBColor;
|
||||
import com.intellij.ui.mac.MacGestureSupportForMouseShortcutPanel;
|
||||
|
||||
import java.awt.*;
|
||||
import java.awt.BorderLayout;
|
||||
import java.awt.event.MouseAdapter;
|
||||
import java.awt.event.MouseEvent;
|
||||
import java.awt.event.MouseWheelEvent;
|
||||
@@ -37,34 +35,33 @@ public final class MouseShortcutPanel extends ShortcutPanel<MouseShortcut> {
|
||||
static final JBColor BORDER = new JBColor(0xDEDEDE, 0x383B3D);
|
||||
|
||||
private final int myClickCount;
|
||||
private boolean myPressureTouch = false;
|
||||
private MouseShortcut myMouseShortcut = null;
|
||||
|
||||
private final MouseAdapter myMouseListener = new MouseAdapter() {
|
||||
@Override
|
||||
public void mouseWheelMoved(MouseWheelEvent event) {
|
||||
mousePressed(event);
|
||||
setShortcutIfNeeded(toMouseShortcut(event));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void mousePressed(MouseEvent event) {
|
||||
myPressureTouch = false;
|
||||
myMouseShortcut = toMouseShortcut(event);
|
||||
}
|
||||
|
||||
private MouseShortcut toMouseShortcut(MouseEvent event) {
|
||||
int button = MouseShortcut.getButton(event);
|
||||
int clickCount = event instanceof MouseWheelEvent ? 1 : event.getClickCount();
|
||||
if (0 <= button && clickCount <= myClickCount) {
|
||||
int modifiers = event.getModifiersEx();
|
||||
myMouseShortcut = new MouseShortcut(button, modifiers, clickCount);
|
||||
return new MouseShortcut(button, modifiers, clickCount);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void mouseReleased(MouseEvent event) {
|
||||
event.consume();
|
||||
|
||||
if (myPressureTouch) {
|
||||
return;
|
||||
}
|
||||
setShortcut(myMouseShortcut);
|
||||
setShortcutIfNeeded(myMouseShortcut);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -74,28 +71,20 @@ public final class MouseShortcutPanel extends ShortcutPanel<MouseShortcut> {
|
||||
addMouseListener(myMouseListener);
|
||||
addMouseWheelListener(myMouseListener);
|
||||
if (SystemInfo.isJavaVersionAtLeast("1.8") && SystemInfo.isMacIntel64 && SystemInfo.isJetbrainsJvm && Registry.is("ide.mac.forceTouch")) {
|
||||
new MacGestureSupportForMouseShortcutPanel(this, new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
myPressureTouch = true;
|
||||
}
|
||||
});
|
||||
new MacGestureSupportForMouseShortcutPanel(this, () -> myMouseShortcut = null);
|
||||
}
|
||||
setBackground(BACKGROUND);
|
||||
setOpaque(true);
|
||||
}
|
||||
|
||||
void setShortcut(MouseShortcut shortcut) {
|
||||
Shortcut old = getShortcut();
|
||||
public void setShortcut(MouseShortcut shortcut) {
|
||||
MouseShortcut old = getShortcut();
|
||||
if (old != null || shortcut != null) {
|
||||
super.setShortcut(shortcut);
|
||||
}
|
||||
}
|
||||
|
||||
public void setShortcut(PressureShortcut shortcut) {
|
||||
Shortcut old = getShortcut();
|
||||
if (old != null || shortcut != null) {
|
||||
super.setShortcut(shortcut);
|
||||
}
|
||||
private void setShortcutIfNeeded(MouseShortcut shortcut) {
|
||||
if (shortcut != null) setShortcut(shortcut);
|
||||
}
|
||||
}
|
||||
|
||||
+2
-15
@@ -19,7 +19,6 @@ import com.intellij.icons.AllIcons;
|
||||
import com.intellij.ide.IdeEventQueue;
|
||||
import com.intellij.openapi.actionSystem.KeyboardShortcut;
|
||||
import com.intellij.openapi.actionSystem.MouseShortcut;
|
||||
import com.intellij.openapi.actionSystem.PressureShortcut;
|
||||
import com.intellij.openapi.actionSystem.Shortcut;
|
||||
import com.intellij.openapi.keymap.KeyMapBundle;
|
||||
import com.intellij.openapi.keymap.KeymapUtil;
|
||||
@@ -68,27 +67,15 @@ final class ShortcutFilteringPanel extends JPanel {
|
||||
if (ShortcutFilteringPanel.this == event.getSource()) {
|
||||
if (value instanceof KeyboardShortcut) {
|
||||
KeyboardShortcut shortcut = (KeyboardShortcut)value;
|
||||
myMousePanel.setShortcut((MouseShortcut)null);
|
||||
myMousePanel.setShortcut(null);
|
||||
myKeyboardPanel.setShortcut(shortcut);
|
||||
if (null != shortcut.getSecondKeyStroke()) {
|
||||
myKeyboardPanel.mySecondStrokeEnable.setSelected(true);
|
||||
}
|
||||
}
|
||||
else if (value instanceof PressureShortcut) {
|
||||
String text = "Power Touch";
|
||||
MouseShortcut shortcut = (PressureShortcut)value;
|
||||
myMousePanel.setShortcut(shortcut);
|
||||
myKeyboardPanel.setShortcut(null);
|
||||
myKeyboardPanel.myFirstStroke.setText(text);
|
||||
myKeyboardPanel.mySecondStroke.setText(null);
|
||||
myKeyboardPanel.mySecondStroke.setEnabled(false);
|
||||
}
|
||||
else {
|
||||
MouseShortcut shortcut = value instanceof MouseShortcut ? (MouseShortcut)value : null;
|
||||
String text = shortcut == null ? null : KeymapUtil.getMouseShortcutText(
|
||||
shortcut.getButton(),
|
||||
shortcut.getModifiers(),
|
||||
shortcut.getClickCount());
|
||||
String text = shortcut == null ? null : KeymapUtil.getMouseShortcutText(shortcut);
|
||||
myMousePanel.setShortcut(shortcut);
|
||||
myKeyboardPanel.setShortcut(null);
|
||||
myKeyboardPanel.myFirstStroke.setText(text);
|
||||
|
||||
Reference in New Issue
Block a user