From e44fb0346693a2cc451d2cc681dfd4400d7d20c7 Mon Sep 17 00:00:00 2001 From: Vladimir Krivosheev Date: Tue, 6 Aug 2024 10:26:08 +0200 Subject: [PATCH] SingleEdtTaskScheduler - use current modality as default GitOrigin-RevId: b57ded73bc7d089a59814bf38d3f9c7d20aeed2c --- .../src/com/intellij/util/SingleEdtTaskScheduler.kt | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/platform/ide-core/src/com/intellij/util/SingleEdtTaskScheduler.kt b/platform/ide-core/src/com/intellij/util/SingleEdtTaskScheduler.kt index 5c2960fb17b0..a104df18a480 100644 --- a/platform/ide-core/src/com/intellij/util/SingleEdtTaskScheduler.kt +++ b/platform/ide-core/src/com/intellij/util/SingleEdtTaskScheduler.kt @@ -16,6 +16,7 @@ class SingleEdtTaskScheduler private constructor() { fun createSingleEdtTaskScheduler(): SingleEdtTaskScheduler = SingleEdtTaskScheduler() } + @Suppress("UsagesOfObsoleteApi") private val impl = SingleAlarm( task = {}, delay = 0, @@ -34,7 +35,8 @@ class SingleEdtTaskScheduler private constructor() { * The same as for [SingleAlarm], if you call [request] several times, we throttle but not debounce. */ fun request(delay: Long, task: Runnable) { - impl.scheduleTask(delay = delay, customModality = null, cancelCurrent = false, task = { task.run() }) + val modalityState = ModalityState.defaultModalityState().takeIf { it !== ModalityState.nonModal() }?.asContextElement() + impl.scheduleTask(delay = delay, customModality = modalityState, cancelCurrent = false, task = { task.run() }) } fun request(delay: Long, modality: ModalityState, task: Runnable) { @@ -45,10 +47,10 @@ class SingleEdtTaskScheduler private constructor() { * Use it if you want `debounce` behavior instead of `throttle` (see [request]). */ fun cancelAndRequest(delay: Long, task: Runnable) { - impl.scheduleTask(delay = delay, customModality = null, task = { task.run() }) + val modalityState = ModalityState.defaultModalityState().takeIf { it !== ModalityState.nonModal() }?.asContextElement() + impl.scheduleTask(delay = delay, customModality = modalityState, task = { task.run() }) } - fun cancelAndRequest(delay: Long, modality: ModalityState, task: Runnable) { impl.scheduleTask(delay = delay, customModality = modality.asContextElement(), task = { task.run() }) }