diff options
| author | Neil Hodgson <nyamatongwe@gmail.com> | 2017-03-04 10:30:52 +1100 |
|---|---|---|
| committer | Neil Hodgson <nyamatongwe@gmail.com> | 2017-03-04 10:30:52 +1100 |
| commit | 69df0a683aed2f3f5240894a8852514fc6458469 (patch) | |
| tree | 8360647ed83130683aa49a4bc3fbb10f3c0e2bfc | |
| parent | a83d3c327f4616cc3ecd169ac4e0e415401cdf96 (diff) | |
| download | scintilla-mirror-69df0a683aed2f3f5240894a8852514fc6458469.tar.gz | |
Fix error with showing find indicator over styles > 127.
| -rw-r--r-- | cocoa/ScintillaCocoa.mm | 4 | ||||
| -rw-r--r-- | cocoa/ScintillaView.mm | 4 |
2 files changed, 6 insertions, 2 deletions
diff --git a/cocoa/ScintillaCocoa.mm b/cocoa/ScintillaCocoa.mm index 4a451649b..1400796be 100644 --- a/cocoa/ScintillaCocoa.mm +++ b/cocoa/ScintillaCocoa.mm @@ -2643,7 +2643,9 @@ void ScintillaCocoa::ShowFindIndicatorForRange(NSRange charRange, BOOL retaining CFRelease(cfsFind); layerFindIndicator.retaining = retaining; layerFindIndicator.positionFind = static_cast<int>(charRange.location); - long style = WndProc(SCI_GETSTYLEAT, charRange.location, 0); + // SCI_GETSTYLEAT reports a signed byte but want an unsigned to index into styles + const char styleByte = static_cast<char>(WndProc(SCI_GETSTYLEAT, charRange.location, 0)); + const long style = static_cast<unsigned char>(styleByte); std::vector<char> bufferFontName(WndProc(SCI_STYLEGETFONT, style, 0) + 1); WndProc(SCI_STYLEGETFONT, style, (sptr_t)&bufferFontName[0]); layerFindIndicator.sFont = [NSString stringWithUTF8String: &bufferFontName[0]]; diff --git a/cocoa/ScintillaView.mm b/cocoa/ScintillaView.mm index 61c471d6a..d4ad526d7 100644 --- a/cocoa/ScintillaView.mm +++ b/cocoa/ScintillaView.mm @@ -442,7 +442,9 @@ static NSCursor *cursorFromEnum(Window::Cursor cursor) NSMutableAttributedString *asResult = [[[NSMutableAttributedString alloc] initWithString:result] autorelease]; const NSRange rangeAS = NSMakeRange(0, [asResult length]); - const long style = [mOwner message: SCI_GETSTYLEAT wParam:posRange.location]; + // SCI_GETSTYLEAT reports a signed byte but want an unsigned to index into styles + const char styleByte = static_cast<char>([mOwner message: SCI_GETSTYLEAT wParam:posRange.location]); + const long style = static_cast<unsigned char>(styleByte); std::string fontName([mOwner message: SCI_STYLEGETFONT wParam:style lParam:0] + 1, 0); [mOwner message: SCI_STYLEGETFONT wParam:style lParam:(sptr_t)&fontName[0]]; const CGFloat fontSize = [mOwner message: SCI_STYLEGETSIZEFRACTIONAL wParam:style] / 100.0f; |
