Changeset 18937 in josm for trunk/src


Ignore:
Timestamp:
2024-01-15T20:25:02+01:00 (10 months ago)
Author:
GerdP
Message:

fix #23415 and #23414, patch 23415-v2.patch

  • fixes issues where the wrong image is shown
  • properly destroys the toggle dialog and the toggle action when no more geotagged image layer is available
  • make sure that the title is updated when no image is selected (instead of possibly showing an image name from a closed layer
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/gui/layer/geoimage/ImageViewerDialog.java

    r18934 r18937  
    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        }
     
    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        });
     
    303301        if (geoImageLayers.isEmpty()) {
    304302            this.layers.setVisible(false);
     303            hideNotify();
     304            if (hasInstance())
     305                destroyInstance();
    305306        } else {
    306307            this.layers.setVisible(true);
     
    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();
     
    352355                            removeImageTab(((MoveImgDisplayPanel<?>) layers.getComponentAt(index)).layer);
    353356                            getImageTabs().forEach(m -> m.setVisible(m.isVisible()));
     357                            showNotify();
    354358                            return;
    355359                        }
     
    417421        imageRemoveFromDiskAction.destroy();
    418422        imageZoomAction.destroy();
     423        toggleAction.destroy();
    419424        cancelLoadingImage();
    420425        super.destroy();
    421         destroyInstance();
    422426    }
    423427
     
    10661070            btnCollapse.setVisible(!isDocked);
    10671071        }
    1068         this.updateLayers(true);
    10691072    }
    10701073
Note: See TracChangeset for help on using the changeset viewer.