Ticket #2483: rotate.patch

File rotate.patch, 3.2 KB (added by dmuecke, 16 years ago)

rotate patch + platform hook

  • Users/mueck/dev/josm/src/org/openstreetmap/josm/actions/mapmode/SelectAction.java

     
    5555 * @author imi
    5656 */
    5757public class SelectAction extends MapMode implements SelectionEnded {
    58 
     58    public static boolean needMouseMove = false;
    5959    enum Mode { move, rotate, select }
    6060    private Mode mode = null;
    6161    private long mouseDownTime = 0;
     
    155155        // do not count anything as a move if it lasts less than 100 milliseconds.
    156156        if ((mode == Mode.move) && (System.currentTimeMillis() - mouseDownTime < initialMoveDelay)) return;
    157157
    158         if ((e.getModifiersEx() & MouseEvent.BUTTON1_DOWN_MASK) == 0)
    159             return;
     158        if(mode != Mode.rotate) // button is pressed in rotate mode
     159            if ((e.getModifiersEx() & MouseEvent.BUTTON1_DOWN_MASK) == 0)
     160                return;
    160161
    161         if (mode == Mode.move) {
     162        if (mode == Mode.move)
    162163            setCursor(Cursor.getPredefinedCursor(Cursor.MOVE_CURSOR));
    163         }
    164164
    165165        if (mousePos == null) {
    166166            mousePos = e.getPoint();
     
    247245        didMove = true;
    248246    }
    249247
     248    /**
     249     * Mac OSX simulates with  ctrl + mouse 1  the second mouse button hence no dragging events get fired.
     250     *
     251     */
     252    @Override public void mouseMoved(MouseEvent e) {
     253        if (needMouseMove && mode == Mode.rotate)
     254            mouseDragged(e);
     255    }
     256
    250257    private Collection<OsmPrimitive> getNearestCollectionVirtual(Point p, boolean allSegements) {
    251258        MapView c = Main.map.mapView;
    252259        int snapDistance = Main.pref.getInteger("mappaint.node.virtual-snap-distance", 8);
  • Users/mueck/dev/josm/src/org/openstreetmap/josm/tools/PlatformHookOsx.java

     
    11// License: GPL. Copyright 2007 by Immanuel Scholz and others
    22package org.openstreetmap.josm.tools;
    33
    4 import org.openstreetmap.josm.tools.Shortcut;
    5 import org.openstreetmap.josm.Main;
    6 import org.openstreetmap.josm.tools.PlatformHookUnixoid;
    7 
    84import java.awt.event.KeyEvent;
    9 import java.lang.reflect.*;
    105import java.io.IOException;
     6import java.lang.reflect.InvocationHandler;
     7import java.lang.reflect.Method;
     8import java.lang.reflect.Proxy;
     9
    1110import javax.swing.UIManager;
    1211
     12import org.openstreetmap.josm.Main;
     13import org.openstreetmap.josm.actions.mapmode.SelectAction;
     14
    1315/**
    1416  * see PlatformHook.java
    1517  */
     
    3941            // by closing all its windows.
    4042            System.out.println("Failed to register with OSX: " + ex);
    4143        }
     44
     45        // Ctrl + mouse 1 is suppressing mouseDragged events
     46        SelectAction.needMouseMove = true;
    4247    }
    4348    public Object invoke (Object proxy, Method method, Object[] args) throws Throwable {
    4449        Boolean handled = Boolean.TRUE;