From cc0263f865aaefe8ed05d3fc37728416baff2796 Mon Sep 17 00:00:00 2001 From: Oluwadara Abijo Date: Wed, 29 Jul 2026 18:44:41 +0100 Subject: [PATCH 1/3] feat(ADFA-4922): Disable text actions during search --- .../androidide/editor/ui/EditorActionsMenu.kt | 49 ++++++++++++------- .../rosemoe/sora/widget/IDEEditorSearcher.kt | 13 +++++ 2 files changed, 45 insertions(+), 17 deletions(-) diff --git a/editor/src/main/java/com/itsaky/androidide/editor/ui/EditorActionsMenu.kt b/editor/src/main/java/com/itsaky/androidide/editor/ui/EditorActionsMenu.kt index 12e08c012f..593e5f9317 100644 --- a/editor/src/main/java/com/itsaky/androidide/editor/ui/EditorActionsMenu.kt +++ b/editor/src/main/java/com/itsaky/androidide/editor/ui/EditorActionsMenu.kt @@ -152,33 +152,43 @@ open class EditorActionsMenu( getInstance().unregisterActionExecListener(this) } + private fun shouldSuppressActionsMenu(): Boolean { + val searcher = editor.searcher + return searcher.isSearching || searcher.hasQuery() + } + protected open fun onSelectionChanged(event: SelectionChangeEvent) { - if (touchHandler.hasAnyHeldHandle()) { + if (touchHandler.hasAnyHeldHandle()) return + + if (shouldSuppressActionsMenu()) { + dismiss() return } + if (event.isSelected) { editor.post { displayWindow(isShowing) } mLastPosition = -1 - } else { - var show = false - if ( - event.cause == SelectionChangeEvent.CAUSE_TAP && + return + } + + val shouldShow = + event.cause == SelectionChangeEvent.CAUSE_TAP && event.left.index == mLastPosition && !isShowing && !editor.text.isInBatchEdit - ) { - editor.post(::displayWindow) - show = true + + if (shouldShow) { + editor.post(::displayWindow) + } else { + dismiss() + } + + mLastPosition = + if (event.cause == SelectionChangeEvent.CAUSE_TAP && !shouldShow) { + event.left.index } else { - dismiss() + -1 } - mLastPosition = - if (event.cause == SelectionChangeEvent.CAUSE_TAP && !show) { - event.left.index - } else { - -1 - } - } } protected open fun onScrollEvent() { @@ -209,7 +219,7 @@ open class EditorActionsMenu( return } dismiss() - if (!editor.cursor.isSelected) { + if (!editor.cursor.isSelected || shouldSuppressActionsMenu()) { return } editor.postDelayed( @@ -243,6 +253,11 @@ open class EditorActionsMenu( @JvmOverloads open fun displayWindow(update: Boolean = false) { + if (shouldSuppressActionsMenu()) { + dismiss() + + return + } var top: Int val cursor = editor.cursor top = diff --git a/editor/src/main/java/io/github/rosemoe/sora/widget/IDEEditorSearcher.kt b/editor/src/main/java/io/github/rosemoe/sora/widget/IDEEditorSearcher.kt index 55ddd28b47..627b8da76d 100644 --- a/editor/src/main/java/io/github/rosemoe/sora/widget/IDEEditorSearcher.kt +++ b/editor/src/main/java/io/github/rosemoe/sora/widget/IDEEditorSearcher.kt @@ -45,6 +45,18 @@ open class IDEEditorSearcher( this.searchOptions = searchOptions } + override fun search( + query: String, + searchOptions: SearchOptions, + ) { + if (query.isNotEmpty()) { + markSearching() + } else { + isSearching = false + } + super.search(query, searchOptions) + } + override fun replaceAll( replacement: String, whenFinished: Runnable?, @@ -75,6 +87,7 @@ open class IDEEditorSearcher( fun onClose() { isSearching = false + stopSearch() } private fun markSearching() { From aefaab317e79f2462d34e9da6d66a6ce258cbe64 Mon Sep 17 00:00:00 2001 From: Oluwadara Abijo Date: Fri, 31 Jul 2026 11:47:03 +0100 Subject: [PATCH 2/3] refactor(ADFA-4922): Reorder checks --- .../java/com/itsaky/androidide/editor/ui/EditorActionsMenu.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/editor/src/main/java/com/itsaky/androidide/editor/ui/EditorActionsMenu.kt b/editor/src/main/java/com/itsaky/androidide/editor/ui/EditorActionsMenu.kt index 593e5f9317..3f60591ce5 100644 --- a/editor/src/main/java/com/itsaky/androidide/editor/ui/EditorActionsMenu.kt +++ b/editor/src/main/java/com/itsaky/androidide/editor/ui/EditorActionsMenu.kt @@ -158,13 +158,13 @@ open class EditorActionsMenu( } protected open fun onSelectionChanged(event: SelectionChangeEvent) { - if (touchHandler.hasAnyHeldHandle()) return - if (shouldSuppressActionsMenu()) { dismiss() return } + if (touchHandler.hasAnyHeldHandle()) return + if (event.isSelected) { editor.post { displayWindow(isShowing) } mLastPosition = -1 From 4bf5cd7e6c1cf6d731d201823de139683d794759 Mon Sep 17 00:00:00 2001 From: Oluwadara Abijo Date: Fri, 31 Jul 2026 11:51:33 +0100 Subject: [PATCH 3/3] format(ADFA-4922): Apply spotless --- .../java/com/itsaky/androidide/editor/ui/EditorActionsMenu.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/editor/src/main/java/com/itsaky/androidide/editor/ui/EditorActionsMenu.kt b/editor/src/main/java/com/itsaky/androidide/editor/ui/EditorActionsMenu.kt index 3f60591ce5..715de8484e 100644 --- a/editor/src/main/java/com/itsaky/androidide/editor/ui/EditorActionsMenu.kt +++ b/editor/src/main/java/com/itsaky/androidide/editor/ui/EditorActionsMenu.kt @@ -163,7 +163,7 @@ open class EditorActionsMenu( return } - if (touchHandler.hasAnyHeldHandle()) return + if (touchHandler.hasAnyHeldHandle()) return if (event.isSelected) { editor.post { displayWindow(isShowing) }