mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-03-22 06:50:54 +07:00
[DS-5493] compare Interval.language and type instead of just type
GitOrigin-RevId: a42048d57f5e3f6d7f061ded1e2a9eaf6be95ca2
This commit is contained in:
committed by
intellij-monorepo-bot
parent
10167ae72d
commit
cf108da37d
@@ -53,7 +53,9 @@ class NonIncrementalCellLines private constructor(private val document: Document
|
||||
}.count()
|
||||
|
||||
val trimAtEnd = oldCells.asReversed().zip(newCells.asReversed()).takeWhile { (oldCell, newCell) ->
|
||||
oldCell.type == newCell.type && oldCell.size == newCell.size &&
|
||||
oldCell.type == newCell.type &&
|
||||
oldCell.language == newCell.language &&
|
||||
oldCell.size == newCell.size &&
|
||||
oldCell != oldAffectedCells.lastOrNull() && newCell != newAffectedCells.lastOrNull()
|
||||
}.count()
|
||||
|
||||
|
||||
@@ -206,6 +206,13 @@ class NotebookIntervalPointerFactoryImpl(private val notebookCellLines: Notebook
|
||||
private fun makeSnapshot(interval: NotebookCellLines.Interval) =
|
||||
PointerSnapshot(pointers[interval.ordinal], interval)
|
||||
|
||||
private fun hasSingleIntervalsWithSameTypeAndLanguage(oldIntervals: List<NotebookCellLines.Interval>,
|
||||
newIntervals: List<NotebookCellLines.Interval>): Boolean {
|
||||
val old = oldIntervals.singleOrNull() ?: return false
|
||||
val new = newIntervals.singleOrNull() ?: return false
|
||||
return old.type == new.type && old.language == new.language
|
||||
}
|
||||
|
||||
private fun updateChangedIntervals(e: NotebookCellLinesEvent, eventChanges: NotebookIntervalPointersEventChanges) {
|
||||
when {
|
||||
!e.isIntervalsChanged() -> {
|
||||
@@ -214,7 +221,7 @@ class NotebookIntervalPointerFactoryImpl(private val notebookCellLines: Notebook
|
||||
eventChanges.add(OnEdited(pointers[editedInterval.ordinal], editedInterval, editedInterval))
|
||||
}
|
||||
}
|
||||
e.oldIntervals.size == 1 && e.newIntervals.size == 1 && e.oldIntervals.first().type == e.newIntervals.first().type -> {
|
||||
hasSingleIntervalsWithSameTypeAndLanguage(e.oldIntervals, e.newIntervals) -> {
|
||||
// only one interval changed size
|
||||
for (editedInterval in e.newAffectedIntervals) {
|
||||
val ptr = pointers[editedInterval.ordinal]
|
||||
|
||||
Reference in New Issue
Block a user