From: Mathieu Baudier Date: Sun, 17 Dec 2023 06:23:43 +0000 (+0100) Subject: Improve UI timeout X-Git-Tag: v2.3.26~1 X-Git-Url: https://git.argeo.org/?p=lgpl%2Fargeo-commons.git;a=commitdiff_plain;h=77e34d094e43d744b9a76b4bea5ec4eb24611195 Improve UI timeout --- diff --git a/swt/org.argeo.cms.swt/src/org/argeo/cms/swt/CmsSwtUi.java b/swt/org.argeo.cms.swt/src/org/argeo/cms/swt/CmsSwtUi.java index 1d15f87f0..b16eb0f9e 100644 --- a/swt/org.argeo.cms.swt/src/org/argeo/cms/swt/CmsSwtUi.java +++ b/swt/org.argeo.cms.swt/src/org/argeo/cms/swt/CmsSwtUi.java @@ -41,28 +41,32 @@ public class CmsSwtUi extends Composite implements CmsUi { } public void setUiTimeout(long uiTimeout) { - if (timeoutTask != null) - timeoutTask.cancel(); + clearTimeoutTask(); this.uiTimeout = uiTimeout; if (this.uiTimeout <= 0) return; + final long timeoutTaskPeriod = 60 * 60 * 1000;// 1h timeoutTask = cmsView.schedule(() -> { disposeIfTimedout(); - }, 0, 60 * 1000); + }, timeoutTaskPeriod, timeoutTaskPeriod); } + /** Must be run in UI thread. */ public void disposeIfTimedout() { - if (timeoutTask == null) - return; if (isDisposed()) { - timeoutTask.cancel(); - timeoutTask = null; + clearTimeoutTask(); return; } if (System.currentTimeMillis() - getLastAccess() >= uiTimeout) { + dispose(); + clearTimeoutTask(); + } + } + + private void clearTimeoutTask() { + if (timeoutTask != null) { timeoutTask.cancel(); timeoutTask = null; - dispose(); } }