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 | |