@@ -106,10 +106,13 @@ open class EditorHandlerActivity :
106106 private val tabIndexToPluginId = mutableMapOf<Int , String >()
107107
108108 private fun getTabPositionForFileIndex (fileIndex : Int ): Int {
109+ val safeContent = contentOrNull ? : return - 1
110+ val totalTabs = safeContent.tabs.tabCount
111+
109112 if (fileIndex < 0 ) return - 1
110113 var tabPos = 0
111114 var fileCount = 0
112- while (tabPos < content.tabs.tabCount ) {
115+ while (tabPos < totalTabs ) {
113116 if (! isPluginTab(tabPos)) {
114117 if (fileCount == fileIndex) return tabPos
115118 fileCount++
@@ -513,6 +516,8 @@ open class EditorHandlerActivity :
513516 file : File ,
514517 selection : Range ? ,
515518 ): Int {
519+ val safeContent = contentOrNull ? : return - 1
520+ val totalTabs = safeContent.tabs.tabCount
516521 val openedFileIndex = findIndexOfEditorByFile(file)
517522 if (openedFileIndex != - 1 ) {
518523 return openedFileIndex
@@ -524,18 +529,19 @@ open class EditorHandlerActivity :
524529
525530 val fileIndex = editorViewModel.getOpenedFileCount()
526531 val tabPosition = getNextFileTabPosition()
532+ if (tabPosition < 0 ) return - 1
527533
528534 log.info(" Opening file at file index {} tab position {} file:{}" , fileIndex, tabPosition, file)
529535
530536 val editor = CodeEditorView (this , file, selection!! )
531537 editor.layoutParams = LayoutParams (LayoutParams .MATCH_PARENT , LayoutParams .MATCH_PARENT )
532538
533- if (tabPosition >= content.tabs.tabCount ) {
534- content .tabs.addTab(content .tabs.newTab())
535- content .editorContainer.addView(editor)
539+ if (tabPosition >= totalTabs ) {
540+ safeContent .tabs.addTab(safeContent .tabs.newTab())
541+ safeContent .editorContainer.addView(editor)
536542 } else {
537- content .tabs.addTab(content .tabs.newTab(), tabPosition)
538- content .editorContainer.addView(editor, tabPosition)
543+ safeContent .tabs.addTab(safeContent .tabs.newTab(), tabPosition)
544+ safeContent .editorContainer.addView(editor, tabPosition)
539545 shiftPluginIndices(tabPosition, 1 )
540546 }
541547
@@ -548,8 +554,11 @@ open class EditorHandlerActivity :
548554 }
549555
550556 private fun getNextFileTabPosition (): Int {
557+ val safeContent = contentOrNull ? : return - 1
558+ val totalTabs = safeContent.tabs.tabCount
559+
551560 var lastFileTabPos = - 1
552- for (i in 0 until content.tabs.tabCount ) {
561+ for (i in 0 until totalTabs ) {
553562 if (! isPluginTab(i)) {
554563 lastFileTabPos = i
555564 }
@@ -1163,11 +1172,13 @@ open class EditorHandlerActivity :
11631172 }
11641173
11651174 fun isPluginTab (position : Int ): Boolean {
1166- if (position < 0 || position >= content.tabs.tabCount) {
1175+ val safeContent = contentOrNull ? : return false
1176+ val totalTabs = safeContent.tabs.tabCount
1177+
1178+ if (position !in 0 .. < totalTabs) {
11671179 return false
11681180 }
1169- val result = tabIndexToPluginId.containsKey(position)
1170- return result
1181+ return tabIndexToPluginId.containsKey(position)
11711182 }
11721183
11731184 fun getPluginTabId (position : Int ): String? = tabIndexToPluginId[position]
@@ -1179,10 +1190,11 @@ open class EditorHandlerActivity :
11791190 }
11801191
11811192 fun updateTabVisibility () {
1193+ val safeContent = contentOrNull ? : return
11821194 val hasFiles = editorViewModel.getOpenedFileCount() > 0
11831195 val hasPluginTabs = pluginTabIndices.isNotEmpty()
11841196
1185- content .apply {
1197+ safeContent .apply {
11861198 if (! hasFiles && ! hasPluginTabs) {
11871199 tabs.visibility = View .GONE
11881200 viewContainer.displayedChild = 1
0 commit comments