Przeglądaj źródła

Lets try this again

Fixes issue 3738

Change-Id: If5ec31e73f30f05aa4851998711837054ed63322
Reviewed-on: http://gerrit.dmdirc.com/850
Automatic-Compile: DMDirc Local Commits <dmdirc@googlemail.com>
Reviewed-by: Shane Mc Cormack <shane@dmdirc.com>
tags/0.6.3
Gregory Holmes 14 lat temu
rodzic
commit
e4b3744fdc

+ 22
- 16
src/com/dmdirc/addons/ui_swing/framemanager/windowmenu/WindowMenuFrameManager.java Wyświetl plik

@@ -87,12 +87,12 @@ public final class WindowMenuFrameManager extends JMenu implements
87 87
         super();
88 88
         this.controller = controller;
89 89
 
90
-        menus = Collections.synchronizedMap(new HashMap<FrameContainer,
91
-                FrameContainerMenu>());
92
-        items = Collections.synchronizedMap(new HashMap<FrameContainer,
93
-                FrameContainerMenuItem>());
94
-        menuItems = Collections.synchronizedMap(new HashMap<FrameContainer,
95
-                FrameContainerMenuItem>());
90
+        menus = Collections.synchronizedMap(
91
+                new HashMap<FrameContainer, FrameContainerMenu>());
92
+        items = Collections.synchronizedMap(
93
+                new HashMap<FrameContainer, FrameContainerMenuItem>());
94
+        menuItems = Collections.synchronizedMap(
95
+                new HashMap<FrameContainer, FrameContainerMenuItem>());
96 96
 
97 97
         setText("Window");
98 98
         setMnemonic('w');
@@ -259,16 +259,22 @@ public final class WindowMenuFrameManager extends JMenu implements
259 259
     /** {@inheritDoc} */
260 260
     @Override
261 261
     public void selectionChanged(final Window window) {
262
-        activeWindow = window;
263
-        //iterate over menu items seperately here to simplify code in listeners
264
-        for (SelectionListener menuItem : menus.values()) {
265
-            menuItem.selectionChanged(window);
266
-        }
267
-        for (SelectionListener menuItem : items.values()) {
268
-            menuItem.selectionChanged(window);
269
-        }
270
-        for (SelectionListener menuItem : menuItems.values()) {
271
-            menuItem.selectionChanged(window);
262
+        synchronized (menus) {
263
+            synchronized (items) {
264
+                synchronized (menuItems) {
265
+                    activeWindow = window;
266
+                    //iterate over menu items seperately here to simplify code in listeners
267
+                    for (SelectionListener menuItem : menus.values()) {
268
+                        menuItem.selectionChanged(window);
269
+                    }
270
+                    for (SelectionListener menuItem : items.values()) {
271
+                        menuItem.selectionChanged(window);
272
+                    }
273
+                    for (SelectionListener menuItem : menuItems.values()) {
274
+                        menuItem.selectionChanged(window);
275
+                    }
276
+                }
277
+            }
272 278
         }
273 279
     }
274 280
 

Ładowanie…
Anuluj
Zapisz