mirror of
https://gitee.com/zhangsken/AndroidIDE.git
synced 2026-10-16 07:49:44 +08:00
fix(editor): do not automatically select first completion item for soft input (fixes #1201)
This commit is contained in:
Generated
+4
@@ -131,6 +131,10 @@
|
||||
<module name="AndroidIDE.templates-testing" target="17" />
|
||||
<module name="AndroidIDE.templates-testing.main" target="11" />
|
||||
<module name="AndroidIDE.templates-testing.test" target="11" />
|
||||
<module name="AndroidIDE.termux.termux-app" target="17" />
|
||||
<module name="AndroidIDE.termux.termux-emulator" target="17" />
|
||||
<module name="AndroidIDE.termux.termux-shared" target="17" />
|
||||
<module name="AndroidIDE.termux.termux-view" target="17" />
|
||||
<module name="AndroidIDE.testing-android" target="17" />
|
||||
<module name="AndroidIDE.testing.android.test" target="11" />
|
||||
<module name="AndroidIDE.testing.common" target="11" />
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
@@ -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
|
||||
}
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user