aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/ScintillaBase.cxx
diff options
context:
space:
mode:
authorMartijn Laan <unknown>2024-07-03 09:44:24 +1000
committerMartijn Laan <unknown>2024-07-03 09:44:24 +1000
commited0aed7dc463ee5c0f2b7c0989e231cce2c835b8 (patch)
tree8126eeae8b3bee2a00b9a2df89a23c4f2763cb4f /src/ScintillaBase.cxx
parent2b69fbaf70f6a05269d96b2703acfe49ef7f03a1 (diff)
downloadscintilla-mirror-ed0aed7dc463ee5c0f2b7c0989e231cce2c835b8.tar.gz
Feature [feature-requests:#1523]. SCI_AUTOCSETSTYLE sets autocompletion font.
Diffstat (limited to 'src/ScintillaBase.cxx')
-rw-r--r--src/ScintillaBase.cxx23
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;