瀏覽代碼

Fix updater dialog dispose logic.

Updater dialog vanishes when restart dialog appears.
Updater dialog vanishes when OK is clicked if a restart is needed.
Fixes an EDT violation (that causes a deadlock in teh new code).

Fixes CLIENT-282

Change-Id: I0c9a4b15d8d27b00d8125a04a95f0496545a5ea1
Reviewed-on: http://gerrit.dmdirc.com/2114
Automatic-Compile: DMDirc Build Manager
Reviewed-by: Chris Smith <chris@dmdirc.com>
tags/0.7rc1
Greg Holmes 13 年之前
父節點
當前提交
c5541e7336
共有 1 個文件被更改,包括 20 次插入10 次删除
  1. 20
    10
      src/com/dmdirc/addons/ui_swing/dialogs/updater/SwingUpdaterDialog.java

+ 20
- 10
src/com/dmdirc/addons/ui_swing/dialogs/updater/SwingUpdaterDialog.java 查看文件

@@ -23,6 +23,7 @@
23 23
 package com.dmdirc.addons.ui_swing.dialogs.updater;
24 24
 
25 25
 import com.dmdirc.addons.ui_swing.MainFrame;
26
+import com.dmdirc.addons.ui_swing.UIUtilities;
26 27
 import com.dmdirc.addons.ui_swing.components.LoggingSwingWorker;
27 28
 import com.dmdirc.addons.ui_swing.components.PackingTable;
28 29
 import com.dmdirc.addons.ui_swing.components.renderers.UpdateComponentTableCellRenderer;
@@ -229,6 +230,7 @@ public final class SwingUpdaterDialog extends StandardDialog implements
229 230
             if (UpdateChecker.getStatus() == STATE.RESTART_REQUIRED) {
230 231
                 SwingRestartDialog.showSwingRestartDialog(mainFrame,
231 232
                         ModalityType.MODELESS);
233
+                dispose();
232 234
             }
233 235
         } else if (e.getSource().equals(getCancelButton())) {
234 236
             dispose();
@@ -245,16 +247,24 @@ public final class SwingUpdaterDialog extends StandardDialog implements
245 247
     /** {@inheritDoc} */
246 248
     @Override
247 249
     public void statusChanged(final STATE newStatus) {
248
-        if (newStatus == STATE.UPDATING) {
249
-            getOkButton().setEnabled(false);
250
-        } else {
251
-            getOkButton().setEnabled(true);
252
-        }
253
-        if (newStatus == STATE.RESTART_REQUIRED) {
254
-            getCancelButton().setVisible(false);
255
-        } else {
256
-            getCancelButton().setVisible(true);
257
-        }
250
+        UIUtilities.invokeLater(new Runnable() {
251
+
252
+            /** {@inheritDoc} */
253
+            @Override
254
+            public void run() {
255
+                if (newStatus == STATE.UPDATING) {
256
+                    getOkButton().setEnabled(false);
257
+                } else {
258
+                    getOkButton().setEnabled(true);
259
+                }
260
+                if (newStatus == STATE.RESTART_REQUIRED) {
261
+                    getCancelButton().setVisible(false);
262
+                    dispose();
263
+                } else {
264
+                    getCancelButton().setVisible(true);
265
+                }
266
+            }
267
+        });
258 268
     }
259 269
 
260 270
     /** {@inheritDoc} */

Loading…
取消
儲存