Wizard
Posts: 2,805
Karma: 7423683
Join Date: May 2016
Location: Ontario, Canada
Device: Kobo Mini, Aura Edition 2 v1, Clara HD
|
Quote:
Originally Posted by geek1011
Regardless, assuming this does work, it's more than a patch can do easily, but it should be possible to easily and safely hook whatever handles pressing a word in the mini-popup and redirect it to whatever triggers displaying the mini-popup for a selected word using NickelHook.
|
Okay, yeah, it's definitely a thing in 21908:
Spoiler:
Code:
_ZN20InlineDictionaryView14onWordSelectedEv: // InlineDictionaryView::onWordSelected()
00d0b85c B0B5 push {r4, r5, r7, lr}
00d0b85e 82B0 sub sp, #0x8
00d0b860 016F ldr r1, [r0, #0x70]
00d0b862 00AF add r7, sp, #0x0
00d0b864 0546 mov r5, r0
00d0b866 3C1D adds r4, r7, #0x4
00d0b868 0B68 ldr r3, [r1]
00d0b86a 2046 mov r0, r4
00d0b86c D3F81831 ldr.w r3, [r3, #0x118]
00d0b870 9847 blx r3
00d0b872 2146 mov r1, r4
00d0b874 2846 mov r0, r5
00d0b876 88F532E7 blx _ZN20InlineDictionaryView24showDefinitionInFullViewERK7QString@PLT ; InlineDictionaryView::showDefinitionInFullView(QString const&)
00d0b87a 7868 ldr r0, [r7, #0x4]
00d0b87c 0368 ldr r3, [r0]
00d0b87e 33B9 cbnz r3, loc_d0b88e
Code:
_ZN20InlineDictionaryView24showDefinitionInFullViewERK7QString: // InlineDictionaryView::showDefinitionInFullView(QString const&)
00d0b838 80B4 push r7
00d0b83a 2C30 adds r0, #0x2c
00d0b83c 00AF add r7, sp, #0x0
00d0b83e BD46 mov sp, r7
00d0b840 5DF8047B ldr r7, [sp, saved_fp], #0x4
00d0b844 7FF564B6 b.w sub_68b510 ; sub_68b510
; endp
Code:
sub_68b510:
0068b510 7847 bx pc ; _ZN16DictionaryOpener4openERK10DictionaryRK7QString@PLT, CODE XREF=_ZN20InlineDictionaryView24showDefinitionInFullViewERK7QString+12
; endp
; ================ B E G I N N I N G O F P R O C E D U R E ================
sub_68b512:
0068b512 C046 mov r8, r8
; endp
; ================ B E G I N N I N G O F P R O C E D U R E ================
_ZN16DictionaryOpener4openERK10DictionaryRK7QString@PLT: // DictionaryOpener::open(Dictionary const&, QString const&)
0068b514 10C68FE2 add ip, pc, #0x10, #0xc ; _ZN16BluetoothManager8setAliasERK7QStringS2_@GOT, CODE XREF=sub_68b510, _ZN16DictionaryOpener13openForVolumeERK6Volume+120
0068b518 04CA8CE2 add ip, ip, #0x4, #0x14 ; _ZNK13QTextDocument14documentLayoutEv@GOT
0068b51c D4F1BCE5 ldr pc, [ip, #0x1d4]! ; Jumps to 0xd07711 (_ZN16DictionaryOpener4openERK10DictionaryRK7QString + 0x1), 0xd07711,_ZN16DictionaryOpener4openERK10DictionaryRK7QString@GOT
; endp
Code:
_ZN19SelectionController13getDefinitionEv: // SelectionController::getDefinition()
00f7cfd0 2DE9F04F push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}
00f7cfd4 AFB0 sub sp, #0xbc
00f7cfd6 8169 ldr r1, [r0, #0x18]
00f7cfd8 06AF add r7, sp, #0x18
00f7cfda 0446 mov r4, r0
00f7cfdc 07F15806 add.w r6, r7, #0x58
00f7cfe0 DFF85C84 ldr.w r8, =0x702d32 ; 0x702d32,dword_f7d440
00f7cfe4 0B68 ldr r3, [r1]
00f7cfe6 3046 mov r0, r6
00f7cfe8 3D1D adds r5, r7, #0x4
00f7cfea F844 add r8, pc ; dword_167fd20
00f7cfec DB6B ldr r3, [r3, #0x3c]
00f7cfee 9847 blx r3
00f7cff0 3146 mov r1, r6
00f7cff2 2846 mov r0, r5
00f7cff4 17F7F6CB blx _ZNK7QString10simplifiedEv@PLT ; QString::simplified() const
00f7cff8 B86D ldr r0, [r7, #0x58]
00f7cffa 0368 ldr r3, [r0]
00f7cffc E3B9 cbnz r3, loc_f7d038
loc_f7cffe:
00f7cffe 0422 movs r2, #0x4 ; CODE XREF=_ZN19SelectionController13getDefinitionEv+132
00f7d000 0221 movs r1, #0x2
00f7d002 F4F65ECA blx _ZN10QArrayData10deallocateEPS_jj@PLT ; QArrayData::deallocate(QArrayData*, unsigned int, unsigned int)
loc_f7d006:
00f7d006 E36E ldr r3, [r4, #0x6c] ; CODE XREF=_ZN19SelectionController13getDefinitionEv+106, _ZN19SelectionController13getDefinitionEv+128
00f7d008 002B cmp r3, #0x0
00f7d00a 33D0 beq loc_f7d074
00f7d00c 5B68 ldr r3, [r3, #0x4]
00f7d00e 002B cmp r3, #0x0
00f7d010 30D0 beq loc_f7d074
00f7d012 206F ldr r0, [r4, #0x70]
00f7d014 0028 cmp r0, #0x0
00f7d016 2DD0 beq loc_f7d074
loc_f7d018:
00f7d018 0368 ldr r3, [r0] ; CODE XREF=_ZN19SelectionController13getDefinitionEv+1018, _ZN19SelectionController13getDefinitionEv+1026, _ZN19SelectionController13getDefinitionEv+1032
00f7d01a 2946 mov r1, r5
00f7d01c D3F8D030 ldr.w r3, [r3, #0xd0]
00f7d020 9847 blx r3
00f7d022 7868 ldr r0, [r7, #0x4]
00f7d024 0368 ldr r3, [r0]
00f7d026 B3B9 cbnz r3, loc_f7d056
loc_f7d028:
00f7d028 0422 movs r2, #0x4 ; CODE XREF=_ZN19SelectionController13getDefinitionEv+162
00f7d02a 0221 movs r1, #0x2
00f7d02c F4F648CA blx _ZN10QArrayData10deallocateEPS_jj@PLT ; QArrayData::deallocate(QArrayData*, unsigned int, unsigned int)
loc_f7d030:
00f7d030 A437 adds r7, #0xa4 ; CODE XREF=_ZN19SelectionController13getDefinitionEv+136, _ZN19SelectionController13getDefinitionEv+158
00f7d032 BD46 mov sp, r7
00f7d034 BDE8F08F pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}
; endp
loc_f7d038:
00f7d038 0133 adds r3, #0x1 ; CODE XREF=_ZN19SelectionController13getDefinitionEv+44
00f7d03a E4D0 beq loc_f7d006
loc_f7d03c:
00f7d03c 50E8003F ldrex r3, [r0] ; CODE XREF=_ZN19SelectionController13getDefinitionEv+124
00f7d040 A3F10103 sub.w r3, r3, #0x1
00f7d044 40E80032 strex r2, r3, [r0]
00f7d048 92F0000F teq.w r2, #0x0
00f7d04c F6D1 bne loc_f7d03c
00f7d04e 002B cmp r3, #0x0
00f7d050 D9D1 bne loc_f7d006
00f7d052 B86D ldr r0, [r7, #0x58]
00f7d054 D3E7 b loc_f7cffe
loc_f7d056:
00f7d056 0133 adds r3, #0x1 ; CODE XREF=_ZN19SelectionController13getDefinitionEv+86
00f7d058 EAD0 beq loc_f7d030
loc_f7d05a:
00f7d05a 50E8003F ldrex r3, [r0] ; CODE XREF=_ZN19SelectionController13getDefinitionEv+154
00f7d05e A3F10103 sub.w r3, r3, #0x1
00f7d062 40E80032 strex r2, r3, [r0]
00f7d066 92F0000F teq.w r2, #0x0
00f7d06a F6D1 bne loc_f7d05a
00f7d06c 002B cmp r3, #0x0
00f7d06e DFD1 bne loc_f7d030
00f7d070 7868 ldr r0, [r7, #0x4]
00f7d072 D9E7 b loc_f7d028
loc_f7d074:
00f7d074 606A ldr r0, [r4, #0x24] ; CODE XREF=_ZN19SelectionController13getDefinitionEv+58, _ZN19SelectionController13getDefinitionEv+64, _ZN19SelectionController13getDefinitionEv+70
00f7d076 E6F6F6C8 blx _ZNK11ReadingView9getVolumeEv@PLT ; ReadingView::getVolume() const
00f7d07a F24B ldr r3, =0x1caf8 ; 0x1caf8,dword_f7d444
00f7d07c 8346 mov fp, r0
00f7d07e 626A ldr r2, [r4, #0x24]
00f7d080 58F80330 ldr.w r3, [r8, r3]
00f7d084 D2F87090 ldr.w sb, [r2, #0x70]
00f7d088 0833 adds r3, #0x8
00f7d08a BB65 str r3, [r7, #0x58]
00f7d08c D9F85430 ldr.w r3, [sb, #0x54]
00f7d090 1A68 ldr r2, [r3]
00f7d092 FB65 str r3, [r7, #0x5c]
00f7d094 0132 adds r2, #0x1
00f7d096 012A cmp r2, #0x1
00f7d098 08D9 bls loc_f7d0ac
loc_f7d09a:
00f7d09a 53E8002F ldrex r2, [r3] ; CODE XREF=_ZN19SelectionController13getDefinitionEv+218
00f7d09e 02F10102 add.w r2, r2, #0x1
00f7d0a2 43E80021 strex r1, r2, [r3]
00f7d0a6 91F0000F teq.w r1, #0x0
00f7d0aa F6D1 bne loc_f7d09a
loc_f7d0ac:
00f7d0ac D9F85830 ldr.w r3, [sb, #0x58] ; CODE XREF=_ZN19SelectionController13getDefinitionEv+200
00f7d0b0 07F1640A add.w sl, r7, #0x64
00f7d0b4 5046 mov r0, sl
00f7d0b6 09F15C01 add.w r1, sb, #0x5c
00f7d0ba 3B66 str r3, [r7, #0x60]
00f7d0bc FDF6F0C8 blx _ZN9QDateTimeC1ERKS_@PLT ; QDateTime::QDateTime(QDateTime const&)
00f7d0c0 D9F86030 ldr.w r3, [sb, #0x60]
00f7d0c4 1A68 ldr r2, [r3]
00f7d0c6 BB66 str r3, [r7, #0x68]
00f7d0c8 0132 adds r2, #0x1
00f7d0ca 012A cmp r2, #0x1
00f7d0cc 08D9 bls loc_f7d0e0
loc_f7d0ce:
00f7d0ce 53E8002F ldrex r2, [r3] ; CODE XREF=_ZN19SelectionController13getDefinitionEv+270
00f7d0d2 02F10102 add.w r2, r2, #0x1
00f7d0d6 43E80021 strex r1, r2, [r3]
00f7d0da 91F0000F teq.w r1, #0x0
00f7d0de F6D1 bne loc_f7d0ce
loc_f7d0e0:
00f7d0e0 D9F86420 ldr.w r2, [sb, #0x64] ; CODE XREF=_ZN19SelectionController13getDefinitionEv+252
00f7d0e4 D9F86830 ldr.w r3, [sb, #0x68]
00f7d0e8 FA66 str r2, [r7, #0x6c]
00f7d0ea 1A68 ldr r2, [r3]
00f7d0ec 3B67 str r3, [r7, #0x70]
00f7d0ee 0132 adds r2, #0x1
00f7d0f0 012A cmp r2, #0x1 ; DATA XREF=_ZN13PixmapSurface4initERK7QStringiib+1080, dword_728f90
00f7d0f2 08D9 bls loc_f7d106
loc_f7d0f4:
00f7d0f4 53E8002F ldrex r2, [r3] ; CODE XREF=_ZN19SelectionController13getDefinitionEv+308
00f7d0f8 02F10102 add.w r2, r2, #0x1
00f7d0fc 43E80021 strex r1, r2, [r3]
00f7d100 91F0000F teq.w r1, #0x0
00f7d104 F6D1 bne loc_f7d0f4
loc_f7d106:
00f7d106 D9ED1C0B vldr d16, [sb, #0x70] ; CODE XREF=_ZN19SelectionController13getDefinitionEv+290
00f7d10a 09F18001 add.w r1, sb, #0x80
00f7d10e D9F87820 ldr.w r2, [sb, #0x78]
00f7d112 07F18800 add.w r0, r7, #0x88
00f7d116 D9F87C30 ldr.w r3, [sb, #0x7c]
00f7d11a C7ED1E0B vstr d16, [r7, #0x78]
00f7d11e C7F88020 str.w r2, [r7, #0x80]
00f7d122 C7F88430 str.w r3, [r7, #0x84]
00f7d126 24F77ECD blx _ZN5QListI7QStringEC2ERKS1_@PLT ; QList<QString>::QList(QList<QString> const&)
00f7d12a D9F88420 ldr.w r2, [sb, #0x84]
00f7d12e D9F88830 ldr.w r3, [sb, #0x88]
00f7d132 C7F88C20 str.w r2, [r7, #0x8c]
00f7d136 1A68 ldr r2, [r3]
00f7d138 C7F89030 str.w r3, [r7, #0x90]
00f7d13c 0132 adds r2, #0x1
00f7d13e 012A cmp r2, #0x1
00f7d140 08D9 bls loc_f7d154
loc_f7d142:
00f7d142 53E8002F ldrex r2, [r3] ; CODE XREF=_ZN19SelectionController13getDefinitionEv+386
00f7d146 02F10102 add.w r2, r2, #0x1
00f7d14a 43E80021 strex r1, r2, [r3]
00f7d14e 91F0000F teq.w r1, #0x0
00f7d152 F6D1 bne loc_f7d142
loc_f7d154:
00f7d154 D9F88C30 ldr.w r3, [sb, #0x8c] ; CODE XREF=_ZN19SelectionController13getDefinitionEv+368, DATA XREF=_ZN12LibKmodMixin6insertERK7QStringS2_RK11QStringList+6
00f7d158 1A68 ldr r2, [r3]
00f7d15a C7F89430 str.w r3, [r7, #0x94]
00f7d15e 0132 adds r2, #0x1
00f7d160 012A cmp r2, #0x1
00f7d162 08D9 bls loc_f7d176
loc_f7d164:
00f7d164 53E8002F ldrex r2, [r3] ; CODE XREF=_ZN19SelectionController13getDefinitionEv+420
00f7d168 02F10102 add.w r2, r2, #0x1
00f7d16c 43E80021 strex r1, r2, [r3]
00f7d170 91F0000F teq.w r1, #0x0
00f7d174 F6D1 bne loc_f7d164
loc_f7d176:
00f7d176 99F89020 ldrb.w r2, [sb, #0x90] ; CODE XREF=_ZN19SelectionController13getDefinitionEv+402
00f7d17a C420 movs r0, #0xc4
00f7d17c 99F89130 ldrb.w r3, [sb, #0x91]
00f7d180 87F89820 strb.w r2, [r7, #0x98]
00f7d184 87F89930 strb.w r3, [r7, #0x99]
00f7d188 ECF67ACD blx _Znwj@PLT ; operator new(unsigned int)
00f7d18c 5946 mov r1, fp
00f7d18e 636A ldr r3, [r4, #0x24]
00f7d190 3246 mov r2, r6
00f7d192 8246 mov sl, r0
00f7d194 18F714C8 blx _ZN20InlineDictionaryViewC1ERK6VolumeRK15ContentSettingsP7QWidget@PLT ; InlineDictionaryView::InlineDictionaryView(Volume const&, ContentSettings const&, QWidget*)
00f7d198 5046 mov r0, sl
00f7d19a ECF6A4CE blx _ZN15QtSharedPointer20ExternalRefCountData9getAndRefEPK7QObject@PLT ; QtSharedPointer::ExternalRefCountData::getAndRef(QObject const*)
00f7d19e E36E ldr r3, [r4, #0x6c]
00f7d1a0 8146 mov sb, r0
00f7d1a2 8342 cmp r3, r0
00f7d1a4 1DD0 beq loc_f7d1e2
Code:
_ZN19SelectionController13showSelectionEv: // SelectionController::showSelection()
00f7d478 C36E ldr r3, [r0, #0x6c]
00f7d47a B0B5 push {r4, r5, r7, lr}
00f7d47c 0446 mov r4, r0
00f7d47e 00AF add r7, sp, #0x0
00f7d480 33B1 cbz r3, loc_f7d490
00f7d482 5B68 ldr r3, [r3, #0x4]
00f7d484 23B1 cbz r3, loc_f7d490
00f7d486 056F ldr r5, [r0, #0x70]
00f7d488 DEF646CB blx _ZN19SelectionController12setupHandlesEv@PLT ; SelectionController::setupHandles()
00f7d48c 1DB1 cbz r5, loc_f7d496
00f7d48e B0BD pop {r4, r5, r7, pc}
; endp
loc_f7d490:
00f7d490 2046 mov r0, r4 ; CODE XREF=_ZN19SelectionController13showSelectionEv+8, _ZN19SelectionController13showSelectionEv+12
00f7d492 DEF642CB blx _ZN19SelectionController12setupHandlesEv@PLT ; SelectionController::setupHandles()
loc_f7d496:
00f7d496 2046 mov r0, r4 ; CODE XREF=_ZN19SelectionController13showSelectionEv+20
00f7d498 BD46 mov sp, r7
00f7d49a BDE8B040 pop.w {r4, r5, r7, lr}
00f7d49e 27F7979E b.w sub_6a51d0 ; sub_6a51d0
; endp
|