diff --git a/designer-base/src/main/java/com/fr/design/editlock/EditLockChangeChecker.java b/designer-base/src/main/java/com/fr/design/editlock/EditLockChangeChecker.java index 8f276dfe8..d45c4c181 100644 --- a/designer-base/src/main/java/com/fr/design/editlock/EditLockChangeChecker.java +++ b/designer-base/src/main/java/com/fr/design/editlock/EditLockChangeChecker.java @@ -40,13 +40,17 @@ public abstract class EditLockChangeChecker { try { EditLockOperator operator = WorkContext.getCurrent().get(EditLockOperator.class); boolean locked = operator.isLocked(lockItem); - if (isLocked != locked) { - isLocked = locked; + if (isLocked() != locked) { + setLocked(locked); fireChange(); } } catch (Exception e) { FineLoggerFactory.getLogger().error(e.getMessage(), e); } + } else if (isLocked()){ + // 如果不是远程环境,且此前的远程状态下为锁定的话,切换回来后需要将其修改为不锁定 + setLocked(false); + fireChange(); } } }, 0, INTERVAL, TimeUnit.MILLISECONDS); @@ -65,9 +69,17 @@ public abstract class EditLockChangeChecker { @Override public void run() { for (EditLockChangeListener listener : EditLockChangeChecker.this.listeners) { - listener.updateLockedState(new EditLockChangeEvent(isLocked)); + listener.updateLockedState(new EditLockChangeEvent(isLocked())); } } }); } + + public boolean isLocked() { + return this.isLocked; + } + + public void setLocked(boolean locked) { + this.isLocked = locked; + } }