fix: set same rect for correct layout and navigation and set correct selection
This commit is contained in:
parent
c49853e7b4
commit
b155cd9a5a
@ -18,6 +18,7 @@ import android.widget.EditText
|
|||||||
import android.view.accessibility.AccessibilityEvent
|
import android.view.accessibility.AccessibilityEvent
|
||||||
import android.view.ViewGroup.LayoutParams
|
import android.view.ViewGroup.LayoutParams
|
||||||
import android.view.accessibility.AccessibilityNodeInfo
|
import android.view.accessibility.AccessibilityNodeInfo
|
||||||
|
import android.graphics.Rect
|
||||||
import android.accessibilityservice.AccessibilityServiceInfo
|
import android.accessibilityservice.AccessibilityServiceInfo
|
||||||
import android.accessibilityservice.AccessibilityServiceInfo.FLAG_INPUT_METHOD_EDITOR
|
import android.accessibilityservice.AccessibilityServiceInfo.FLAG_INPUT_METHOD_EDITOR
|
||||||
import android.accessibilityservice.AccessibilityServiceInfo.FLAG_RETRIEVE_INTERACTIVE_WINDOWS
|
import android.accessibilityservice.AccessibilityServiceInfo.FLAG_RETRIEVE_INTERACTIVE_WINDOWS
|
||||||
@ -458,6 +459,10 @@ class InputService : AccessibilityService() {
|
|||||||
success = updateTextForAccessibilityNode(node)
|
success = updateTextForAccessibilityNode(node)
|
||||||
} else if (text != null) {
|
} else if (text != null) {
|
||||||
this.fakeEditTextForTextStateCalculation?.setText(text)
|
this.fakeEditTextForTextStateCalculation?.setText(text)
|
||||||
|
this.fakeEditTextForTextStateCalculation?.setSelection(
|
||||||
|
textSelectionStart,
|
||||||
|
textSelectionEnd
|
||||||
|
)
|
||||||
this.fakeEditTextForTextStateCalculation?.text?.insert(textSelectionStart, textToCommit)
|
this.fakeEditTextForTextStateCalculation?.text?.insert(textSelectionStart, textToCommit)
|
||||||
success = updateTextAndSelectionForAccessibiltyNode(node)
|
success = updateTextAndSelectionForAccessibiltyNode(node)
|
||||||
}
|
}
|
||||||
@ -477,6 +482,10 @@ class InputService : AccessibilityService() {
|
|||||||
|
|
||||||
this.fakeEditTextForTextStateCalculation?.let {
|
this.fakeEditTextForTextStateCalculation?.let {
|
||||||
// This is essiential to make sure layout object is created. OnKeyDown may not work if layout is not created.
|
// This is essiential to make sure layout object is created. OnKeyDown may not work if layout is not created.
|
||||||
|
val rect = Rect()
|
||||||
|
node.getBoundsInScreen(rect)
|
||||||
|
|
||||||
|
it.layout(rect.left, rect.top, rect.right, rect.bottom)
|
||||||
it.onPreDraw()
|
it.onPreDraw()
|
||||||
if (event.action == android.view.KeyEvent.ACTION_DOWN) {
|
if (event.action == android.view.KeyEvent.ACTION_DOWN) {
|
||||||
val succ = it.onKeyDown(event.getKeyCode(), event)
|
val succ = it.onKeyDown(event.getKeyCode(), event)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user