diff options
author | Zufu Liu <unknown> | 2022-03-04 08:17:07 +1100 |
---|---|---|
committer | Zufu Liu <unknown> | 2022-03-04 08:17:07 +1100 |
commit | 66a542ff4f184ef10990c2dbaa0877cfe3a493bc (patch) | |
tree | f0c94e29748a8e1d08b0b1a4815519487621f145 /src/CallTip.cxx | |
parent | c4600877277ae062a7543dba4521591ede7adc54 (diff) | |
download | scintilla-mirror-66a542ff4f184ef10990c2dbaa0877cfe3a493bc.tar.gz |
Feature [feature-requests:#1432] Simplify CallTipStart by passing in surface and
font. This allows customization of surface creation and ensures surface and font
for calltip are the same as used in main window.
Diffstat (limited to 'src/CallTip.cxx')
-rw-r--r-- | src/CallTip.cxx | 16 |
1 files changed, 3 insertions, 13 deletions
diff --git a/src/CallTip.cxx b/src/CallTip.cxx index 9fb1b535c..0596214bf 100644 --- a/src/CallTip.cxx +++ b/src/CallTip.cxx @@ -272,24 +272,14 @@ void CallTip::MouseClick(Point pt) noexcept { } PRectangle CallTip::CallTipStart(Sci::Position pos, Point pt, int textHeight, const char *defn, - const char *faceName, int size, - int codePage_, CharacterSet characterSet, - Technology technology, - const char *localeName, - const Window &wParent) { + int codePage_, Surface *surfaceMeasure, std::shared_ptr<Font> font_) { clickPlace = 0; val = defn; codePage = codePage_; - std::unique_ptr<Surface> surfaceMeasure = Surface::Allocate(technology); - surfaceMeasure->Init(wParent.GetID()); - surfaceMeasure->SetMode(SurfaceMode(codePage, false)); highlight = Chunk(); inCallTipMode = true; posStartCallTip = pos; - const XYPOSITION deviceHeight = static_cast<XYPOSITION>(surfaceMeasure->DeviceHeightFont(size)); - const FontParameters fp(faceName, deviceHeight / FontSizeMultiplier, FontWeight::Normal, - false, FontQuality::QualityDefault, technology, characterSet, localeName); - font = Font::Allocate(fp); + font = font_; // Look for multiple lines in the text // Only support \n here - simply means container must avoid \r! const int numLines = 1 + static_cast<int>(std::count(val.begin(), val.end(), '\n')); @@ -300,7 +290,7 @@ PRectangle CallTip::CallTipStart(Sci::Position pos, Point pt, int textHeight, co #if !PLAT_CURSES widthArrow = lineHeight * 9 / 10; #endif - const int width = PaintContents(surfaceMeasure.get(), false) + insetX; + const int width = PaintContents(surfaceMeasure, false) + insetX; // The returned // rectangle is aligned to the right edge of the last arrow encountered in |