aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/CallTip.cxx
diff options
context:
space:
mode:
authorZufu Liu <unknown>2022-03-04 08:17:07 +1100
committerZufu Liu <unknown>2022-03-04 08:17:07 +1100
commit66a542ff4f184ef10990c2dbaa0877cfe3a493bc (patch)
treef0c94e29748a8e1d08b0b1a4815519487621f145 /src/CallTip.cxx
parentc4600877277ae062a7543dba4521591ede7adc54 (diff)
downloadscintilla-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.cxx16
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