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
|
|
29 | 29 | import java.util.Collection; |
30 | 30 | import java.util.LinkedList; |
31 | 31 | import java.util.List; |
| 32 | import java.util.Timer; |
| 33 | import java.util.TimerTask; |
32 | 34 | |
33 | 35 | import javax.swing.AbstractAction; |
34 | 36 | import javax.swing.BorderFactory; |
… |
… |
|
102 | 104 | */ |
103 | 105 | public static final BooleanProperty PROP_DYNAMIC_BUTTONS = new BooleanProperty("dialog.dynamic.buttons", false); |
104 | 106 | private static final String SELECTED = "selected"; |
| 107 | private static final Timer TIMER_THREAD = new Timer("ToggleDialogTimer", true); |
| 108 | private RememberGeometryTask rememberGeometryTask; |
105 | 109 | |
106 | 110 | private final transient ParametrizedEnumProperty<ButtonHidingType> propButtonHiding = |
107 | 111 | new ParametrizedEnumProperty<>(ButtonHidingType.class, ButtonHidingType.DYNAMIC) { |
… |
… |
|
705 | 709 | } |
706 | 710 | } |
707 | 711 | |
| 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 | |
708 | 721 | /** |
709 | 722 | * The dialog class used to display toggle dialogs in a detached window. |
710 | 723 | * |
… |
… |
|
757 | 770 | } |
758 | 771 | |
759 | 772 | protected void rememberGeometry() { |
760 | | if (detachedDialog != null && detachedDialog.isShowing()) { |
761 | | new WindowGeometry(detachedDialog).remember(preferencePrefix+".geometry"); |
| 773 | if (rememberGeometryTask != null) { |
| 774 | rememberGeometryTask.cancel(); |
762 | 775 | } |
| 776 | rememberGeometryTask = new RememberGeometryTask(); |
| 777 | ToggleDialog.TIMER_THREAD.schedule(rememberGeometryTask, 200); |
763 | 778 | } |
764 | 779 | } |
765 | 780 | |