meta zoom and two finger click fixes for mac

This commit is contained in:
bancika
2020-12-11 13:54:19 +01:00
parent a1072973d2
commit 011a06ec75
7 changed files with 29 additions and 7 deletions
@@ -3280,11 +3280,23 @@
<changes> <changes>
<org.diylc.appframework.update.Change> <org.diylc.appframework.update.Change>
<changeType>NEW_FEATURE</changeType> <changeType>NEW_FEATURE</changeType>
<description>macOS: added pinch zooming functionality</description> <description>Added pinch zooming functionality for compatible devices (tested on Mac and Win laptops)</description>
</org.diylc.appframework.update.Change> </org.diylc.appframework.update.Change>
<org.diylc.appframework.update.Change> <org.diylc.appframework.update.Change>
<changeType>IMPROVEMENT</changeType> <changeType>IMPROVEMENT</changeType>
<description>macOS: added meta +/- (minus and equal keys) keyboard shortcuts for zooming</description> <description>macOS: added meta +/- keyboard shortcuts for zooming</description>
</org.diylc.appframework.update.Change>
<org.diylc.appframework.update.Change>
<changeType>IMPROVEMENT</changeType>
<description>macOS: two finger click shows the popup menu without deselecting a selected component</description>
</org.diylc.appframework.update.Change>
<org.diylc.appframework.update.Change>
<changeType>IMPROVEMENT</changeType>
<description>Apply context menu rotation and mirroring to Trimmer potentiometers</description>
</org.diylc.appframework.update.Change>
<org.diylc.appframework.update.Change>
<changeType>IMPROVEMENT</changeType>
<description>Apply context menu rotation and mirroring to SMD components</description>
</org.diylc.appframework.update.Change> </org.diylc.appframework.update.Change>
</changes> </changes>
<url>https://github.com/bancika/diy-layout-creator/releases</url> <url>https://github.com/bancika/diy-layout-creator/releases</url>
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -340,7 +340,7 @@ public class MainFrame extends JFrame implements ISwingUI {
rightPanel.add(component); rightPanel.add(component);
break; break;
case SwingConstants.CENTER: case SwingConstants.CENTER:
centerPanel.add(component, BorderLayout.CENTER); centerPanel.add(component);
break; break;
default: default:
throw new BadPositionException(); throw new BadPositionException();
@@ -139,10 +139,14 @@ public class CanvasPanel extends JComponent implements Autoscroll {
getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW) getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW)
.put(KeyStroke.getKeyStroke(KeyEvent.VK_ADD, KeyEvent.CTRL_DOWN_MASK), "zoomIn"); .put(KeyStroke.getKeyStroke(KeyEvent.VK_ADD, KeyEvent.CTRL_DOWN_MASK), "zoomIn");
getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW)
.put(KeyStroke.getKeyStroke(KeyEvent.VK_PLUS, KeyEvent.CTRL_DOWN_MASK), "zoomIn");
getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW) getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW)
.put(KeyStroke.getKeyStroke(KeyEvent.VK_SUBTRACT, KeyEvent.CTRL_DOWN_MASK), "zoomOut"); .put(KeyStroke.getKeyStroke(KeyEvent.VK_SUBTRACT, KeyEvent.CTRL_DOWN_MASK), "zoomOut");
getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW) getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW)
.put(KeyStroke.getKeyStroke(KeyEvent.VK_ADD, KeyEvent.META_DOWN_MASK), "zoomIn"); .put(KeyStroke.getKeyStroke(KeyEvent.VK_ADD, KeyEvent.META_DOWN_MASK), "zoomIn");
getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW)
.put(KeyStroke.getKeyStroke(KeyEvent.VK_PLUS, KeyEvent.META_DOWN_MASK), "zoomIn");
getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW) getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW)
.put(KeyStroke.getKeyStroke(KeyEvent.VK_EQUALS, KeyEvent.META_DOWN_MASK), "zoomIn"); .put(KeyStroke.getKeyStroke(KeyEvent.VK_EQUALS, KeyEvent.META_DOWN_MASK), "zoomIn");
getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW) getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW)
@@ -258,9 +258,12 @@ public class CanvasPlugin implements IPlugIn, ClipboardOwner {
public void mouseClicked(MouseEvent e) { public void mouseClicked(MouseEvent e) {
if (scrollPane.isMouseScrollMode() || e.getButton() == MouseEvent.BUTTON2) if (scrollPane.isMouseScrollMode() || e.getButton() == MouseEvent.BUTTON2)
return; return;
// do not pass isMetaDown on mac when button3 (two finger click) is pressed
boolean ctrlDown = Utils.isMac() ? (e.getButton() == MouseEvent.BUTTON3 ? false : e.isMetaDown()): e.isControlDown();
plugInPort.mouseClicked(e.getPoint(), e.getButton(), plugInPort.mouseClicked(e.getPoint(), e.getButton(),
Utils.isMac() ? e.isMetaDown() : e.isControlDown(), e.isShiftDown(), e.isAltDown(), ctrlDown, e.isShiftDown(), e.isAltDown(), e.getClickCount());
e.getClickCount());
} }
@Override @Override
@@ -466,7 +469,7 @@ public class CanvasPlugin implements IPlugIn, ClipboardOwner {
} }
public void zoom(int direction) { public void zoom(int direction) {
Point mousePos = canvasPanel.getMousePosition(true); Point mousePos = canvasPanel.getMousePosition(true);
// change zoom level // change zoom level
double oldZoom = plugInPort.getZoomLevel(); double oldZoom = plugInPort.getZoomLevel();
@@ -491,6 +494,9 @@ public class CanvasPlugin implements IPlugIn, ClipboardOwner {
JScrollBar horizontal = scrollPane.getHorizontalScrollBar(); JScrollBar horizontal = scrollPane.getHorizontalScrollBar();
JScrollBar vertical = scrollPane.getVerticalScrollBar(); JScrollBar vertical = scrollPane.getVerticalScrollBar();
if (mousePos == null)
mousePos = new Point((int)visibleRect.getCenterX(), (int)visibleRect.getCenterY());
if (selectionBounds == null) { if (selectionBounds == null) {
// center to cursor // center to cursor