From ed0aed7dc463ee5c0f2b7c0989e231cce2c835b8 Mon Sep 17 00:00:00 2001 From: Martijn Laan Date: Wed, 3 Jul 2024 09:44:24 +1000 Subject: Feature [feature-requests:#1523]. SCI_AUTOCSETSTYLE sets autocompletion font. --- src/ScintillaBase.cxx | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) (limited to 'src/ScintillaBase.cxx') 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 #include #include +#include #include #include @@ -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(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(std::min(static_cast(rcac.top) + heightLB, static_cast(rcPopupBounds.bottom))); ac.lb->SetPositionRelative(rcac, &wMain); - ac.lb->SetFont(vs.styles[StyleDefault].font.get()); - const int aveCharWidth = static_cast(vs.styles[StyleDefault].aveCharWidth); + ac.lb->SetFont(vs.styles[vs.autocStyle].font.get()); + const int aveCharWidth = static_cast(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(wParam); + InvalidateStyleRedraw(); + break; + + case Message::AutoCGetStyle: + return vs.autocStyle; + case Message::RegisterImage: ac.lb->RegisterImage(static_cast(wParam), ConstCharPtrFromSPtr(lParam)); break; -- cgit v1.2.3