From 4a303a7b3635adfee8f46ac76af4e1b7b4a7029b Mon Sep 17 00:00:00 2001
From: Normand Briere <nbriere@noware.ca>
Date: Sun, 08 Sep 2019 15:35:13 -0400
Subject: [PATCH] Fix navigation arrows.

---
 ObjEditor.java  |    3 +
 CameraPane.java |  113 ++++++++++++++++++++++++++++++++++++++------------------
 Grafreed.java   |    1 
 3 files changed, 79 insertions(+), 38 deletions(-)

diff --git a/CameraPane.java b/CameraPane.java
index a8ea6b4..755d471 100644
--- a/CameraPane.java
+++ b/CameraPane.java
@@ -10867,30 +10867,53 @@
                 
                 if (keys[DOWN_ARROW])
                 {
+                    speed = ++speedkey[DOWN_ARROW];
+                    if (speed > 20)
+                        speed = 20;
                     GoDown(modifiers);
                     keyon = true;
                 }
+                else
+                    speedkey[DOWN_ARROW] = 0;
 
                 if (keys[UP_ARROW])
                 {
+                    speed = ++speedkey[UP_ARROW];
+                    if (speed > 20)
+                        speed = 20;
                     GoUp(modifiers);
                     keyon = true;
                 }
+                else
+                    speedkey[UP_ARROW] = 0;
 
                 if (keys[LEFT_ARROW])
                 {
+                    speed = ++speedkey[LEFT_ARROW];
+                    if (speed > 20)
+                        speed = 20;
                     GoLeft(modifiers);
                     keyon = true;
                 }
+                else 
+                    speedkey[LEFT_ARROW] = 0;
 
                 if (keys[RIGHT_ARROW])
                 {
+                    speed = ++speedkey[RIGHT_ARROW];
+                    if (speed > 20)
+                        speed = 20;
                     GoRight(modifiers);
                     keyon = true;
                 }
+                else
+                    speedkey[RIGHT_ARROW] = 0;
                 
                 if (keyon)
+                {
                     repaint();
+                }
+                
                 //pingthread.mute = false;
             }
             
@@ -14828,9 +14851,10 @@
             }
         }
         }
+    
     PingThread pingthread = new PingThread();
-    int delta = 2;
-    int speed = 2;
+    int delta = 1;
+    int speed = 1;
     boolean autorepeat = false;
 
     void GoDown(int mod)
@@ -14840,21 +14864,27 @@
         /**/
         if((mod&SHIFT) == SHIFT)
         {
+//            if (isVR)
+//                manipCamera.RotateInterest(0, speed);
+//            else
+                manipCamera.Translate(0, -speed*delta, getWidth());
+        }
+        else
+        {
             if (isVR)
-                manipCamera.RotateInterest(0, speed);
+                manipCamera.BackForth(0, -speed*delta, isVR?1000:0); // getWidth());
             else
                 manipCamera.RotatePosition(0, -speed);
         }
-        else
-            manipCamera.BackForth(0, -speed*delta, isVR?1000:0); // getWidth());
+        
         /**/
-        if ((mod & SHIFT) == SHIFT)
-        {
-            mouseMode = mouseMode; // VR??
-        } else
-        {
-            mouseMode |= BACKFORTH;
-        }
+//        if ((mod & SHIFT) == SHIFT)
+//        {
+//            mouseMode = mouseMode; // VR??
+//        } else
+//        {
+//            mouseMode |= BACKFORTH;
+//        }
 
         targetLookAt.set(manipCamera.lookAt);
         
@@ -14870,21 +14900,27 @@
         
         if((mod&SHIFT) == SHIFT)
         {
+//            if (isVR)
+//                manipCamera.RotateInterest(0, -speed);
+//            else
+                manipCamera.Translate(0, speed*delta, getWidth());
+        }
+        else
+        {
             if (isVR)
-                manipCamera.RotateInterest(0, -speed);
+                manipCamera.BackForth(0, speed*delta, isVR?1000:0); // getWidth());
             else
                 manipCamera.RotatePosition(0, speed);
         }
-        else
-            manipCamera.BackForth(0, speed*delta, isVR?1000:0); // getWidth());
+        
         /**/
-        if ((mod & SHIFT) == SHIFT)
-        {
-            mouseMode = mouseMode;
-        } else
-        {
-            mouseMode |= BACKFORTH;
-        }
+//        if ((mod & SHIFT) == SHIFT)
+//        {
+//            mouseMode = mouseMode;
+//        } else
+//        {
+//            mouseMode |= BACKFORTH;
+//        }
 
         targetLookAt.set(manipCamera.lookAt);
         
@@ -14905,14 +14941,15 @@
             else
                 manipCamera.RotatePosition(speed, 0);
         }
+        
         /**/
-        if ((mod & SHIFT) == SHIFT)
-        {
-            mouseMode = mouseMode;
-        } else
-        {
-            mouseMode |= ROTATE;
-        } // TRANSLATE;
+//        if ((mod & SHIFT) == SHIFT)
+//        {
+//            mouseMode = mouseMode;
+//        } else
+//        {
+//            mouseMode |= ROTATE;
+//        } // TRANSLATE;
 
         //System.err.println("lookAt = " + manipCamera.lookAt);
         //System.err.println("location = " + manipCamera.location);
@@ -14938,13 +14975,13 @@
         }
         
         /**/
-        if ((mod & SHIFT) == SHIFT)
-        {
-            mouseMode = mouseMode;
-        } else
-        {
-            mouseMode |= ROTATE;
-        } // TRANSLATE;
+//        if ((mod & SHIFT) == SHIFT)
+//        {
+//            mouseMode = mouseMode;
+//        } else
+//        {
+//            mouseMode |= ROTATE;
+//        } // TRANSLATE;
 
         targetLookAt.set(manipCamera.lookAt);
         
@@ -15350,7 +15387,8 @@
         {
             mouseMode |= SELECT;
         }
-        if ((modifiersex & SHIFT) == SHIFT || forcetranslate || (modifiers & MouseEvent.BUTTON3_MASK) != 0)
+        if (//(modifiersex & SHIFT) == SHIFT ||
+                forcetranslate || (modifiers & MouseEvent.BUTTON3_MASK) != 0)
         {
             mouseMode &= ~VR;
             mouseMode |= TRANSLATE;
@@ -15862,6 +15900,7 @@
     }
 
     boolean keys[] = new boolean[256];
+    int speedkey[] = new int[256];
     int modifiers = 0;
     
     public void processKeyEvent(KeyEvent e)
diff --git a/Grafreed.java b/Grafreed.java
index 1150da2..83452e7 100644
--- a/Grafreed.java
+++ b/Grafreed.java
@@ -1033,7 +1033,6 @@
         grafreed.universe.root = true;
         grafreed.universe.openEditWindow(null, true); //, true);
         grafreed.universe.editWindow.New();
-        grafreed.universe.editWindow.DuplicateVersion();
         
         //mon.stop();
         //System.out.println(mon);
diff --git a/ObjEditor.java b/ObjEditor.java
index 44ad97c..facfbbe 100644
--- a/ObjEditor.java
+++ b/ObjEditor.java
@@ -4407,6 +4407,9 @@
         }
         
         ResetModel();
+        
+        DuplicateVersion();
+        
         this.SetVersionStates();
         objEditor.refreshContents();
     }

--
Gitblit v1.6.2