From 77e34d094e43d744b9a76b4bea5ec4eb24611195 Mon Sep 17 00:00:00 2001 From: Mathieu Baudier Date: Sun, 17 Dec 2023 07:23:43 +0100 Subject: [PATCH] Improve UI timeout --- .../src/org/argeo/cms/swt/CmsSwtUi.java | 20 +++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) 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(); } } -- 2.30.2