diff options
Diffstat (limited to 'src/ScintillaBase.cxx')
-rw-r--r-- | src/ScintillaBase.cxx | 23 |
1 files changed, 20 insertions, 3 deletions
diff --git a/src/ScintillaBase.cxx b/src/ScintillaBase.cxx index c66a689b7..1b19802f9 100644 --- a/src/ScintillaBase.cxx +++ b/src/ScintillaBase.cxx @@ -10,6 +10,7 @@ #include <cstdint> #include <cassert> #include <cstring> +#include <cmath> #include <stdexcept> #include <string> @@ -273,8 +274,16 @@ void ScintillaBase::AutoCompleteStart(Sci::Position lenEntered, const char *list ac.options, }; + int lineHeight; + if (vs.autocStyle != StyleDefault) { + AutoSurface surfaceMeasure(this); + lineHeight = static_cast<int>(std::lround(surfaceMeasure->Height(vs.styles[vs.autocStyle].font.get()))); + } else { + lineHeight = vs.lineHeight; + } + ac.Start(wMain, idAutoComplete, sel.MainCaret(), PointMainCaret(), - lenEntered, vs.lineHeight, IsUnicodeMode(), technology, options); + lenEntered, lineHeight, IsUnicodeMode(), technology, options); const PRectangle rcClient = GetClientRectangle(); Point pt = LocationFromPosition(sel.MainCaret() - lenEntered); @@ -307,8 +316,8 @@ void ScintillaBase::AutoCompleteStart(Sci::Position lenEntered, const char *list rcac.right = rcac.left + widthLB; rcac.bottom = static_cast<XYPOSITION>(std::min(static_cast<int>(rcac.top) + heightLB, static_cast<int>(rcPopupBounds.bottom))); ac.lb->SetPositionRelative(rcac, &wMain); - ac.lb->SetFont(vs.styles[StyleDefault].font.get()); - const int aveCharWidth = static_cast<int>(vs.styles[StyleDefault].aveCharWidth); + ac.lb->SetFont(vs.styles[vs.autocStyle].font.get()); + const int aveCharWidth = static_cast<int>(vs.styles[vs.autocStyle].aveCharWidth); ac.lb->SetAverageCharWidth(aveCharWidth); ac.lb->SetDelegate(this); @@ -941,6 +950,14 @@ sptr_t ScintillaBase::WndProc(Message iMessage, uptr_t wParam, sptr_t lParam) { case Message::AutoCGetMaxWidth: return maxListWidth; + case Message::AutoCSetStyle: + vs.autocStyle = static_cast<int>(wParam); + InvalidateStyleRedraw(); + break; + + case Message::AutoCGetStyle: + return vs.autocStyle; + case Message::RegisterImage: ac.lb->RegisterImage(static_cast<int>(wParam), ConstCharPtrFromSPtr(lParam)); break; |