Ticket #7438: AforAngleSnappinn_NO_TAB.patch
File AforAngleSnappinn_NO_TAB.patch, 3.2 KB (added by , 12 years ago) |
---|
-
src/org/openstreetmap/josm/actions/mapmode/DrawAction.java
11 11 import java.awt.AWTEvent; 12 12 import java.awt.BasicStroke; 13 13 import java.awt.Color; 14 import java.awt.Component; 14 15 import java.awt.Cursor; 15 16 import java.awt.Graphics2D; 17 import java.awt.KeyboardFocusManager; 16 18 import java.awt.MenuItem; 17 19 import java.awt.Point; 18 20 import java.awt.Stroke; … … 39 41 40 42 import java.util.TreeSet; 41 43 import javax.swing.AbstractAction; 44 import javax.swing.JFrame; 42 45 import javax.swing.JOptionPane; 43 46 44 47 import javax.swing.JPopupMenu; 48 import javax.swing.SwingUtilities; 45 49 import javax.swing.Timer; 46 50 import org.openstreetmap.josm.Main; 47 51 import org.openstreetmap.josm.actions.JosmAction; … … 99 103 private SnapHelper snapHelper = new SnapHelper(); 100 104 101 105 private Shortcut backspaceShortcut; 102 private Shortcut snappingShortcut;103 106 104 107 private JCheckBoxMenuItem snapCheckboxMenuItem; 105 108 … … 108 111 Shortcut.registerShortcut("mapmode:draw", tr("Mode: {0}", tr("Draw")), KeyEvent.VK_A, Shortcut.DIRECT), 109 112 mapFrame, ImageProvider.getCursor("crosshair", null)); 110 113 111 snappingShortcut = Shortcut.registerShortcut("mapmode:drawanglesnapping",112 tr("Mode: Draw Angle snapping"), KeyEvent.VK_TAB, Shortcut.DIRECT);113 114 addMenuItem(); 114 115 snapHelper.setMenuCheckBox(snapCheckboxMenuItem); 115 116 cursorJoinNode = ImageProvider.getCursor("crosshair", "joinnode"); … … 223 224 if(Main.map == null || Main.map.mapView == null || !Main.map.mapView.isActiveLayerDrawable()) 224 225 return; 225 226 if (event instanceof KeyEvent) { 227 Component focused = KeyboardFocusManager.getCurrentKeyboardFocusManager().getFocusOwner(); 228 Component wantedFocus = Main.map.mapView.getParent(); 229 boolean foundMapViewAncestor=false; 230 while (focused!=null) { 231 if (focused==wantedFocus) { 232 foundMapViewAncestor=true; 233 } 234 focused = focused.getParent(); 235 } 236 // we accept only events that come from map or toggle dialogs, not from menu and dialogs 237 if (!foundMapViewAncestor) return; 226 238 processKeyEvent((KeyEvent) event); 227 239 } // toggle angle snapping 228 240 updateKeyModifiers((InputEvent) event); … … 237 249 private KeyEvent releaseEvent; 238 250 private Timer timer; 239 251 void processKeyEvent(KeyEvent e) { 240 if (! snappingShortcut.isEvent(e))252 if (!getShortcut().isEvent(e)) 241 253 return; 242 254 243 255 if (e.getID() == KeyEvent.KEY_PRESSED) { … … 260 272 } 261 273 262 274 private void doKeyPressEvent(KeyEvent e) { 263 if (!snappingShortcut.isEvent(e))264 return;265 275 snapHelper.setFixedMode(); 266 276 computeHelperLine(); 267 277 redrawIfRequired(); 268 278 } 269 279 private void doKeyReleaseEvent(KeyEvent e) { 270 if (!snappingShortcut.isEvent(e))271 return;272 280 snapHelper.unFixOrTurnOff(); 273 281 computeHelperLine(); 274 282 redrawIfRequired();