From 2d7d0ec22a071cbaaf4f19d19c426f8f074b89c9 Mon Sep 17 00:00:00 2001 From: Kenneth VanderLinde Date: Mon, 24 Feb 2025 11:10:01 -0800 Subject: [PATCH] Disable overlay menu items when overlay is locked This fixes an issue where an overlay that transitions from unlocked to locked remains togglable under the Windwos menu. --- .../rptools/maptool/client/ui/AppMenuBar.java | 19 ++++++++++++++++--- .../client/ui/htmlframe/HTMLOverlayPanel.java | 1 + 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/src/main/java/net/rptools/maptool/client/ui/AppMenuBar.java b/src/main/java/net/rptools/maptool/client/ui/AppMenuBar.java index 031fb03c57..4716210700 100644 --- a/src/main/java/net/rptools/maptool/client/ui/AppMenuBar.java +++ b/src/main/java/net/rptools/maptool/client/ui/AppMenuBar.java @@ -432,14 +432,27 @@ public static void addToOverlayMenu(HTMLOverlayManager overlayManager) { new RPCheckBoxMenuItem(new AppActions.ToggleOverlayAction(overlayManager), overlayMenu); menuItem.setText(overlayManager.getName()); if (overlayManager.getLocked() && !MapTool.getPlayer().isGM()) { - overlayMenu.add(menuItem).setEnabled(false); - } else { - overlayMenu.add(menuItem); + menuItem.setEnabled(false); } + overlayMenu.add(menuItem); overlayMenu.setEnabled(true); overlayItems.put(overlayManager.getName(), menuItem); } + /** + * Enables or disables an overlay menu item based on whether the overlay is locked. + * + * @param overlayManager The overlay being updated. + */ + public static void updateOverlayMenuLocked(HTMLOverlayManager overlayManager) { + // Never lock out a GM. + boolean enabled = MapTool.getPlayer().isGM() ? true : !overlayManager.getLocked(); + JCheckBoxMenuItem menuItem = overlayItems.get(overlayManager.getName()); + if (menuItem != null) { + menuItem.setEnabled(enabled); + } + } + /** * Removes an overlay menu item based on its name. * diff --git a/src/main/java/net/rptools/maptool/client/ui/htmlframe/HTMLOverlayPanel.java b/src/main/java/net/rptools/maptool/client/ui/htmlframe/HTMLOverlayPanel.java index beae1d6283..a80994ba22 100644 --- a/src/main/java/net/rptools/maptool/client/ui/htmlframe/HTMLOverlayPanel.java +++ b/src/main/java/net/rptools/maptool/client/ui/htmlframe/HTMLOverlayPanel.java @@ -268,6 +268,7 @@ public void showOverlay(String name, int zOrder, boolean locked, String html, Ob overlays.add(overlayManager); } overlayManager.setLocked(locked); + AppMenuBar.updateOverlayMenuLocked(overlayManager); } } else {