Ticket #23415: 23415-v2.patch

File 23415-v2.patch, 3.3 KB (added by GerdP, 5 months ago)

also make sure that the title is updated when no image is selected

  • src/org/openstreetmap/josm/gui/layer/geoimage/ImageViewerDialog.java

     
    146146    private static void destroyInstance() {
    147147        MapFrame map = MainApplication.getMap();
    148148        synchronized (ImageViewerDialog.class) {
    149             if (dialog != null && map != null && map.getToggleDialog(ImageViewerDialog.class) != null) {
    150                 map.removeToggleDialog(dialog);
     149            if (dialog != null) {
     150                if (map != null && map.getToggleDialog(ImageViewerDialog.class) != null) {
     151                    map.removeToggleDialog(dialog);
     152                }
     153                dialog.destroy();
    151154            }
    152155        }
    153156        dialog = null;
     
    180183        this.layers.getModel().addChangeListener(l -> {
    181184            // We need to check to see whether or not the worker is shut down. See #22922 for details.
    182185            if (!MainApplication.worker.isShutdown() && this.isDialogShowing()) {
    183                 MainApplication.worker.execute(() -> GuiHelper.runInEDT(() -> {
    184                     Component selected = this.layers.getSelectedComponent();
    185                     if (selected instanceof MoveImgDisplayPanel) {
    186                         ((MoveImgDisplayPanel<?>) selected).fireModelUpdate();
    187                     }
    188                 }));
     186                MainApplication.worker.execute(() -> GuiHelper.runInEDT(this::showNotify));
    189187            }
    190188        });
    191189    }
     
    302300                .filter(IGeoImageLayer.class::isInstance).map(IGeoImageLayer.class::cast).collect(Collectors.toList());
    303301        if (geoImageLayers.isEmpty()) {
    304302            this.layers.setVisible(false);
     303            hideNotify();
     304            if (hasInstance())
     305                destroyInstance();
    305306        } else {
    306307            this.layers.setVisible(true);
    307308            if (changed) {
     
    314315            } else if (selected != null && !selected.layer.containsImage(this.currentEntry)) {
    315316                this.getImageTabs().filter(m -> m.layer.containsImage(this.currentEntry)).mapToInt(this.layers::indexOfComponent).findFirst()
    316317                        .ifPresent(this.layers::setSelectedIndex);
     318            } else if (selected == null) {
     319                updateTitle();
    317320            }
    318321            this.layers.invalidate();
    319322        }
     
    351354                        if (index >= 0) {
    352355                            removeImageTab(((MoveImgDisplayPanel<?>) layers.getComponentAt(index)).layer);
    353356                            getImageTabs().forEach(m -> m.setVisible(m.isVisible()));
     357                            showNotify();
    354358                            return;
    355359                        }
    356360                        source = source.getParent();
     
    416420        imageRemoveAction.destroy();
    417421        imageRemoveFromDiskAction.destroy();
    418422        imageZoomAction.destroy();
     423        toggleAction.destroy();
    419424        cancelLoadingImage();
    420425        super.destroy();
    421         destroyInstance();
    422426    }
    423427
    424428    /**
     
    10651069        if (btnCollapse != null) {
    10661070            btnCollapse.setVisible(!isDocked);
    10671071        }
    1068         this.updateLayers(true);
    10691072    }
    10701073
    10711074    /**