Skip to content
This repository has been archived by the owner on Oct 18, 2024. It is now read-only.

Commit

Permalink
fix(editor): do not automatically select first completion item for so…
Browse files Browse the repository at this point in the history
…ft input (fixes #1201)
  • Loading branch information
itsaky committed Nov 14, 2023
1 parent 93bb303 commit 525fa5e
Show file tree
Hide file tree
Showing 3 changed files with 53 additions and 1 deletion.
4 changes: 4 additions & 0 deletions .idea/compiler.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

45 changes: 45 additions & 0 deletions common/src/main/java/com/itsaky/androidide/utils/KeyboardUtils.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
/*
* This file is part of AndroidIDE.
*
* AndroidIDE is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* AndroidIDE is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with AndroidIDE. If not, see <https://www.gnu.org/licenses/>.
*/

package com.itsaky.androidide.utils

import android.content.Context
import android.content.res.Configuration
import android.inputmethodservice.InputMethodService

/**
* @author Akash Yadav
*/
object KeyboardUtils {

/**
* Check if hardware keyboard is connected.
* Based on default implementation of [InputMethodService.onEvaluateInputViewShown].
*
* https://developer.android.com/guide/topics/resources/providing-resources#ImeQualifier
*
* @param context The Context for operations.
* @return Returns `true` if device has hardware keys for text input or an external hardware
* keyboard is connected, otherwise `false`.
*/
fun isHardKeyboardConnected(context: Context?): Boolean {
if (context == null) return false
val config = context.resources.configuration
return (config.keyboard != Configuration.KEYBOARD_NOKEYS
|| config.hardKeyboardHidden == Configuration.HARDKEYBOARDHIDDEN_NO)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ import android.widget.ListView
import com.itsaky.androidide.lsp.util.DocumentationReferenceProvider
import com.itsaky.androidide.progress.ProgressManager
import com.itsaky.androidide.utils.ILogger
import com.itsaky.androidide.utils.KeyboardUtils
import io.github.rosemoe.sora.lang.completion.CompletionItem
import io.github.rosemoe.sora.widget.component.CompletionLayout
import io.github.rosemoe.sora.widget.component.EditorAutoCompletion
Expand Down Expand Up @@ -151,7 +152,9 @@ class EditorCompletionWindow(val editor: IDEEditor) : EditorAutoCompletion(edito
show()
}

if (adapter!!.count >= 1) {
if (adapter!!.count >= 1
&& KeyboardUtils.isHardKeyboardConnected(context)
) {
currentSelection = 0
}
},
Expand Down

0 comments on commit 525fa5e

Please sign in to comment.