final class android.widget.Editor$CursorAnchorInfoNotifier implements android.widget.Editor$TextViewPositionListener
minor version: 0
major version: 59
flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
this_class: android.widget.Editor$CursorAnchorInfoNotifier
super_class: java.lang.Object
{
final android.view.inputmethod.CursorAnchorInfo$Builder mSelectionInfoBuilder;
descriptor: Landroid/view/inputmethod/CursorAnchorInfo$Builder;
flags: (0x0010) ACC_FINAL
final int[] mTmpIntOffset;
descriptor: [I
flags: (0x0010) ACC_FINAL
final android.graphics.Matrix mViewToScreenMatrix;
descriptor: Landroid/graphics/Matrix;
flags: (0x0010) ACC_FINAL
final android.widget.Editor this$0;
descriptor: Landroid/widget/Editor;
flags: (0x1010) ACC_FINAL, ACC_SYNTHETIC
private void <init>(android.widget.Editor);
descriptor: (Landroid/widget/Editor;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=2, args_size=2
start local 0 // android.widget.Editor$CursorAnchorInfoNotifier this
0: .line 4253
aload 0 /* this */
aload 1
putfield android.widget.Editor$CursorAnchorInfoNotifier.this$0:Landroid/widget/Editor;
aload 0 /* this */
invokespecial java.lang.Object.<init>:()V
1: .line 4254
aload 0 /* this */
new android.view.inputmethod.CursorAnchorInfo$Builder
dup
invokespecial android.view.inputmethod.CursorAnchorInfo$Builder.<init>:()V
putfield android.widget.Editor$CursorAnchorInfoNotifier.mSelectionInfoBuilder:Landroid/view/inputmethod/CursorAnchorInfo$Builder;
2: .line 4255
aload 0 /* this */
iconst_2
newarray 10
putfield android.widget.Editor$CursorAnchorInfoNotifier.mTmpIntOffset:[I
3: .line 4256
aload 0 /* this */
new android.graphics.Matrix
dup
invokespecial android.graphics.Matrix.<init>:()V
putfield android.widget.Editor$CursorAnchorInfoNotifier.mViewToScreenMatrix:Landroid/graphics/Matrix;
4: .line 4253
return
end local 0 // android.widget.Editor$CursorAnchorInfoNotifier this
LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Landroid/widget/Editor$CursorAnchorInfoNotifier;
MethodParameters:
Name Flags
this$0 final
public void updatePosition(int, int, boolean, boolean);
descriptor: (IIZZ)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=6, locals=22, args_size=5
start local 0 // android.widget.Editor$CursorAnchorInfoNotifier this
start local 1 // int parentPositionX
start local 2 // int parentPositionY
start local 3 // boolean parentPositionChanged
start local 4 // boolean parentScrolled
0: .line 4261
aload 0 /* this */
getfield android.widget.Editor$CursorAnchorInfoNotifier.this$0:Landroid/widget/Editor;
getfield android.widget.Editor.mInputMethodState:Landroid/widget/Editor$InputMethodState;
astore 5 /* ims */
start local 5 // android.widget.Editor$InputMethodState ims
1: .line 4262
aload 5 /* ims */
ifnull 2
aload 5 /* ims */
getfield android.widget.Editor$InputMethodState.mBatchEditNesting:I
ifle 3
2: .line 4263
StackMap locals: android.widget.Editor$InputMethodState
StackMap stack:
return
3: .line 4265
StackMap locals:
StackMap stack:
invokestatic android.view.inputmethod.InputMethodManager.peekInstance:()Landroid/view/inputmethod/InputMethodManager;
astore 6 /* imm */
start local 6 // android.view.inputmethod.InputMethodManager imm
4: .line 4266
aload 6 /* imm */
ifnonnull 6
5: .line 4267
return
6: .line 4269
StackMap locals: android.view.inputmethod.InputMethodManager
StackMap stack:
aload 6 /* imm */
aload 0 /* this */
getfield android.widget.Editor$CursorAnchorInfoNotifier.this$0:Landroid/widget/Editor;
getfield android.widget.Editor.mTextView:Landroid/widget/TextView;
invokevirtual android.view.inputmethod.InputMethodManager.isActive:(Landroid/view/View;)Z
ifne 8
7: .line 4270
return
8: .line 4273
StackMap locals:
StackMap stack:
aload 6 /* imm */
invokevirtual android.view.inputmethod.InputMethodManager.isCursorAnchorInfoEnabled:()Z
ifne 10
9: .line 4274
return
10: .line 4276
StackMap locals:
StackMap stack:
aload 0 /* this */
getfield android.widget.Editor$CursorAnchorInfoNotifier.this$0:Landroid/widget/Editor;
getfield android.widget.Editor.mTextView:Landroid/widget/TextView;
invokevirtual android.widget.TextView.getLayout:()Landroid/text/Layout;
astore 7 /* layout */
start local 7 // android.text.Layout layout
11: .line 4277
aload 7 /* layout */
ifnonnull 13
12: .line 4278
return
13: .line 4281
StackMap locals: android.text.Layout
StackMap stack:
aload 0 /* this */
getfield android.widget.Editor$CursorAnchorInfoNotifier.mSelectionInfoBuilder:Landroid/view/inputmethod/CursorAnchorInfo$Builder;
astore 8 /* builder */
start local 8 // android.view.inputmethod.CursorAnchorInfo$Builder builder
14: .line 4282
aload 8 /* builder */
invokevirtual android.view.inputmethod.CursorAnchorInfo$Builder.reset:()V
15: .line 4284
aload 0 /* this */
getfield android.widget.Editor$CursorAnchorInfoNotifier.this$0:Landroid/widget/Editor;
getfield android.widget.Editor.mTextView:Landroid/widget/TextView;
invokevirtual android.widget.TextView.getSelectionStart:()I
istore 9 /* selectionStart */
start local 9 // int selectionStart
16: .line 4285
aload 8 /* builder */
iload 9 /* selectionStart */
aload 0 /* this */
getfield android.widget.Editor$CursorAnchorInfoNotifier.this$0:Landroid/widget/Editor;
getfield android.widget.Editor.mTextView:Landroid/widget/TextView;
invokevirtual android.widget.TextView.getSelectionEnd:()I
invokevirtual android.view.inputmethod.CursorAnchorInfo$Builder.setSelectionRange:(II)Landroid/view/inputmethod/CursorAnchorInfo$Builder;
pop
17: .line 4288
aload 0 /* this */
getfield android.widget.Editor$CursorAnchorInfoNotifier.mViewToScreenMatrix:Landroid/graphics/Matrix;
aload 0 /* this */
getfield android.widget.Editor$CursorAnchorInfoNotifier.this$0:Landroid/widget/Editor;
getfield android.widget.Editor.mTextView:Landroid/widget/TextView;
invokevirtual android.widget.TextView.getMatrix:()Landroid/graphics/Matrix;
invokevirtual android.graphics.Matrix.set:(Landroid/graphics/Matrix;)V
18: .line 4289
aload 0 /* this */
getfield android.widget.Editor$CursorAnchorInfoNotifier.this$0:Landroid/widget/Editor;
getfield android.widget.Editor.mTextView:Landroid/widget/TextView;
aload 0 /* this */
getfield android.widget.Editor$CursorAnchorInfoNotifier.mTmpIntOffset:[I
invokevirtual android.widget.TextView.getLocationOnScreen:([I)V
19: .line 4290
aload 0 /* this */
getfield android.widget.Editor$CursorAnchorInfoNotifier.mViewToScreenMatrix:Landroid/graphics/Matrix;
aload 0 /* this */
getfield android.widget.Editor$CursorAnchorInfoNotifier.mTmpIntOffset:[I
iconst_0
iaload
i2f
aload 0 /* this */
getfield android.widget.Editor$CursorAnchorInfoNotifier.mTmpIntOffset:[I
iconst_1
iaload
i2f
invokevirtual android.graphics.Matrix.postTranslate:(FF)Z
pop
20: .line 4291
aload 8 /* builder */
aload 0 /* this */
getfield android.widget.Editor$CursorAnchorInfoNotifier.mViewToScreenMatrix:Landroid/graphics/Matrix;
invokevirtual android.view.inputmethod.CursorAnchorInfo$Builder.setMatrix:(Landroid/graphics/Matrix;)Landroid/view/inputmethod/CursorAnchorInfo$Builder;
pop
21: .line 4294
aload 0 /* this */
getfield android.widget.Editor$CursorAnchorInfoNotifier.this$0:Landroid/widget/Editor;
getfield android.widget.Editor.mTextView:Landroid/widget/TextView;
invokevirtual android.widget.TextView.viewportToContentHorizontalOffset:()I
i2f
22: .line 4293
fstore 10 /* viewportToContentHorizontalOffset */
start local 10 // float viewportToContentHorizontalOffset
23: .line 4296
aload 0 /* this */
getfield android.widget.Editor$CursorAnchorInfoNotifier.this$0:Landroid/widget/Editor;
getfield android.widget.Editor.mTextView:Landroid/widget/TextView;
invokevirtual android.widget.TextView.viewportToContentVerticalOffset:()I
i2f
24: .line 4295
fstore 11 /* viewportToContentVerticalOffset */
start local 11 // float viewportToContentVerticalOffset
25: .line 4298
aload 0 /* this */
getfield android.widget.Editor$CursorAnchorInfoNotifier.this$0:Landroid/widget/Editor;
getfield android.widget.Editor.mTextView:Landroid/widget/TextView;
invokevirtual android.widget.TextView.getText:()Ljava/lang/CharSequence;
astore 12 /* text */
start local 12 // java.lang.CharSequence text
26: .line 4299
aload 12 /* text */
instanceof android.text.Spannable
ifeq 47
27: .line 4300
aload 12 /* text */
checkcast android.text.Spannable
astore 13 /* sp */
start local 13 // android.text.Spannable sp
28: .line 4301
aload 13 /* sp */
invokestatic com.android.internal.widget.EditableInputConnection.getComposingSpanStart:(Landroid/text/Spannable;)I
istore 14 /* composingTextStart */
start local 14 // int composingTextStart
29: .line 4302
aload 13 /* sp */
invokestatic com.android.internal.widget.EditableInputConnection.getComposingSpanEnd:(Landroid/text/Spannable;)I
istore 15 /* composingTextEnd */
start local 15 // int composingTextEnd
30: .line 4303
iload 15 /* composingTextEnd */
iload 14 /* composingTextStart */
if_icmpge 34
31: .line 4304
iload 15 /* composingTextEnd */
istore 16 /* temp */
start local 16 // int temp
32: .line 4305
iload 14 /* composingTextStart */
istore 15 /* composingTextEnd */
33: .line 4306
iload 16 /* temp */
istore 14 /* composingTextStart */
end local 16 // int temp
34: .line 4309
StackMap locals: android.widget.Editor$CursorAnchorInfoNotifier int int int int android.widget.Editor$InputMethodState android.view.inputmethod.InputMethodManager android.text.Layout android.view.inputmethod.CursorAnchorInfo$Builder int float float java.lang.CharSequence android.text.Spannable int int
StackMap stack:
iload 14 /* composingTextStart */
iflt 36
iload 14 /* composingTextStart */
iload 15 /* composingTextEnd */
35: .line 4308
if_icmpge 36
iconst_1
goto 37
StackMap locals:
StackMap stack:
36: iconst_0
StackMap locals:
StackMap stack: int
37: istore 16 /* hasComposingText */
start local 16 // boolean hasComposingText
38: .line 4310
iload 16 /* hasComposingText */
ifeq 47
39: .line 4311
aload 12 /* text */
iload 14 /* composingTextStart */
40: .line 4312
iload 15 /* composingTextEnd */
41: .line 4311
invokeinterface java.lang.CharSequence.subSequence:(II)Ljava/lang/CharSequence;
astore 17 /* composingText */
start local 17 // java.lang.CharSequence composingText
42: .line 4313
aload 8 /* builder */
iload 14 /* composingTextStart */
aload 17 /* composingText */
invokevirtual android.view.inputmethod.CursorAnchorInfo$Builder.setComposingText:(ILjava/lang/CharSequence;)Landroid/view/inputmethod/CursorAnchorInfo$Builder;
pop
43: .line 4314
aload 0 /* this */
getfield android.widget.Editor$CursorAnchorInfoNotifier.this$0:Landroid/widget/Editor;
getfield android.widget.Editor.mTextView:Landroid/widget/TextView;
aload 8 /* builder */
iload 14 /* composingTextStart */
44: .line 4315
iload 15 /* composingTextEnd */
fload 10 /* viewportToContentHorizontalOffset */
45: .line 4316
fload 11 /* viewportToContentVerticalOffset */
46: .line 4314
invokevirtual android.widget.TextView.populateCharacterBounds:(Landroid/view/inputmethod/CursorAnchorInfo$Builder;IIFF)V
end local 17 // java.lang.CharSequence composingText
end local 16 // boolean hasComposingText
end local 15 // int composingTextEnd
end local 14 // int composingTextStart
end local 13 // android.text.Spannable sp
47: .line 4321
StackMap locals:
StackMap stack:
iload 9 /* selectionStart */
iflt 78
48: .line 4322
iload 9 /* selectionStart */
istore 13 /* offset */
start local 13 // int offset
49: .line 4323
aload 7 /* layout */
iload 13 /* offset */
invokevirtual android.text.Layout.getLineForOffset:(I)I
istore 14 /* line */
start local 14 // int line
50: .line 4324
aload 7 /* layout */
iload 13 /* offset */
invokevirtual android.text.Layout.getPrimaryHorizontal:(I)F
51: .line 4325
fload 10 /* viewportToContentHorizontalOffset */
52: .line 4324
fadd
fstore 15 /* insertionMarkerX */
start local 15 // float insertionMarkerX
53: .line 4326
aload 7 /* layout */
iload 14 /* line */
invokevirtual android.text.Layout.getLineTop:(I)I
i2f
54: .line 4327
fload 11 /* viewportToContentVerticalOffset */
55: .line 4326
fadd
fstore 16 /* insertionMarkerTop */
start local 16 // float insertionMarkerTop
56: .line 4328
aload 7 /* layout */
iload 14 /* line */
invokevirtual android.text.Layout.getLineBaseline:(I)I
i2f
57: .line 4329
fload 11 /* viewportToContentVerticalOffset */
58: .line 4328
fadd
fstore 17 /* insertionMarkerBaseline */
start local 17 // float insertionMarkerBaseline
59: .line 4330
aload 7 /* layout */
iload 14 /* line */
invokevirtual android.text.Layout.getLineBottomWithoutSpacing:(I)I
i2f
60: .line 4331
fload 11 /* viewportToContentVerticalOffset */
61: .line 4330
fadd
fstore 18 /* insertionMarkerBottom */
start local 18 // float insertionMarkerBottom
62: .line 4332
aload 0 /* this */
getfield android.widget.Editor$CursorAnchorInfoNotifier.this$0:Landroid/widget/Editor;
getfield android.widget.Editor.mTextView:Landroid/widget/TextView;
63: .line 4333
fload 15 /* insertionMarkerX */
fload 16 /* insertionMarkerTop */
invokevirtual android.widget.TextView.isPositionVisible:(FF)Z
64: .line 4332
istore 19 /* isTopVisible */
start local 19 // boolean isTopVisible
65: .line 4334
aload 0 /* this */
getfield android.widget.Editor$CursorAnchorInfoNotifier.this$0:Landroid/widget/Editor;
getfield android.widget.Editor.mTextView:Landroid/widget/TextView;
66: .line 4335
fload 15 /* insertionMarkerX */
fload 18 /* insertionMarkerBottom */
invokevirtual android.widget.TextView.isPositionVisible:(FF)Z
67: .line 4334
istore 20 /* isBottomVisible */
start local 20 // boolean isBottomVisible
68: .line 4336
iconst_0
istore 21 /* insertionMarkerFlags */
start local 21 // int insertionMarkerFlags
69: .line 4337
iload 19 /* isTopVisible */
ifne 70
iload 20 /* isBottomVisible */
ifeq 71
70: .line 4338
StackMap locals: android.widget.Editor$CursorAnchorInfoNotifier int int int int android.widget.Editor$InputMethodState android.view.inputmethod.InputMethodManager android.text.Layout android.view.inputmethod.CursorAnchorInfo$Builder int float float java.lang.CharSequence int int float float float float int int int
StackMap stack:
iload 21 /* insertionMarkerFlags */
iconst_1
ior
istore 21 /* insertionMarkerFlags */
71: .line 4340
StackMap locals:
StackMap stack:
iload 19 /* isTopVisible */
ifeq 72
iload 20 /* isBottomVisible */
ifne 73
72: .line 4341
StackMap locals:
StackMap stack:
iload 21 /* insertionMarkerFlags */
iconst_2
ior
istore 21 /* insertionMarkerFlags */
73: .line 4343
StackMap locals:
StackMap stack:
aload 7 /* layout */
iload 13 /* offset */
invokevirtual android.text.Layout.isRtlCharAt:(I)Z
ifeq 75
74: .line 4344
iload 21 /* insertionMarkerFlags */
iconst_4
ior
istore 21 /* insertionMarkerFlags */
75: .line 4346
StackMap locals:
StackMap stack:
aload 8 /* builder */
fload 15 /* insertionMarkerX */
fload 16 /* insertionMarkerTop */
76: .line 4347
fload 17 /* insertionMarkerBaseline */
fload 18 /* insertionMarkerBottom */
iload 21 /* insertionMarkerFlags */
77: .line 4346
invokevirtual android.view.inputmethod.CursorAnchorInfo$Builder.setInsertionMarkerLocation:(FFFFI)Landroid/view/inputmethod/CursorAnchorInfo$Builder;
pop
end local 21 // int insertionMarkerFlags
end local 20 // boolean isBottomVisible
end local 19 // boolean isTopVisible
end local 18 // float insertionMarkerBottom
end local 17 // float insertionMarkerBaseline
end local 16 // float insertionMarkerTop
end local 15 // float insertionMarkerX
end local 14 // int line
end local 13 // int offset
78: .line 4350
StackMap locals: android.widget.Editor$CursorAnchorInfoNotifier int int int int android.widget.Editor$InputMethodState android.view.inputmethod.InputMethodManager android.text.Layout android.view.inputmethod.CursorAnchorInfo$Builder int float float java.lang.CharSequence
StackMap stack:
aload 6 /* imm */
aload 0 /* this */
getfield android.widget.Editor$CursorAnchorInfoNotifier.this$0:Landroid/widget/Editor;
getfield android.widget.Editor.mTextView:Landroid/widget/TextView;
aload 8 /* builder */
invokevirtual android.view.inputmethod.CursorAnchorInfo$Builder.build:()Landroid/view/inputmethod/CursorAnchorInfo;
invokevirtual android.view.inputmethod.InputMethodManager.updateCursorAnchorInfo:(Landroid/view/View;Landroid/view/inputmethod/CursorAnchorInfo;)V
79: .line 4351
return
end local 12 // java.lang.CharSequence text
end local 11 // float viewportToContentVerticalOffset
end local 10 // float viewportToContentHorizontalOffset
end local 9 // int selectionStart
end local 8 // android.view.inputmethod.CursorAnchorInfo$Builder builder
end local 7 // android.text.Layout layout
end local 6 // android.view.inputmethod.InputMethodManager imm
end local 5 // android.widget.Editor$InputMethodState ims
end local 4 // boolean parentScrolled
end local 3 // boolean parentPositionChanged
end local 2 // int parentPositionY
end local 1 // int parentPositionX
end local 0 // android.widget.Editor$CursorAnchorInfoNotifier this
LocalVariableTable:
Start End Slot Name Signature
0 80 0 this Landroid/widget/Editor$CursorAnchorInfoNotifier;
0 80 1 parentPositionX I
0 80 2 parentPositionY I
0 80 3 parentPositionChanged Z
0 80 4 parentScrolled Z
1 80 5 ims Landroid/widget/Editor$InputMethodState;
4 80 6 imm Landroid/view/inputmethod/InputMethodManager;
11 80 7 layout Landroid/text/Layout;
14 80 8 builder Landroid/view/inputmethod/CursorAnchorInfo$Builder;
16 80 9 selectionStart I
23 80 10 viewportToContentHorizontalOffset F
25 80 11 viewportToContentVerticalOffset F
26 80 12 text Ljava/lang/CharSequence;
28 47 13 sp Landroid/text/Spannable;
29 47 14 composingTextStart I
30 47 15 composingTextEnd I
32 34 16 temp I
38 47 16 hasComposingText Z
42 47 17 composingText Ljava/lang/CharSequence;
49 78 13 offset I
50 78 14 line I
53 78 15 insertionMarkerX F
56 78 16 insertionMarkerTop F
59 78 17 insertionMarkerBaseline F
62 78 18 insertionMarkerBottom F
65 78 19 isTopVisible Z
68 78 20 isBottomVisible Z
69 78 21 insertionMarkerFlags I
MethodParameters:
Name Flags
parentPositionX
parentPositionY
parentPositionChanged
parentScrolled
}
SourceFile: "Editor.java"
NestHost: android.widget.Editor
InnerClasses:
public final Builder = android.view.inputmethod.CursorAnchorInfo$Builder of android.view.inputmethod.CursorAnchorInfo
private final CursorAnchorInfoNotifier = android.widget.Editor$CursorAnchorInfoNotifier of android.widget.Editor
InputMethodState = android.widget.Editor$InputMethodState of android.widget.Editor
private abstract TextViewPositionListener = android.widget.Editor$TextViewPositionListener of android.widget.Editor