This is an automated email from the ASF dual-hosted git repository.

desruisseaux pushed a commit to branch geoapi-4.0
in repository https://gitbox.apache.org/repos/asf/sis.git

commit b7e9022f414d8a7a22a1295cc50b26ef65b501b3
Author: Martin Desruisseaux <[email protected]>
AuthorDate: Sat Sep 17 20:16:58 2022 +0200

    Avoid excesive amount of "mouse cursor changed" events.
---
 .../main/java/org/apache/sis/gui/map/MapCanvas.java    | 18 ++++++++++--------
 1 file changed, 10 insertions(+), 8 deletions(-)

diff --git 
a/application/sis-javafx/src/main/java/org/apache/sis/gui/map/MapCanvas.java 
b/application/sis-javafx/src/main/java/org/apache/sis/gui/map/MapCanvas.java
index e02938ca57..41dfe18c8d 100644
--- a/application/sis-javafx/src/main/java/org/apache/sis/gui/map/MapCanvas.java
+++ b/application/sis-javafx/src/main/java/org/apache/sis/gui/map/MapCanvas.java
@@ -163,7 +163,7 @@ public abstract class MapCanvas extends PlanarCanvas {
      * @see #requestRepaint()
      * @see Delayed
      */
-    private static final long REPAINT_DELAY = 500;
+    private static final long REPAINT_DELAY = 200;
 
     /**
      * Number of nanoseconds to wait before to set mouse cursor shape to 
{@link Cursor#WAIT} during rendering.
@@ -171,7 +171,7 @@ public abstract class MapCanvas extends PlanarCanvas {
      *
      * @see #renderingStartTime
      */
-    private static final long WAIT_CURSOR_DELAY = (1000 - REPAINT_DELAY) * 
NANOS_PER_MILLISECOND;
+    private static final long WAIT_CURSOR_DELAY = (500 - REPAINT_DELAY) * 
NANOS_PER_MILLISECOND;
 
     /**
      * The pane showing the map and any other JavaFX nodes to scale and 
translate together with the map.
@@ -1410,8 +1410,8 @@ public abstract class MapCanvas extends PlanarCanvas {
     }
 
     /**
-     * The action to execute if rendering appear to be slow. If the rendering 
did not completed
-     * after about one second, the mouse cursor shaped will be set to the wait 
cursor. We do not
+     * The action to execute if rendering appears to be slow. If the rendering 
did not completed
+     * after about one second, the mouse cursor shape will be set to the wait 
cursor. We do not
      * do this change immediately because the mouse cursor changes become 
disturbing if applied
      * continuously for a series of fast renderings.
      */
@@ -1442,17 +1442,19 @@ public abstract class MapCanvas extends PlanarCanvas {
     /**
      * Invoked in JavaFX thread {@link #WAIT_CURSOR_DELAY} nanoseconds after a 
rendering started.
      * If the same rendering is still under progress, the mouse cursor is set 
to {@link Cursor#WAIT}.
-     * If a different rendering is in progress, do not set the cursor because 
the GUI is fast enough
-     * but schedule a new {@link CursorChange} in case the next rendering is 
slow.
+     * If a different rendering is in progress, do not set the cursor because 
the GUI was fast enough
+     * for the rendering just done but scheduled a new {@link CursorChange} in 
case the next rendering
+     * will be slow.
      */
     private void setWaitCursor(final long startTime) {
         isCursorChangeScheduled = false;
         if (renderingInProgress != null) {
             if (startTime == renderingStartTime) {
                 floatingPane.setCursor(Cursor.WAIT);
+            } else {
+                DelayedExecutor.schedule(new CursorChange());
+                isCursorChangeScheduled = true;
             }
-            DelayedExecutor.schedule(new CursorChange());
-            isCursorChangeScheduled = true;
         }
     }
 

Reply via email to