diff options
author | Neil <nyamatongwe@gmail.com> | 2019-07-17 15:29:06 +1000 |
---|---|---|
committer | Neil <nyamatongwe@gmail.com> | 2019-07-17 15:29:06 +1000 |
commit | 071af976dafcf59d64de91989607ba1fb58592c9 (patch) | |
tree | 8a864a598ca6e25175c817f5ebf85484a910e1ad /win32 | |
parent | 4113cbfdb454b8e1b6a22bf8e8561ea758a14285 (diff) | |
download | scintilla-mirror-071af976dafcf59d64de91989607ba1fb58592c9.tar.gz |
Bug [#2120]. Avoid candidate window obscuring text when near bottom of screen.
Feature [feature-requests:#1300] part 1.
Diffstat (limited to 'win32')
-rw-r--r-- | win32/ScintillaWin.cxx | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/win32/ScintillaWin.cxx b/win32/ScintillaWin.cxx index ec9cb5498..459d926b1 100644 --- a/win32/ScintillaWin.cxx +++ b/win32/ScintillaWin.cxx @@ -940,11 +940,17 @@ void ScintillaWin::SetCandidateWindowPos() { IMContext imc(MainHWND()); if (imc.hIMC) { const Point pos = PointMainCaret(); - CANDIDATEFORM CandForm; + const PRectangle rcClient = GetTextRectangle(); + CANDIDATEFORM CandForm{}; CandForm.dwIndex = 0; - CandForm.dwStyle = CFS_CANDIDATEPOS; + CandForm.dwStyle = CFS_EXCLUDE; CandForm.ptCurrentPos.x = static_cast<int>(pos.x); CandForm.ptCurrentPos.y = static_cast<int>(pos.y + vs.lineHeight); + // Exclude the area of the whole caret line + CandForm.rcArea.top = static_cast<int>(pos.y); + CandForm.rcArea.bottom = static_cast<int>(pos.y + vs.lineHeight); + CandForm.rcArea.left = static_cast<int>(rcClient.left); + CandForm.rcArea.right = static_cast<int>(rcClient.right); ::ImmSetCandidateWindow(imc.hIMC, &CandForm); } } |