mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
add SaveAndSyncHandler.getExternalChangesTracker for caching
This simplifies clients and allows them to avoid listening to FrameStateListener.TOPIC when no appropriate disposable available. GitOrigin-RevId: 4d4e6aa44ef6d2fb0e9b14635bcce41e00b87e14
This commit is contained in:
committed by
intellij-monorepo-bot
parent
9be68d5046
commit
39682cb156
@@ -128,6 +128,7 @@ internal class SaveAndSyncHandlerImpl : BaseSaveAndSyncHandler(), Disposable {
|
||||
val busConnection = ApplicationManager.getApplication().messageBus.connect(this)
|
||||
busConnection.subscribe(FrameStateListener.TOPIC, object : FrameStateListener {
|
||||
override fun onFrameDeactivated() {
|
||||
externalChangesModificationTracker.incModificationCount()
|
||||
if (!settings.isSaveOnFrameDeactivation || !canSyncOrSave()) {
|
||||
return
|
||||
}
|
||||
@@ -254,6 +255,7 @@ internal class SaveAndSyncHandlerImpl : BaseSaveAndSyncHandler(), Disposable {
|
||||
}
|
||||
|
||||
override fun scheduleRefresh() {
|
||||
externalChangesModificationTracker.incModificationCount()
|
||||
refreshDelayAlarm.cancelAndRequest()
|
||||
}
|
||||
|
||||
|
||||
@@ -7,6 +7,8 @@ import com.intellij.openapi.application.ModalityState
|
||||
import com.intellij.openapi.components.ComponentManager
|
||||
import com.intellij.openapi.fileEditor.FileDocumentManager
|
||||
import com.intellij.openapi.project.Project
|
||||
import com.intellij.openapi.util.ModificationTracker
|
||||
import com.intellij.openapi.util.SimpleModificationTracker
|
||||
import org.jetbrains.annotations.ApiStatus
|
||||
|
||||
abstract class SaveAndSyncHandler {
|
||||
@@ -17,6 +19,8 @@ abstract class SaveAndSyncHandler {
|
||||
}
|
||||
}
|
||||
|
||||
protected val externalChangesModificationTracker = SimpleModificationTracker()
|
||||
|
||||
/**
|
||||
* Schedule to save documents, all opened projects (or only passed project if not null) and application.
|
||||
*
|
||||
@@ -74,4 +78,11 @@ abstract class SaveAndSyncHandler {
|
||||
|
||||
@ApiStatus.Experimental
|
||||
abstract fun saveSettingsUnderModalProgress(componentManager: ComponentManager): Boolean
|
||||
|
||||
/**
|
||||
* @return a modification tracker incrementing when external commands are likely run.
|
||||
* Currently it happens on IDE frame deactivation and/or [scheduleRefresh] invocation.
|
||||
*/
|
||||
@ApiStatus.Experimental
|
||||
fun getExternalChangesTracker(): ModificationTracker = externalChangesModificationTracker
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user