Skip to content

Commit c47a2c6

Browse files
committed
fix(editor): preserve scroll position and file timestamps on configuration change
Ensure cursor visibility after layout changes and update file timestamps after saving.
1 parent 26b4268 commit c47a2c6

File tree

1 file changed

+16
-0
lines changed

1 file changed

+16
-0
lines changed

app/src/main/java/com/itsaky/androidide/activities/editor/EditorHandlerActivity.kt

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
package com.itsaky.androidide.activities.editor
1919

2020
import android.content.Intent
21+
import android.content.res.Configuration
2122
import android.os.Bundle
2223
import android.text.TextUtils
2324
import android.util.Log
@@ -26,6 +27,7 @@ import android.view.ViewGroup.LayoutParams
2627
import androidx.collection.MutableIntObjectMap
2728
import androidx.core.content.res.ResourcesCompat
2829
import androidx.core.view.GravityCompat
30+
import androidx.core.view.doOnNextLayout
2931
import androidx.lifecycle.lifecycleScope
3032
import com.blankj.utilcode.util.ImageUtils
3133
import com.google.android.material.tabs.TabLayout
@@ -697,6 +699,16 @@ open class EditorHandlerActivity :
697699
}
698700
}
699701

702+
override fun onConfigurationChanged(newConfig: Configuration) {
703+
super.onConfigurationChanged(newConfig)
704+
705+
getCurrentEditor()?.editor?.apply {
706+
doOnNextLayout {
707+
cursor?.let { c -> ensurePositionVisible(c.leftLine, c.leftColumn, true) }
708+
}
709+
}
710+
}
711+
700712
private suspend fun saveResultInternal(
701713
index: Int,
702714
result: SaveResult,
@@ -716,6 +728,10 @@ open class EditorHandlerActivity :
716728
return false
717729
}
718730

731+
frag.file?.let { savedFile ->
732+
fileTimestamps[savedFile.absolutePath] = savedFile.lastModified()
733+
}
734+
719735
val isGradle = fileName.endsWith(".gradle") || fileName.endsWith(".gradle.kts")
720736
val isXml: Boolean = fileName.endsWith(".xml")
721737
if (!result.gradleSaved) {

0 commit comments

Comments
 (0)