View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0035682 | Lazarus | Packages | public | 2019-06-07 11:51 | 2019-06-11 13:32 |
Reporter | Alexey Tor. | Assigned To | Martin Friebe | ||
Priority | normal | Severity | minor | Reproducibility | always |
Status | resolved | Resolution | not fixable | ||
Product Version | 2.1 (SVN) | Product Build | |||
Target Version | Fixed in Version | 2.0.4 | |||
Summary | 0035682: SynEdit: Win10 Emoji popup position is wrong | ||||
Description | Win10 has added the Emoji dialog by hotkey Windows+dot. Since 2017. SynEdit shows it at random pos, while it must be like IME dialog, near the caret. Stackoverflow user: the function to set position, is probably ImmSetCandidateWindow | ||||
Tags | No tags attached. | ||||
Fixed in Revision | 61340 | ||||
LazTarget | 2.0.4 | ||||
Widgetset | |||||
Attached Files |
|
|
Please test and close if ok |
|
Not fully fixed - Place caret, call Emoji dlg first time - position is ok - move caret (using mouse click), call Emoji dlg - position is _old_ |
|
Not sure how to reproduce. Is that reproducible in - The IDE - A SynEdit in a projcet - With full IME - With basic IME (Option "IME handled by System") In the IDE (with full IME / the original Issue was about full IME) I tried all of the following - Open the IME (Windows Key + ; ) => Position OK - Move caret by mouse (while IME is open (ideally IDE would close IME, but it does not) - (Re-)Open the IME (Windows Key + ; ) => Position OK The IME close when pressing the windows key, and re-opens when pressing ";" - Open the IME (Windows Key + ; ) => Position OK - escape to close IME - Move caret by mouse (while IME is open (ideally IDE would close IME, but it does not) - (Re-)Open the IME (Windows Key + ; ) => Position OK - Open the IME (Windows Key + ; ) => Position OK - type "heart" + return - close IME with mouse / "X" button in IME - Move caret by mouse (while IME is open (ideally IDE would close IME, but it does not) - (Re-)Open the IME (Windows Key + ; ) => Position OK -- The Windows + ; is owed to my custom "dovrak+uk punctuation". -- Also: Do you use some sort of remote access to your Win system? |
|
I use Win10 Pro Russian. with installed Japanese input. Work in the IDE source editor. I click 1st pos, call Windows+dot dialog, pos OK. I close dlg. Moved caret, call Windows+dot again, pos is _old_ (from 1st dialog call). Close dlg. Next caret move, call Windows+dot, pos id old. I didnot change "option of full IME". |
|
Win10 build 1903. |
|
Please compile the IDE with -dWinIMEDebug -dVerboseKeys -dSynMouseEvents Start the IDE with --debug-log=c:\yourlogfile.txt Before you open the IME the first time, enter START (so I can find the logged keys) After you open (and close) the IME the 2nd time, enter END Please attach the log. --- It may be something with the latest Win 1903. I am on a deferred update cycle. If that is the case it may take a while until I get the error. |
|
Interesting: I can reproduce the issue you have in LibreOffice. Do you have that, can you test? Also there a cases (both SynEdit and L.O.) where the IME does not close, when using the taskbar to activate another window. |
|
Here is log. debug.log (5,315 bytes) |
|
You opened 3 times? ######## SSMETA UP => IME OPEN [TCustomSynEdit.KeyUp] 91 Shift=False Ctrl=False Alt=False ####### x pos (in chars) = 23 / in pixel 514 --- TCustomSynEdit.WMImeRequest ** IMR_QUERYCHARPOSITION 0 23 514 --- TCustomSynEdit.WMImeRequest ** IMR_QUERYCHARPOSITION 0 23 514 --- TCustomSynEdit.WMImeRequest ** IMR_QUERYCHARPOSITION 0 23 514 TCustomSynEdit.WMImeNotify IMN_CLOSECANDIDATE, 1 , 4 --- TCustomSynEdit.WMImeRequest ** IMR_QUERYCHARPOSITION 0 23 514 --- TCustomSynEdit.WMImeRequest ** IMR_QUERYCHARPOSITION 0 23 514 ######## ESCAPE [TCustomSynEdit.KeyUp] 27 Shift=False Ctrl=False Alt=False ######## SSMETA [TCustomSynEdit.KeyDown] 91 [ssMeta] --- TCustomSynEdit.WMImeRequest ** IMR_QUERYCHARPOSITION 0 32 586 --- TCustomSynEdit.WMImeRequest ** IMR_QUERYCHARPOSITION 0 32 586 --- TCustomSynEdit.WMImeRequest ** IMR_QUERYCHARPOSITION 0 32 586 [TCustomSynEdit.KeyUp] 190 Shift=False Ctrl=False Alt=False [TCustomSynEdit.KeyUp] 91 Shift=False Ctrl=False Alt=False ######## SSMETA UP => IME OPEN ######## x = 32 --- TCustomSynEdit.WMImeRequest ** IMR_QUERYCHARPOSITION 0 32 586 --- TCustomSynEdit.WMImeRequest ** IMR_QUERYCHARPOSITION 0 32 586 --- TCustomSynEdit.WMImeRequest ** IMR_QUERYCHARPOSITION 0 32 586 ######## ESCAPE [TCustomSynEdit.KeyUp] 27 Shift=False Ctrl=False Alt=False [TCustomSynEdit.KeyDown] 91 [ssMeta] --- TCustomSynEdit.WMImeRequest ** IMR_QUERYCHARPOSITION 0 45 690 --- TCustomSynEdit.WMImeRequest ** IMR_QUERYCHARPOSITION 0 45 690 --- TCustomSynEdit.WMImeRequest ** IMR_QUERYCHARPOSITION 0 45 690 [TCustomSynEdit.KeyUp] 190 Shift=False Ctrl=False Alt=False [TCustomSynEdit.KeyUp] 91 Shift=False Ctrl=False Alt=False ######## SSMETA UP => IME OPEN ######## x = 45 --- TCustomSynEdit.WMImeRequest ** IMR_QUERYCHARPOSITION 0 45 690 --- TCustomSynEdit.WMImeRequest ** IMR_QUERYCHARPOSITION 0 45 690 --- TCustomSynEdit.WMImeRequest ** IMR_QUERYCHARPOSITION 0 45 690 [TCustomSynEdit.KeyUp] 27 Shift=False Ctrl=False Alt=False After each escape, when you press down ssmeta, the IME already sends requests for IMR_QUERYCHARPOSITION. On my System, this pos is used to determinate where the IME window should open. If the X positions are correct, according to where you placed the caret, then the editor did return the correct coordinates. I am not sure why the window would be misplaced. -------- The only app on my system that gets the emoticon IME right is firefox. (chrome, notepad++, libre-office have all some flaws / mostly not closing it) If you are interested, here are the firefox sources https://fossies.org/linux/firefox/widget/windows/IMMHandler.h https://dxr.mozilla.org/mozilla-central/source/widget/windows/IMMHandler.cpp |
|
yes, seems 3 times (and last 2 times I got old dialog position). |
|
Well the editor supplied the new ones. There is no explicit doc, for what the IME uses the IMR_QUERYCHARPOSITION. But it does all other windows according to that. (And on my system, also the emoticons). I also found no way to close the emoticons, if the caret is moved by mouse while the list is open. For now the issue will be deferred. |
|
Ok, I updated from 1803 to 1809 (yes I get my update deferred). Now the IME closes correctly. In fact Windows now prevents any other user input to the app, if the emoticon IME is open (and same for clipboard history. |
|
I dont understand your message. But. Win10 build 1803 - emoji position is ok. So issue is Win10 issue, not Laz issue. close it. |
|
To conclude: The feature was introduced in 1803 (and the multi clipboard was introduced in 1809) 1809 had some fixes on the windows site. Such as - closing the IME, if the app is de-activated (switching to other app) - preventing the app from receiving any input (such as scroll, or mouse click) while the IME is open This means the app will not get out of sync with the IME, as the app will not have a reason to scroll or change caret pos, while the IME is open. Both use the IME API. Or it seems they use part of it. Under 1803 and 1809 SynEdit acts like other applications (libre office, chrome, notepad++). In some case SynEdit acts better. Only firefox was able to control the IME better (under 1803). Not sure why/how. I can not yet test 1903 myself. According to your log, and my tests: Under all versions of windows the IME enquires IMR_QUERYCHARPOSITION *before* the IME window opens. It is not clear why 1903 would not correctly use this info. -------- I did test ImmSetCandidateWindow, but it had no effect. I was unable to make the emoticon IME react to ImmNotifyIME(imc, NI_COMPOSITIONSTR, CPS_COMPLETE, 0) or CPS_CANCEL The latter is no longer needed in 1809, because the IME now gets closed by the OS. ------- One last note: The emoticon IME only informs the app, when you start typing with the IME open. That is: - win+dot => the app receives IMR_QUERYCHARPOSITION. But the app is not actually informed that the IME is active. - start typing "heart" to select an emoticon => The app receives "StartComposition" This means it is possible that the IME acts differently, depending on whether input was made or not (I am not aware of such differences, but it might be useful to test) |
Date Modified | Username | Field | Change |
---|---|---|---|
2019-06-07 11:52 | Alexey Tor. | New Issue | |
2019-06-07 12:53 | Martin Friebe | Assigned To | => Martin Friebe |
2019-06-07 12:53 | Martin Friebe | Status | new => assigned |
2019-06-07 19:30 | Martin Friebe | Status | assigned => resolved |
2019-06-07 19:30 | Martin Friebe | Resolution | open => fixed |
2019-06-07 19:30 | Martin Friebe | Fixed in Version | => 2.0.4 |
2019-06-07 19:30 | Martin Friebe | Fixed in Revision | => 61340 |
2019-06-07 19:30 | Martin Friebe | LazTarget | => 2.0.4 |
2019-06-07 19:30 | Martin Friebe | Note Added: 0116612 | |
2019-06-08 16:15 | Alexey Tor. | Status | resolved => closed |
2019-06-08 16:16 | Alexey Tor. | Status | closed => assigned |
2019-06-08 16:16 | Alexey Tor. | Resolution | fixed => reopened |
2019-06-08 16:16 | Alexey Tor. | Note Added: 0116628 | |
2019-06-08 16:49 | Martin Friebe | Status | assigned => feedback |
2019-06-08 16:49 | Martin Friebe | Note Added: 0116629 | |
2019-06-08 16:52 | Martin Friebe | Note Edited: 0116629 | View Revisions |
2019-06-08 16:58 | Martin Friebe | Note Edited: 0116629 | View Revisions |
2019-06-08 17:13 | Alexey Tor. | Note Added: 0116630 | |
2019-06-08 17:13 | Alexey Tor. | Status | feedback => assigned |
2019-06-08 17:15 | Alexey Tor. | Note Edited: 0116630 | View Revisions |
2019-06-08 17:24 | Alexey Tor. | Note Added: 0116631 | |
2019-06-08 18:16 | Martin Friebe | Status | assigned => feedback |
2019-06-08 18:16 | Martin Friebe | Note Added: 0116632 | |
2019-06-08 18:36 | Martin Friebe | Note Added: 0116633 | |
2019-06-08 19:25 | Alexey Tor. | File Added: debug.log | |
2019-06-08 19:25 | Alexey Tor. | Note Added: 0116635 | |
2019-06-08 19:25 | Alexey Tor. | Status | feedback => assigned |
2019-06-08 20:03 | Martin Friebe | Note Added: 0116636 | |
2019-06-08 20:09 | Alexey Tor. | Note Added: 0116637 | |
2019-06-08 20:18 | Martin Friebe | Note Added: 0116638 | |
2019-06-08 20:18 | Martin Friebe | Note Edited: 0116638 | View Revisions |
2019-06-10 11:46 | Martin Friebe | Note Added: 0116656 | |
2019-06-11 12:25 | Alexey Tor. | Note Added: 0116674 | |
2019-06-11 13:32 | Martin Friebe | Status | assigned => resolved |
2019-06-11 13:32 | Martin Friebe | Note Added: 0116675 | |
2019-06-11 13:32 | Martin Friebe | Resolution | reopened => not fixable |