Ticket #23802: 23802.debounce_ToggleDialog.patch

File 23802.debounce_ToggleDialog.patch, 2.2 KB (added by taylor.smock, 3 months ago)

Debounce saving ToggleDialog window geometry (don't commit)

  • src/org/openstreetmap/josm/gui/dialogs/ToggleDialog.java

    Subject: [PATCH] Debounce ToggleDialog window geometry saving
    ---
    IDEA additional info:
    Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
    <+>UTF-8
    diff --git a/src/org/openstreetmap/josm/gui/dialogs/ToggleDialog.java b/src/org/openstreetmap/josm/gui/dialogs/ToggleDialog.java
    a b  
    2929import java.util.Collection;
    3030import java.util.LinkedList;
    3131import java.util.List;
     32import java.util.Timer;
     33import java.util.TimerTask;
    3234
    3335import javax.swing.AbstractAction;
    3436import javax.swing.BorderFactory;
     
    102104     */
    103105    public static final BooleanProperty PROP_DYNAMIC_BUTTONS = new BooleanProperty("dialog.dynamic.buttons", false);
    104106    private static final String SELECTED = "selected";
     107    private static final Timer TIMER_THREAD = new Timer("ToggleDialogTimer", true);
     108    private RememberGeometryTask rememberGeometryTask;
    105109
    106110    private final transient ParametrizedEnumProperty<ButtonHidingType> propButtonHiding =
    107111            new ParametrizedEnumProperty<>(ButtonHidingType.class, ButtonHidingType.DYNAMIC) {
     
    705709        }
    706710    }
    707711
     712    private class RememberGeometryTask extends TimerTask {
     713        @Override
     714        public void run() {
     715            if (detachedDialog != null && detachedDialog.isShowing()) {
     716                new WindowGeometry(detachedDialog).remember(preferencePrefix+".geometry");
     717            }
     718        }
     719    }
     720
    708721    /**
    709722     * The dialog class used to display toggle dialogs in a detached window.
    710723     *
     
    757770        }
    758771
    759772        protected void rememberGeometry() {
    760             if (detachedDialog != null && detachedDialog.isShowing()) {
    761                 new WindowGeometry(detachedDialog).remember(preferencePrefix+".geometry");
     773            if (rememberGeometryTask != null) {
     774                rememberGeometryTask.cancel();
    762775            }
     776            rememberGeometryTask = new RememberGeometryTask();
     777            ToggleDialog.TIMER_THREAD.schedule(rememberGeometryTask, 200);
    763778        }
    764779    }
    765780