aboutsummaryrefslogtreecommitdiff
path: root/src/scintilla_backports/6311_7030530a9a0f.patch
diff options
context:
space:
mode:
Diffstat (limited to 'src/scintilla_backports/6311_7030530a9a0f.patch')
-rw-r--r--src/scintilla_backports/6311_7030530a9a0f.patch1480
1 files changed, 0 insertions, 1480 deletions
diff --git a/src/scintilla_backports/6311_7030530a9a0f.patch b/src/scintilla_backports/6311_7030530a9a0f.patch
deleted file mode 100644
index dc85a84d..00000000
--- a/src/scintilla_backports/6311_7030530a9a0f.patch
+++ /dev/null
@@ -1,1480 +0,0 @@
-# HG changeset patch
-# User Neil <nyamatongwe@gmail.com>
-# Date 1497232196 -36000
-# Node ID 7030530a9a0f4fc1203a04378e83d82f0c35e7a0
-# Parent 7e28cdba6d61e090ac6f6627c855ffd2603508e4
-Removed unused functions and methods from Platform.h.
-Replaced Platform::Clamp with Sci::clamp but will later change this to
-std::clamp once on full C++17 compilers.
-Drop MouseButtonBounce workaround for very early GTK+/Linux.
-
-diff -r 7e28cdba6d61 -r 7030530a9a0f cocoa/PlatCocoa.mm
---- a/cocoa/PlatCocoa.mm Sun Jun 11 14:08:43 2017 +1000
-+++ b/cocoa/PlatCocoa.mm Mon Jun 12 11:49:56 2017 +1000
-@@ -83,18 +83,6 @@
- return rc;
- }
-
--//----------------- Point --------------------------------------------------------------------------
--
--/**
-- * Converts a point given as a long into a native Point structure.
-- */
--Scintilla::Point Scintilla::Point::FromLong(long lpoint) {
-- return Scintilla::Point(
-- Platform::LowShortFromLong(lpoint),
-- Platform::HighShortFromLong(lpoint)
-- );
--}
--
- //----------------- Font ---------------------------------------------------------------------------
-
- Font::Font(): fid(0) {
-@@ -921,7 +909,7 @@
- } else if (codePage) {
- int ui = 0;
- for (int i=0; i<len;) {
-- size_t lenChar = Platform::IsDBCSLeadByte(codePage, s[i]) ? 2 : 1;
-+ size_t lenChar = DBCSIsLeadByte(codePage, s[i]) ? 2 : 1;
- CGFloat xPosition = CTLineGetOffsetForStringIndex(mLine, ui+1, NULL);
- for (unsigned int bytePos=0; (bytePos<lenChar) && (i<len); bytePos++) {
- positions[i++] = static_cast<XYPOSITION>(xPosition);
-@@ -984,15 +972,6 @@
- return 0;
- }
-
--XYPOSITION SurfaceImpl::ExternalLeading(Font &font_) {
-- if (!font_.GetID())
-- return 1;
--
-- float leading = static_cast<QuartzTextStyle *>(font_.GetID())->getLeading();
-- return leading + 0.5f;
--
--}
--
- XYPOSITION SurfaceImpl::Height(Font &font_) {
-
- return Ascent(font_) + Descent(font_);
-@@ -1043,13 +1022,6 @@
-
- //--------------------------------------------------------------------------------------------------
-
--bool Window::HasFocus() {
-- NSView *container = (__bridge NSView *)(wid);
-- return container.window.firstResponder == container;
--}
--
--//--------------------------------------------------------------------------------------------------
--
- static CGFloat ScreenMax() {
- return NSMaxY([NSScreen mainScreen].frame);
- }
-@@ -1205,19 +1177,6 @@
-
- //--------------------------------------------------------------------------------------------------
-
--void Window::SetTitle(const char *s) {
-- if (wid) {
-- id idWin = (__bridge id)(wid);
-- if ([idWin isKindOfClass: [NSWindow class]]) {
-- NSWindow *win = idWin;
-- NSString *sTitle = @(s);
-- win.title = sTitle;
-- }
-- }
--}
--
--//--------------------------------------------------------------------------------------------------
--
- PRectangle Window::GetMonitorRect(Point) {
- if (wid) {
- id idWin = (__bridge id)(wid);
-@@ -1897,85 +1856,6 @@
-
- //--------------------------------------------------------------------------------------------------
-
--bool Platform::MouseButtonBounce() {
-- return false;
--}
--
--//--------------------------------------------------------------------------------------------------
--
--/**
-- * Helper method for the backend to reach through to the scintilla window.
-- */
--long Platform::SendScintilla(WindowID w, unsigned int msg, unsigned long wParam, long lParam) {
-- return scintilla_send_message(w, msg, wParam, lParam);
--}
--
--//--------------------------------------------------------------------------------------------------
--
--/**
-- * Helper method for the backend to reach through to the scintilla window.
-- */
--long Platform::SendScintillaPointer(WindowID w, unsigned int msg, unsigned long wParam, void *lParam) {
-- return scintilla_send_message(w, msg, wParam, (long) lParam);
--}
--
--//--------------------------------------------------------------------------------------------------
--
--bool Platform::IsDBCSLeadByte(int codePage, char ch) {
-- // Byte ranges found in Wikipedia articles with relevant search strings in each case
-- unsigned char uch = static_cast<unsigned char>(ch);
-- switch (codePage) {
-- case 932:
-- // Shift_jis
-- return ((uch >= 0x81) && (uch <= 0x9F)) ||
-- ((uch >= 0xE0) && (uch <= 0xFC));
-- // Lead bytes F0 to FC may be a Microsoft addition.
-- case 936:
-- // GBK
-- return (uch >= 0x81) && (uch <= 0xFE);
-- case 949:
-- // Korean Wansung KS C-5601-1987
-- return (uch >= 0x81) && (uch <= 0xFE);
-- case 950:
-- // Big5
-- return (uch >= 0x81) && (uch <= 0xFE);
-- case 1361:
-- // Korean Johab KS C-5601-1992
-- return
-- ((uch >= 0x84) && (uch <= 0xD3)) ||
-- ((uch >= 0xD8) && (uch <= 0xDE)) ||
-- ((uch >= 0xE0) && (uch <= 0xF9));
-- }
-- return false;
--}
--
--//--------------------------------------------------------------------------------------------------
--
--int Platform::DBCSCharLength(int /* codePage */, const char * /* s */) {
-- // DBCS no longer uses this.
-- return 1;
--}
--
--//--------------------------------------------------------------------------------------------------
--
--int Platform::DBCSCharMaxLength() {
-- return 2;
--}
--
--//--------------------------------------------------------------------------------------------------
--
--int Platform::Minimum(int a, int b) {
-- return (a < b) ? a : b;
--}
--
--//--------------------------------------------------------------------------------------------------
--
--int Platform::Maximum(int a, int b) {
-- return (a > b) ? a : b;
--}
--
--//--------------------------------------------------------------------------------------------------
--
- //#define TRACE
- #ifdef TRACE
-
-@@ -2026,16 +1906,6 @@
- #endif
- }
-
--//--------------------------------------------------------------------------------------------------
--
--int Platform::Clamp(int val, int minVal, int maxVal) {
-- if (val > maxVal)
-- val = maxVal;
-- if (val < minVal)
-- val = minVal;
-- return val;
--}
--
- //----------------- DynamicLibrary -----------------------------------------------------------------
-
- /**
-diff -r 7e28cdba6d61 -r 7030530a9a0f cocoa/ScintillaCocoa.h
---- a/cocoa/ScintillaCocoa.h Sun Jun 11 14:08:43 2017 +1000
-+++ b/cocoa/ScintillaCocoa.h Mon Jun 12 11:49:56 2017 +1000
-@@ -52,6 +52,7 @@
- #include "Document.h"
- #include "CaseConvert.h"
- #include "UniConversion.h"
-+#include "DBCS.h"
- #include "Selection.h"
- #include "PositionCache.h"
- #include "EditModel.h"
-diff -r 7e28cdba6d61 -r 7030530a9a0f cocoa/ScintillaFramework/ScintillaFramework.xcodeproj/project.pbxproj
---- a/cocoa/ScintillaFramework/ScintillaFramework.xcodeproj/project.pbxproj Sun Jun 11 14:08:43 2017 +1000
-+++ b/cocoa/ScintillaFramework/ScintillaFramework.xcodeproj/project.pbxproj Mon Jun 12 11:49:56 2017 +1000
-@@ -199,6 +199,7 @@
- 280056FC188DDD2C00F200AE /* StringCopy.h in Headers */ = {isa = PBXBuildFile; fileRef = 280056F9188DDD2C00F200AE /* StringCopy.h */; };
- 280056FD188DDD2C00F200AE /* SubStyles.h in Headers */ = {isa = PBXBuildFile; fileRef = 280056FA188DDD2C00F200AE /* SubStyles.h */; };
- 28064A05190F12E100E6E47F /* LexDMIS.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 28064A04190F12E100E6E47F /* LexDMIS.cxx */; };
-+ 28804B2C1EEE232E00C0D154 /* DBCS.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 28804B2B1EEE232E00C0D154 /* DBCS.cxx */; };
- 28A067111A36B42600B4966A /* LexHex.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 28A067101A36B42600B4966A /* LexHex.cxx */; };
- 28A1DD51196BE0CA006EFCDD /* EditModel.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 28A1DD4E196BE0CA006EFCDD /* EditModel.cxx */; };
- 28A1DD52196BE0CA006EFCDD /* EditView.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 28A1DD4F196BE0CA006EFCDD /* EditView.cxx */; };
-@@ -423,6 +424,7 @@
- 280056FA188DDD2C00F200AE /* SubStyles.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SubStyles.h; path = ../../lexlib/SubStyles.h; sourceTree = "<group>"; };
- 28064A04190F12E100E6E47F /* LexDMIS.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = LexDMIS.cxx; path = ../../lexers/LexDMIS.cxx; sourceTree = "<group>"; };
- 282E41F3B9E2BFEDD6A05BE7 /* LexIndent.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = LexIndent.cxx; path = ../../lexers/LexIndent.cxx; sourceTree = SOURCE_ROOT; };
-+ 28804B2B1EEE232E00C0D154 /* DBCS.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DBCS.cxx; path = ../../src/DBCS.cxx; sourceTree = "<group>"; };
- 28A067101A36B42600B4966A /* LexHex.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = LexHex.cxx; path = ../../lexers/LexHex.cxx; sourceTree = "<group>"; };
- 28A1DD4E196BE0CA006EFCDD /* EditModel.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = EditModel.cxx; path = ../../src/EditModel.cxx; sourceTree = "<group>"; };
- 28A1DD4F196BE0CA006EFCDD /* EditView.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = EditView.cxx; path = ../../src/EditView.cxx; sourceTree = "<group>"; };
-@@ -724,6 +726,7 @@
- 114B6F8F11FA75BE004FB6AB /* CharacterSet.cxx */,
- 114B6F6411FA7597004FB6AB /* CharClassify.cxx */,
- 114B6F6511FA7597004FB6AB /* ContractionState.cxx */,
-+ 28804B2B1EEE232E00C0D154 /* DBCS.cxx */,
- 114B6F6611FA7597004FB6AB /* Decoration.cxx */,
- 114B6F6711FA7597004FB6AB /* Document.cxx */,
- 28A1DD4E196BE0CA006EFCDD /* EditModel.cxx */,
-@@ -1010,6 +1013,7 @@
- 114B6F3911FA7526004FB6AB /* LexMySQL.cxx in Sources */,
- 114B6F3A11FA7526004FB6AB /* LexNimrod.cxx in Sources */,
- 114B6F3B11FA7526004FB6AB /* LexNsis.cxx in Sources */,
-+ 28804B2C1EEE232E00C0D154 /* DBCS.cxx in Sources */,
- 114B6F3C11FA7526004FB6AB /* LexOpal.cxx in Sources */,
- 114B6F3E11FA7526004FB6AB /* LexPascal.cxx in Sources */,
- 28B6470D1B54C0720009DC49 /* LexDiff.cxx in Sources */,
-diff -r 7e28cdba6d61 -r 7030530a9a0f gtk/PlatGTK.cxx
---- a/gtk/PlatGTK.cxx Sun Jun 11 14:08:43 2017 +1000
-+++ b/gtk/PlatGTK.cxx Mon Jun 12 11:49:56 2017 +1000
-@@ -107,12 +107,6 @@
- return static_cast<GtkWidget *>(wid);
- }
-
--Point Point::FromLong(long lpoint) {
-- return Point(
-- Platform::LowShortFromLong(lpoint),
-- Platform::HighShortFromLong(lpoint));
--}
--
- Font::Font() : fid(0) {}
-
- Font::~Font() {}
-@@ -184,7 +178,6 @@
- XYPOSITION Ascent(Font &font_);
- XYPOSITION Descent(Font &font_);
- XYPOSITION InternalLeading(Font &font_);
-- XYPOSITION ExternalLeading(Font &font_);
- XYPOSITION Height(Font &font_);
- XYPOSITION AverageCharWidth(Font &font_);
-
-@@ -925,10 +918,6 @@
- return 0;
- }
-
--XYPOSITION SurfaceImpl::ExternalLeading(Font &) {
-- return 0;
--}
--
- XYPOSITION SurfaceImpl::Height(Font &font_) {
- return Ascent(font_) + Descent(font_);
- }
-@@ -978,10 +967,6 @@
- }
- }
-
--bool Window::HasFocus() {
-- return gtk_widget_has_focus(GTK_WIDGET(wid));
--}
--
- PRectangle Window::GetPosition() {
- // Before any size allocated pretend its 1000 wide so not scrolled
- PRectangle rc(0, 0, 1000, 1000);
-@@ -1125,10 +1110,6 @@
- #endif
- }
-
--void Window::SetTitle(const char *s) {
-- gtk_window_set_title(GTK_WINDOW(wid), s);
--}
--
- /* Returns rectangle of monitor pt is on, both rect and pt are in Window's
- gdk window coordinates */
- PRectangle Window::GetMonitorRect(Point pt) {
-@@ -2025,83 +2006,10 @@
- return 500; // Half a second
- }
-
--bool Platform::MouseButtonBounce() {
-- return true;
--}
--
- void Platform::DebugDisplay(const char *s) {
- fprintf(stderr, "%s", s);
- }
-
--bool Platform::IsKeyDown(int) {
-- // TODO: discover state of keys in GTK+/X
-- return false;
--}
--
--long Platform::SendScintilla(
-- WindowID w, unsigned int msg, unsigned long wParam, long lParam) {
-- return scintilla_send_message(SCINTILLA(w), msg, wParam, lParam);
--}
--
--long Platform::SendScintillaPointer(
-- WindowID w, unsigned int msg, unsigned long wParam, void *lParam) {
-- return scintilla_send_message(SCINTILLA(w), msg, wParam,
-- reinterpret_cast<sptr_t>(lParam));
--}
--
--bool Platform::IsDBCSLeadByte(int codePage, char ch) {
-- // Byte ranges found in Wikipedia articles with relevant search strings in each case
-- unsigned char uch = static_cast<unsigned char>(ch);
-- switch (codePage) {
-- case 932:
-- // Shift_jis
-- return ((uch >= 0x81) && (uch <= 0x9F)) ||
-- ((uch >= 0xE0) && (uch <= 0xFC));
-- // Lead bytes F0 to FC may be a Microsoft addition.
-- case 936:
-- // GBK
-- return (uch >= 0x81) && (uch <= 0xFE);
-- case 950:
-- // Big5
-- return (uch >= 0x81) && (uch <= 0xFE);
-- // Korean EUC-KR may be code page 949.
-- }
-- return false;
--}
--
--int Platform::DBCSCharLength(int codePage, const char *s) {
-- if (codePage == 932 || codePage == 936 || codePage == 950) {
-- return IsDBCSLeadByte(codePage, s[0]) ? 2 : 1;
-- } else {
-- int bytes = mblen(s, MB_CUR_MAX);
-- if (bytes >= 1)
-- return bytes;
-- else
-- return 1;
-- }
--}
--
--int Platform::DBCSCharMaxLength() {
-- return MB_CUR_MAX;
-- //return 2;
--}
--
--// These are utility functions not really tied to a platform
--
--int Platform::Minimum(int a, int b) {
-- if (a < b)
-- return a;
-- else
-- return b;
--}
--
--int Platform::Maximum(int a, int b) {
-- if (a > b)
-- return a;
-- else
-- return b;
--}
--
- //#define TRACE
-
- #ifdef TRACE
-@@ -2134,14 +2042,6 @@
- abort();
- }
-
--int Platform::Clamp(int val, int minVal, int maxVal) {
-- if (val > maxVal)
-- val = maxVal;
-- if (val < minVal)
-- val = minVal;
-- return val;
--}
--
- void Platform_Initialise() {
- }
-
-diff -r 7e28cdba6d61 -r 7030530a9a0f gtk/makefile
---- a/gtk/makefile Sun Jun 11 14:08:43 2017 +1000
-+++ b/gtk/makefile Mon Jun 12 11:49:56 2017 +1000
-@@ -78,7 +78,7 @@
- CTFLAGS=-DNDEBUG -Os $(CXXBASEFLAGS) $(THREADFLAGS)
- endif
-
--CXXTFLAGS:=--std=gnu++0x $(CTFLAGS) $(REFLAGS)
-+CXXTFLAGS:=--std=gnu++17 $(CTFLAGS) $(REFLAGS)
-
- CONFIGFLAGS:=$(shell pkg-config --cflags $(GTKVERSION))
- MARSHALLER=scintilla-marshal.o
-diff -r 7e28cdba6d61 -r 7030530a9a0f include/Platform.h
---- a/include/Platform.h Sun Jun 11 14:08:43 2017 +1000
-+++ b/include/Platform.h Mon Jun 12 11:49:56 2017 +1000
-@@ -109,8 +109,6 @@
- }
-
- // Other automatically defined methods (assignment, copy constructor, destructor) are fine
--
-- static Point FromLong(long lpoint);
- };
-
- /**
-@@ -332,7 +330,6 @@
- virtual XYPOSITION Ascent(Font &font_)=0;
- virtual XYPOSITION Descent(Font &font_)=0;
- virtual XYPOSITION InternalLeading(Font &font_)=0;
-- virtual XYPOSITION ExternalLeading(Font &font_)=0;
- virtual XYPOSITION Height(Font &font_)=0;
- virtual XYPOSITION AverageCharWidth(Font &font_)=0;
-
-@@ -376,7 +373,6 @@
- WindowID GetID() const { return wid; }
- bool Created() const { return wid != 0; }
- void Destroy();
-- bool HasFocus();
- PRectangle GetPosition();
- void SetPosition(PRectangle rc);
- void SetPositionRelative(PRectangle rc, Window relativeTo);
-@@ -387,7 +383,6 @@
- virtual void SetFont(Font &font);
- enum Cursor { cursorInvalid, cursorText, cursorArrow, cursorUp, cursorWait, cursorHoriz, cursorVert, cursorReverseArrow, cursorHand };
- void SetCursor(Cursor curs);
-- void SetTitle(const char *s);
- PRectangle GetMonitorRect(Point pt);
- private:
- Cursor cursorLast;
-@@ -503,34 +498,14 @@
- static const char *DefaultFont();
- static int DefaultFontSize();
- static unsigned int DoubleClickTime();
-- static bool MouseButtonBounce();
- static void DebugDisplay(const char *s);
-- static bool IsKeyDown(int key);
-- static long SendScintilla(
-- WindowID w, unsigned int msg, unsigned long wParam=0, long lParam=0);
-- static long SendScintillaPointer(
-- WindowID w, unsigned int msg, unsigned long wParam=0, void *lParam=0);
-- static bool IsDBCSLeadByte(int codePage, char ch);
-- static int DBCSCharLength(int codePage, const char *s);
-- static int DBCSCharMaxLength();
--
-- // These are utility functions not really tied to a platform
-- static int Minimum(int a, int b);
-- static int Maximum(int a, int b);
-- // Next three assume 16 bit shorts and 32 bit longs
- static long LongFromTwoShorts(short a,short b) {
- return (a) | ((b) << 16);
- }
-- static short HighShortFromLong(long x) {
-- return static_cast<short>(x >> 16);
-- }
-- static short LowShortFromLong(long x) {
-- return static_cast<short>(x & 0xffff);
-- }
-+
- static void DebugPrintf(const char *format, ...);
- static bool ShowAssertionPopUps(bool assertionPopUps_);
- static void Assert(const char *c, const char *file, int line) CLANG_ANALYZER_NORETURN;
-- static int Clamp(int val, int minVal, int maxVal);
- };
-
- #ifdef NDEBUG
-diff -r 7e28cdba6d61 -r 7030530a9a0f qt/ScintillaEdit/ScintillaEdit.pro
---- a/qt/ScintillaEdit/ScintillaEdit.pro Sun Jun 11 14:08:43 2017 +1000
-+++ b/qt/ScintillaEdit/ScintillaEdit.pro Mon Jun 12 11:49:56 2017 +1000
-@@ -10,18 +10,14 @@
- TARGET = ScintillaEdit
- TEMPLATE = lib
- CONFIG += lib_bundle
--
--unix {
-- # <regex> requires C++11 support
-- greaterThan(QT_MAJOR_VERSION, 4){
-- CONFIG += c++11
-- } else {
-- QMAKE_CXXFLAGS += -std=c++0x
-- }
--}
-+CONFIG += c++14
-
- VERSION = 3.7.5
-
-+win32 {
-+ QMAKE_CXXFLAGS += -std:c++latest
-+}
-+
- SOURCES += \
- ScintillaEdit.cpp \
- ScintillaDocument.cpp \
-@@ -48,6 +44,7 @@
- ../../src/EditModel.cxx \
- ../../src/Document.cxx \
- ../../src/Decoration.cxx \
-+ ../../src/DBCS.cxx \
- ../../src/ContractionState.cxx \
- ../../src/CharClassify.cxx \
- ../../src/CellBuffer.cxx \
-diff -r 7e28cdba6d61 -r 7030530a9a0f qt/ScintillaEditBase/PlatQt.cpp
---- a/qt/ScintillaEditBase/PlatQt.cpp Sun Jun 11 14:08:43 2017 +1000
-+++ b/qt/ScintillaEditBase/PlatQt.cpp Mon Jun 12 11:49:56 2017 +1000
-@@ -10,6 +10,7 @@
-
- #include "PlatQt.h"
- #include "Scintilla.h"
-+#include "DBCS.h"
- #include "FontQuality.h"
-
- #include <QApplication>
-@@ -489,7 +490,7 @@
- // DBCS
- int ui = 0;
- for (int i=0; i<len;) {
-- size_t lenChar = Platform::IsDBCSLeadByte(codePage, s[i]) ? 2 : 1;
-+ size_t lenChar = DBCSIsLeadByte(codePage, s[i]) ? 2 : 1;
- qreal xPosition = tl.cursorToX(ui+1);
- for (unsigned int bytePos=0; (bytePos<lenChar) && (i<len); bytePos++) {
- positions[i++] = xPosition;
-@@ -539,12 +540,6 @@
- return 0;
- }
-
--XYPOSITION SurfaceImpl::ExternalLeading(Font &font)
--{
-- QFontMetricsF metrics(*FontPointer(font), device);
-- return metrics.leading();
--}
--
- XYPOSITION SurfaceImpl::Height(Font &font)
- {
- QFontMetricsF metrics(*FontPointer(font), device);
-@@ -625,11 +620,6 @@
- wid = 0;
- }
-
--bool Window::HasFocus()
--{
-- return wid ? window(wid)->hasFocus() : false;
--}
--
- PRectangle Window::GetPosition()
- {
- // Before any size allocated pretend its 1000 wide so not scrolled
-@@ -725,12 +715,6 @@
- }
- }
-
--void Window::SetTitle(const char *s)
--{
-- if (wid)
-- window(wid)->setWindowTitle(s);
--}
--
- /* Returns rectangle of monitor pt is on, both rect and pt are in Window's
- window coordinates */
- PRectangle Window::GetMonitorRect(Point pt)
-@@ -1201,47 +1185,6 @@
- return QApplication::doubleClickInterval();
- }
-
--bool Platform::MouseButtonBounce()
--{
-- return false;
--}
--
--bool Platform::IsKeyDown(int /*key*/)
--{
-- return false;
--}
--
--long Platform::SendScintilla(WindowID /*w*/,
-- unsigned int /*msg*/,
-- unsigned long /*wParam*/,
-- long /*lParam*/)
--{
-- return 0;
--}
--
--long Platform::SendScintillaPointer(WindowID /*w*/,
-- unsigned int /*msg*/,
-- unsigned long /*wParam*/,
-- void * /*lParam*/)
--{
-- return 0;
--}
--
--int Platform::Minimum(int a, int b)
--{
-- return qMin(a, b);
--}
--
--int Platform::Maximum(int a, int b)
--{
-- return qMax(a, b);
--}
--
--int Platform::Clamp(int val, int minVal, int maxVal)
--{
-- return qBound(minVal, val, maxVal);
--}
--
- void Platform::DebugDisplay(const char *s)
- {
- qWarning("Scintilla: %s", s);
-@@ -1276,51 +1219,6 @@
- }
- }
-
--
--bool Platform::IsDBCSLeadByte(int codePage, char ch)
--{
-- // Byte ranges found in Wikipedia articles with relevant search strings in each case
-- unsigned char uch = static_cast<unsigned char>(ch);
-- switch (codePage) {
-- case 932:
-- // Shift_jis
-- return ((uch >= 0x81) && (uch <= 0x9F)) ||
-- ((uch >= 0xE0) && (uch <= 0xEF));
-- case 936:
-- // GBK
-- return (uch >= 0x81) && (uch <= 0xFE);
-- case 949:
-- // Korean Wansung KS C-5601-1987
-- return (uch >= 0x81) && (uch <= 0xFE);
-- case 950:
-- // Big5
-- return (uch >= 0x81) && (uch <= 0xFE);
-- case 1361:
-- // Korean Johab KS C-5601-1992
-- return
-- ((uch >= 0x84) && (uch <= 0xD3)) ||
-- ((uch >= 0xD8) && (uch <= 0xDE)) ||
-- ((uch >= 0xE0) && (uch <= 0xF9));
-- }
-- return false;
--}
--
--int Platform::DBCSCharLength(int codePage, const char *s)
--{
-- if (codePage == 932 || codePage == 936 || codePage == 949 ||
-- codePage == 950 || codePage == 1361) {
-- return IsDBCSLeadByte(codePage, s[0]) ? 2 : 1;
-- } else {
-- return 1;
-- }
--}
--
--int Platform::DBCSCharMaxLength()
--{
-- return 2;
--}
--
--
- //----------------------------------------------------------------------
-
- static QElapsedTimer timer;
-diff -r 7e28cdba6d61 -r 7030530a9a0f qt/ScintillaEditBase/PlatQt.h
---- a/qt/ScintillaEditBase/PlatQt.h Sun Jun 11 14:08:43 2017 +1000
-+++ b/qt/ScintillaEditBase/PlatQt.h Mon Jun 12 11:49:56 2017 +1000
-@@ -106,7 +106,6 @@
- XYPOSITION Ascent(Font &font) override;
- XYPOSITION Descent(Font &font) override;
- XYPOSITION InternalLeading(Font &font) override;
-- XYPOSITION ExternalLeading(Font &font) override;
- XYPOSITION Height(Font &font) override;
- XYPOSITION AverageCharWidth(Font &font) override;
-
-diff -r 7e28cdba6d61 -r 7030530a9a0f qt/ScintillaEditBase/ScintillaEditBase.pro
---- a/qt/ScintillaEditBase/ScintillaEditBase.pro Sun Jun 11 14:08:43 2017 +1000
-+++ b/qt/ScintillaEditBase/ScintillaEditBase.pro Mon Jun 12 11:49:56 2017 +1000
-@@ -10,18 +10,14 @@
- TARGET = ScintillaEditBase
- TEMPLATE = lib
- CONFIG += lib_bundle
--
--unix {
-- # <regex> requires C++11 support
-- greaterThan(QT_MAJOR_VERSION, 4){
-- CONFIG += c++11
-- } else {
-- QMAKE_CXXFLAGS += -std=c++0x
-- }
--}
-+CONFIG += c++14
-
- VERSION = 3.7.5
-
-+win32 {
-+ QMAKE_CXXFLAGS += -std:c++latest
-+}
-+
- SOURCES += \
- PlatQt.cpp \
- ScintillaQt.cpp \
-@@ -46,6 +42,7 @@
- ../../src/EditModel.cxx \
- ../../src/Document.cxx \
- ../../src/Decoration.cxx \
-+ ../../src/DBCS.cxx \
- ../../src/ContractionState.cxx \
- ../../src/CharClassify.cxx \
- ../../src/CellBuffer.cxx \
-diff -r 7e28cdba6d61 -r 7030530a9a0f qt/ScintillaEditPy/ScintillaEditPy.pro
---- a/qt/ScintillaEditPy/ScintillaEditPy.pro Sun Jun 11 14:08:43 2017 +1000
-+++ b/qt/ScintillaEditPy/ScintillaEditPy.pro Mon Jun 12 11:49:56 2017 +1000
-@@ -6,21 +6,14 @@
-
- # Clear debug & release so that sepbuild.pri can set one or the other
- CONFIG -= debug release
-+CONFIG += c++14
-
- include(sepbuild.pri)
-
- VERSION = $$SCINTILLA_VERSION
-
--unix {
-- # <regex> requires C++11 support
-- greaterThan(QT_MAJOR_VERSION, 4){
-- CONFIG += c++11
-- } else {
-- QMAKE_CXXFLAGS += -std=c++0x -Wno-deprecated-declarations
-- }
--}
--
- win32 {
-+ QMAKE_CXXFLAGS += -std:c++latest
- DebugBuild {
- TARGET_EXT = _d.pyd
- }
-diff -r 7e28cdba6d61 -r 7030530a9a0f scripts/HeaderOrder.txt
---- a/scripts/HeaderOrder.txt Sun Jun 11 14:08:43 2017 +1000
-+++ b/scripts/HeaderOrder.txt Mon Jun 12 11:49:56 2017 +1000
-@@ -129,6 +129,7 @@
- #include "CaseConvert.h"
- #include "UniConversion.h"
- #include "UnicodeFromUTF8.h"
-+#include "DBCS.h"
- #include "Selection.h"
- #include "PositionCache.h"
- #include "FontQuality.h"
-diff -r 7e28cdba6d61 -r 7030530a9a0f src/DBCS.cxx
---- /dev/null Thu Jan 01 00:00:00 1970 +0000
-+++ b/src/DBCS.cxx Mon Jun 12 11:49:56 2017 +1000
-@@ -0,0 +1,48 @@
-+// Scintilla source code edit control
-+/** @file DBCS.cxx
-+ ** Functions to handle DBCS double byte encodings like Shift-JIS.
-+ **/
-+// Copyright 2017 by Neil Hodgson <neilh@scintilla.org>
-+// The License.txt file describes the conditions under which this software may be distributed.
-+
-+#include "DBCS.h"
-+
-+#ifdef SCI_NAMESPACE
-+using namespace Scintilla;
-+#endif
-+
-+#ifdef SCI_NAMESPACE
-+namespace Scintilla {
-+#endif
-+
-+bool DBCSIsLeadByte(int codePage, char ch) {
-+ // Byte ranges found in Wikipedia articles with relevant search strings in each case
-+ const unsigned char uch = static_cast<unsigned char>(ch);
-+ switch (codePage) {
-+ case 932:
-+ // Shift_jis
-+ return ((uch >= 0x81) && (uch <= 0x9F)) ||
-+ ((uch >= 0xE0) && (uch <= 0xFC));
-+ // Lead bytes F0 to FC may be a Microsoft addition.
-+ case 936:
-+ // GBK
-+ return (uch >= 0x81) && (uch <= 0xFE);
-+ case 949:
-+ // Korean Wansung KS C-5601-1987
-+ return (uch >= 0x81) && (uch <= 0xFE);
-+ case 950:
-+ // Big5
-+ return (uch >= 0x81) && (uch <= 0xFE);
-+ case 1361:
-+ // Korean Johab KS C-5601-1992
-+ return
-+ ((uch >= 0x84) && (uch <= 0xD3)) ||
-+ ((uch >= 0xD8) && (uch <= 0xDE)) ||
-+ ((uch >= 0xE0) && (uch <= 0xF9));
-+ }
-+ return false;
-+}
-+
-+#ifdef SCI_NAMESPACE
-+}
-+#endif
-diff -r 7e28cdba6d61 -r 7030530a9a0f src/DBCS.h
---- /dev/null Thu Jan 01 00:00:00 1970 +0000
-+++ b/src/DBCS.h Mon Jun 12 11:49:56 2017 +1000
-@@ -0,0 +1,21 @@
-+// Scintilla source code edit control
-+/** @file DBCS.h
-+ ** Functions to handle DBCS double byte encodings like Shift-JIS.
-+ **/
-+// Copyright 2017 by Neil Hodgson <neilh@scintilla.org>
-+// The License.txt file describes the conditions under which this software may be distributed.
-+
-+#ifndef DBCS_H
-+#define DBCS_H
-+
-+#ifdef SCI_NAMESPACE
-+namespace Scintilla {
-+#endif
-+
-+bool DBCSIsLeadByte(int codePage, char ch);
-+
-+#ifdef SCI_NAMESPACE
-+}
-+#endif
-+
-+#endif
-diff -r 7e28cdba6d61 -r 7030530a9a0f src/Document.cxx
---- a/src/Document.cxx Sun Jun 11 14:08:43 2017 +1000
-+++ b/src/Document.cxx Mon Jun 12 11:49:56 2017 +1000
-@@ -564,7 +564,7 @@
- }
-
- Sci::Position Document::ClampPositionIntoDocument(Sci::Position pos) const {
-- return Platform::Clamp(pos, 0, Length());
-+ return Sci::clamp(pos, 0, Length());
- }
-
- bool Document::IsCrLf(Sci::Position pos) const {
-diff -r 7e28cdba6d61 -r 7030530a9a0f src/Editor.cxx
---- a/src/Editor.cxx Sun Jun 11 14:08:43 2017 +1000
-+++ b/src/Editor.cxx Mon Jun 12 11:49:56 2017 +1000
-@@ -888,10 +888,10 @@
- Sci::Line lineDisplay = cs.DisplayFromDoc(lineDoc);
- if (moveDir > 0) {
- // lineDisplay is already line before fold as lines in fold use display line of line after fold
-- lineDisplay = Platform::Clamp(lineDisplay, 0, cs.LinesDisplayed());
-+ lineDisplay = Sci::clamp(lineDisplay, 0, cs.LinesDisplayed());
- return SelectionPosition(pdoc->LineStart(cs.DocFromDisplay(lineDisplay)));
- } else {
-- lineDisplay = Platform::Clamp(lineDisplay - 1, 0, cs.LinesDisplayed());
-+ lineDisplay = Sci::clamp(lineDisplay - 1, 0, cs.LinesDisplayed());
- return SelectionPosition(pdoc->LineEnd(cs.DocFromDisplay(lineDisplay)));
- }
- }
-@@ -915,7 +915,7 @@
- }
-
- void Editor::ScrollTo(Sci::Line line, bool moveThumb) {
-- const Sci::Line topLineNew = Platform::Clamp(line, 0, MaxScrollPos());
-+ const Sci::Line topLineNew = Sci::clamp(line, 0, MaxScrollPos());
- if (topLineNew != topLine) {
- // Try to optimise small scrolls
- #ifndef UNDER_CE
-@@ -1154,7 +1154,7 @@
- } else {
- // yMarginT must equal to caretYSlop, with a minimum of 1 and
- // a maximum of slightly less than half the heigth of the text area.
-- yMarginT = Platform::Clamp(caretYSlop, 1, halfScreen);
-+ yMarginT = Sci::clamp(caretYSlop, 1, halfScreen);
- if (bEven) {
- yMarginB = yMarginT;
- } else {
-@@ -1164,7 +1164,7 @@
- yMoveT = yMarginT;
- if (bEven) {
- if (bJump) {
-- yMoveT = Platform::Clamp(caretYSlop * 3, 1, halfScreen);
-+ yMoveT = Sci::clamp(caretYSlop * 3, 1, halfScreen);
- }
- yMoveB = yMoveT;
- } else {
-@@ -1179,7 +1179,7 @@
- }
- } else { // Not strict
- yMoveT = bJump ? caretYSlop * 3 : caretYSlop;
-- yMoveT = Platform::Clamp(yMoveT, 1, halfScreen);
-+ yMoveT = Sci::clamp(yMoveT, 1, halfScreen);
- if (bEven) {
- yMoveB = yMoveT;
- } else {
-@@ -1229,7 +1229,7 @@
- newXY.topLine = std::min(newXY.topLine, lineCaret);
- }
- }
-- newXY.topLine = Platform::Clamp(newXY.topLine, 0, MaxScrollPos());
-+ newXY.topLine = Sci::clamp(newXY.topLine, 0, MaxScrollPos());
- }
-
- // Horizontal positioning
-@@ -1251,7 +1251,7 @@
- } else {
- // xMargin must equal to caretXSlop, with a minimum of 2 and
- // a maximum of slightly less than half the width of the text area.
-- xMarginR = Platform::Clamp(caretXSlop, 2, halfScreen);
-+ xMarginR = Sci::clamp(caretXSlop, 2, halfScreen);
- if (bEven) {
- xMarginL = xMarginR;
- } else {
-@@ -1260,7 +1260,7 @@
- }
- if (bJump && bEven) {
- // Jump is used only in even mode
-- xMoveL = xMoveR = Platform::Clamp(caretXSlop * 3, 1, halfScreen);
-+ xMoveL = xMoveR = Sci::clamp(caretXSlop * 3, 1, halfScreen);
- } else {
- xMoveL = xMoveR = 0; // Not used, avoid a warning
- }
-@@ -1283,7 +1283,7 @@
- }
- } else { // Not strict
- xMoveR = bJump ? caretXSlop * 3 : caretXSlop;
-- xMoveR = Platform::Clamp(xMoveR, 1, halfScreen);
-+ xMoveR = Sci::clamp(xMoveR, 1, halfScreen);
- if (bEven) {
- xMoveL = xMoveR;
- } else {
-@@ -1505,7 +1505,7 @@
- const Sci::Line lineDocTop = cs.DocFromDisplay(topLine);
- const int subLineTop = topLine - cs.DisplayFromDoc(lineDocTop);
- if (ws == wsVisible) {
-- lineToWrap = Platform::Clamp(lineDocTop-5, wrapPending.start, pdoc->LinesTotal());
-+ lineToWrap = Sci::clamp(lineDocTop-5, wrapPending.start, pdoc->LinesTotal());
- // Priority wrap to just after visible area.
- // Since wrapping could reduce display lines, treat each
- // as taking only one display line.
-@@ -1561,7 +1561,7 @@
-
- if (wrapOccurred) {
- SetScrollBars();
-- SetTopLine(Platform::Clamp(goodTopLine, 0, MaxScrollPos()));
-+ SetTopLine(Sci::clamp(goodTopLine, 0, MaxScrollPos()));
- SetVerticalScrollPos();
- }
-
-@@ -1816,7 +1816,7 @@
- // TODO: ensure always showing as many lines as possible
- // May not be, if, for example, window made larger
- if (topLine > MaxScrollPos()) {
-- SetTopLine(Platform::Clamp(topLine, 0, MaxScrollPos()));
-+ SetTopLine(Sci::clamp(topLine, 0, MaxScrollPos()));
- SetVerticalScrollPos();
- Redraw();
- }
-@@ -2641,7 +2641,7 @@
- if (mh.linesAdded != 0) {
- // Avoid scrolling of display if change before current display
- if (mh.position < posTopLine && !CanDeferToLastStep(mh)) {
-- Sci::Line newTop = Platform::Clamp(topLine + mh.linesAdded, 0, MaxScrollPos());
-+ Sci::Line newTop = Sci::clamp(topLine + mh.linesAdded, 0, MaxScrollPos());
- if (newTop != topLine) {
- SetTopLine(newTop);
- SetVerticalScrollPos();
-@@ -2877,7 +2877,7 @@
- } else {
- Point pt = LocationFromPosition(sel.MainCaret());
-
-- topLineNew = Platform::Clamp(
-+ topLineNew = Sci::clamp(
- topLine + direction * LinesToScroll(), 0, MaxScrollPos());
- newPos = SPositionFromLocation(
- Point::FromInts(lastXChosen - xOffset, static_cast<int>(pt.y) + direction * (vs.lineHeight * LinesToScroll())),
-@@ -3209,6 +3209,14 @@
-
- namespace {
-
-+short HighShortFromLong(long x) {
-+ return static_cast<short>(x >> 16);
-+}
-+
-+short LowShortFromLong(long x) {
-+ return static_cast<short>(x & 0xffff);
-+}
-+
- unsigned int WithExtends(unsigned int iMessage) {
- switch (iMessage) {
- case SCI_CHARLEFT: return SCI_CHARLEFTEXTEND;
-@@ -4470,30 +4478,27 @@
- if (!ctrl || !multipleSelection || (selectionType != selChar && selectionType != selWord))
- SetEmptySelection(newPos.Position());
- bool doubleClick = false;
-- // Stop mouse button bounce changing selection type
-- if (!Platform::MouseButtonBounce() || curTime != lastClickTime) {
-- if (inSelMargin) {
-- // Inside margin selection type should be either selSubLine or selWholeLine.
-- if (selectionType == selSubLine) {
-- // If it is selSubLine, we're inside a *double* click and word wrap is enabled,
-- // so we switch to selWholeLine in order to select whole line.
-- selectionType = selWholeLine;
-- } else if (selectionType != selSubLine && selectionType != selWholeLine) {
-- // If it is neither, reset selection type to line selection.
-- selectionType = (Wrapping() && (marginOptions & SC_MARGINOPTION_SUBLINESELECT)) ? selSubLine : selWholeLine;
-- }
-+ if (inSelMargin) {
-+ // Inside margin selection type should be either selSubLine or selWholeLine.
-+ if (selectionType == selSubLine) {
-+ // If it is selSubLine, we're inside a *double* click and word wrap is enabled,
-+ // so we switch to selWholeLine in order to select whole line.
-+ selectionType = selWholeLine;
-+ } else if (selectionType != selSubLine && selectionType != selWholeLine) {
-+ // If it is neither, reset selection type to line selection.
-+ selectionType = (Wrapping() && (marginOptions & SC_MARGINOPTION_SUBLINESELECT)) ? selSubLine : selWholeLine;
-+ }
-+ } else {
-+ if (selectionType == selChar) {
-+ selectionType = selWord;
-+ doubleClick = true;
-+ } else if (selectionType == selWord) {
-+ // Since we ended up here, we're inside a *triple* click, which should always select
-+ // whole line regardless of word wrap being enabled or not.
-+ selectionType = selWholeLine;
- } else {
-- if (selectionType == selChar) {
-- selectionType = selWord;
-- doubleClick = true;
-- } else if (selectionType == selWord) {
-- // Since we ended up here, we're inside a *triple* click, which should always select
-- // whole line regardless of word wrap being enabled or not.
-- selectionType = selWholeLine;
-- } else {
-- selectionType = selChar;
-- originalAnchorPos = sel.MainCaret();
-- }
-+ selectionType = selChar;
-+ originalAnchorPos = sel.MainCaret();
- }
- }
-
-@@ -5082,7 +5087,7 @@
- // When scrolling, allow less time to ensure responsive
- const double secondsAllowed = scrolling ? 0.005 : 0.02;
-
-- const Sci::Line linesToStyle = Platform::Clamp(static_cast<int>(secondsAllowed / pdoc->durationStyleOneLine),
-+ const Sci::Line linesToStyle = Sci::clamp(static_cast<int>(secondsAllowed / pdoc->durationStyleOneLine),
- 10, 0x10000);
- const Sci::Line stylingMaxLine = std::min(
- static_cast<Sci::Line>(pdoc->LineFromPosition(pdoc->GetEndStyled()) + linesToStyle),
-@@ -5426,18 +5431,18 @@
- const Sci::Line lineDisplay = cs.DisplayFromDoc(lineDoc);
- if (visiblePolicy & VISIBLE_SLOP) {
- if ((topLine > lineDisplay) || ((visiblePolicy & VISIBLE_STRICT) && (topLine + visibleSlop > lineDisplay))) {
-- SetTopLine(Platform::Clamp(lineDisplay - visibleSlop, 0, MaxScrollPos()));
-+ SetTopLine(Sci::clamp(lineDisplay - visibleSlop, 0, MaxScrollPos()));
- SetVerticalScrollPos();
- Redraw();
- } else if ((lineDisplay > topLine + LinesOnScreen() - 1) ||
- ((visiblePolicy & VISIBLE_STRICT) && (lineDisplay > topLine + LinesOnScreen() - 1 - visibleSlop))) {
-- SetTopLine(Platform::Clamp(lineDisplay - LinesOnScreen() + 1 + visibleSlop, 0, MaxScrollPos()));
-+ SetTopLine(Sci::clamp(lineDisplay - LinesOnScreen() + 1 + visibleSlop, 0, MaxScrollPos()));
- SetVerticalScrollPos();
- Redraw();
- }
- } else {
- if ((topLine > lineDisplay) || (lineDisplay > topLine + LinesOnScreen() - 1) || (visiblePolicy & VISIBLE_STRICT)) {
-- SetTopLine(Platform::Clamp(lineDisplay - LinesOnScreen() / 2 + 1, 0, MaxScrollPos()));
-+ SetTopLine(Sci::clamp(lineDisplay - LinesOnScreen() / 2 + 1, 0, MaxScrollPos()));
- SetVerticalScrollPos();
- Redraw();
- }
-@@ -6040,7 +6045,7 @@
- return pdoc->MovePositionOutsideChar(static_cast<int>(wParam) + 1, 1, true);
-
- case SCI_POSITIONRELATIVE:
-- return Platform::Clamp(pdoc->GetRelativePosition(static_cast<int>(wParam), static_cast<int>(lParam)), 0, pdoc->Length());
-+ return Sci::clamp(pdoc->GetRelativePosition(static_cast<int>(wParam), static_cast<int>(lParam)), 0, pdoc->Length());
-
- case SCI_LINESCROLL:
- ScrollTo(topLine + static_cast<Sci::Line>(lParam));
-@@ -7290,13 +7295,13 @@
- return vs.caretWidth;
-
- case SCI_ASSIGNCMDKEY:
-- kmap.AssignCmdKey(Platform::LowShortFromLong(static_cast<long>(wParam)),
-- Platform::HighShortFromLong(static_cast<long>(wParam)), static_cast<unsigned int>(lParam));
-+ kmap.AssignCmdKey(LowShortFromLong(static_cast<long>(wParam)),
-+ HighShortFromLong(static_cast<long>(wParam)), static_cast<unsigned int>(lParam));
- break;
-
- case SCI_CLEARCMDKEY:
-- kmap.AssignCmdKey(Platform::LowShortFromLong(static_cast<long>(wParam)),
-- Platform::HighShortFromLong(static_cast<long>(wParam)), SCI_NULL);
-+ kmap.AssignCmdKey(LowShortFromLong(static_cast<long>(wParam)),
-+ HighShortFromLong(static_cast<long>(wParam)), SCI_NULL);
- break;
-
- case SCI_CLEARALLCMDKEYS:
-diff -r 7e28cdba6d61 -r 7030530a9a0f src/Position.h
---- a/src/Position.h Sun Jun 11 14:08:43 2017 +1000
-+++ b/src/Position.h Mon Jun 12 11:49:56 2017 +1000
-@@ -25,6 +25,14 @@
-
- const Position invalidPosition = -1;
-
-+inline int clamp(int val, int minVal, int maxVal) {
-+ if (val > maxVal)
-+ val = maxVal;
-+ if (val < minVal)
-+ val = minVal;
-+ return val;
-+}
-+
- }
-
- #endif
-diff -r 7e28cdba6d61 -r 7030530a9a0f src/ViewStyle.cxx
---- a/src/ViewStyle.cxx Sun Jun 11 14:08:43 2017 +1000
-+++ b/src/ViewStyle.cxx Mon Jun 12 11:49:56 2017 +1000
-@@ -460,7 +460,7 @@
- }
-
- int ViewStyle::GetFrameWidth() const {
-- return Platform::Clamp(caretLineFrame, 1, lineHeight / 3);
-+ return Sci::clamp(caretLineFrame, 1, lineHeight / 3);
- }
-
- bool ViewStyle::IsLineFrameOpaque(bool caretActive, bool lineContainsCaret) const {
-diff -r 7e28cdba6d61 -r 7030530a9a0f win32/PlatWin.cxx
---- a/win32/PlatWin.cxx Sun Jun 11 14:08:43 2017 +1000
-+++ b/win32/PlatWin.cxx Mon Jun 12 11:49:56 2017 +1000
-@@ -46,6 +46,7 @@
- #include "StringCopy.h"
- #include "XPM.h"
- #include "UniConversion.h"
-+#include "DBCS.h"
- #include "FontQuality.h"
-
- #ifndef SPI_GETFONTSMOOTHINGCONTRAST
-@@ -75,10 +76,6 @@
- namespace Scintilla {
- #endif
-
--Point Point::FromLong(long lpoint) {
-- return Point(static_cast<short>(LOWORD(lpoint)), static_cast<short>(HIWORD(lpoint)));
--}
--
- static RECT RectFromPRectangle(PRectangle prc) {
- RECT rc = {static_cast<LONG>(prc.left), static_cast<LONG>(prc.top),
- static_cast<LONG>(prc.right), static_cast<LONG>(prc.bottom)};
-@@ -558,7 +555,6 @@
- XYPOSITION Ascent(Font &font_) override;
- XYPOSITION Descent(Font &font_) override;
- XYPOSITION InternalLeading(Font &font_) override;
-- XYPOSITION ExternalLeading(Font &font_) override;
- XYPOSITION Height(Font &font_) override;
- XYPOSITION AverageCharWidth(Font &font_) override;
-
-@@ -1010,13 +1006,6 @@
- return static_cast<XYPOSITION>(tm.tmInternalLeading);
- }
-
--XYPOSITION SurfaceGDI::ExternalLeading(Font &font_) {
-- SetFont(font_);
-- TEXTMETRIC tm;
-- ::GetTextMetrics(hdc, &tm);
-- return static_cast<XYPOSITION>(tm.tmExternalLeading);
--}
--
- XYPOSITION SurfaceGDI::Height(Font &font_) {
- SetFont(font_);
- TEXTMETRIC tm;
-@@ -1121,7 +1110,6 @@
- XYPOSITION Ascent(Font &font_) override;
- XYPOSITION Descent(Font &font_) override;
- XYPOSITION InternalLeading(Font &font_) override;
-- XYPOSITION ExternalLeading(Font &font_) override;
- XYPOSITION Height(Font &font_) override;
- XYPOSITION AverageCharWidth(Font &font_) override;
-
-@@ -1671,7 +1659,7 @@
- int ui = 0;
- for (int i=0; i<len && ui<tbuf.tlen;) {
- positions[i] = poses.buffer[ui];
-- if (Platform::IsDBCSLeadByte(codePageText, s[i])) {
-+ if (DBCSIsLeadByte(codePageText, s[i])) {
- positions[i+1] = poses.buffer[ui];
- i += 2;
- } else {
-@@ -1716,11 +1704,6 @@
- return floor(yInternalLeading);
- }
-
--XYPOSITION SurfaceD2D::ExternalLeading(Font &) {
-- // Not implemented, always return one
-- return 1;
--}
--
- XYPOSITION SurfaceD2D::Height(Font &font_) {
- return Ascent(font_) + Descent(font_);
- }
-@@ -1786,10 +1769,6 @@
- wid = 0;
- }
-
--bool Window::HasFocus() {
-- return ::GetFocus() == wid;
--}
--
- PRectangle Window::GetPosition() {
- RECT rc;
- ::GetWindowRect(static_cast<HWND>(wid), &rc);
-@@ -1952,10 +1931,6 @@
- }
- }
-
--void Window::SetTitle(const char *s) {
-- ::SetWindowTextA(static_cast<HWND>(wid), s);
--}
--
- /* Returns rectangle of monitor pt is on, both rect and pt are in Window's
- coordinates */
- PRectangle Window::GetMonitorRect(Point pt) {
-@@ -3024,85 +2999,10 @@
- return ::GetDoubleClickTime();
- }
-
--bool Platform::MouseButtonBounce() {
-- return false;
--}
--
- void Platform::DebugDisplay(const char *s) {
- ::OutputDebugStringA(s);
- }
-
--bool Platform::IsKeyDown(int key) {
-- return (::GetKeyState(key) & 0x80000000) != 0;
--}
--
--long Platform::SendScintilla(WindowID w, unsigned int msg, unsigned long wParam, long lParam) {
-- // This should never be called - its here to satisfy an old interface
-- return static_cast<long>(::SendMessage(static_cast<HWND>(w), msg, wParam, lParam));
--}
--
--long Platform::SendScintillaPointer(WindowID w, unsigned int msg, unsigned long wParam, void *lParam) {
-- // This should never be called - its here to satisfy an old interface
-- return static_cast<long>(::SendMessage(static_cast<HWND>(w), msg, wParam,
-- reinterpret_cast<LPARAM>(lParam)));
--}
--
--bool Platform::IsDBCSLeadByte(int codePage, char ch) {
-- // Byte ranges found in Wikipedia articles with relevant search strings in each case
-- const unsigned char uch = static_cast<unsigned char>(ch);
-- switch (codePage) {
-- case 932:
-- // Shift_jis
-- return ((uch >= 0x81) && (uch <= 0x9F)) ||
-- ((uch >= 0xE0) && (uch <= 0xEF));
-- case 936:
-- // GBK
-- return (uch >= 0x81) && (uch <= 0xFE);
-- case 949:
-- // Korean Wansung KS C-5601-1987
-- return (uch >= 0x81) && (uch <= 0xFE);
-- case 950:
-- // Big5
-- return (uch >= 0x81) && (uch <= 0xFE);
-- case 1361:
-- // Korean Johab KS C-5601-1992
-- return
-- ((uch >= 0x84) && (uch <= 0xD3)) ||
-- ((uch >= 0xD8) && (uch <= 0xDE)) ||
-- ((uch >= 0xE0) && (uch <= 0xF9));
-- }
-- return false;
--}
--
--int Platform::DBCSCharLength(int codePage, const char *s) {
-- if (codePage == 932 || codePage == 936 || codePage == 949 ||
-- codePage == 950 || codePage == 1361) {
-- return Platform::IsDBCSLeadByte(codePage, s[0]) ? 2 : 1;
-- } else {
-- return 1;
-- }
--}
--
--int Platform::DBCSCharMaxLength() {
-- return 2;
--}
--
--// These are utility functions not really tied to a platform
--
--int Platform::Minimum(int a, int b) {
-- if (a < b)
-- return a;
-- else
-- return b;
--}
--
--int Platform::Maximum(int a, int b) {
-- if (a > b)
-- return a;
-- else
-- return b;
--}
--
- //#define TRACE
-
- #ifdef TRACE
-@@ -3147,14 +3047,6 @@
- }
- }
-
--int Platform::Clamp(int val, int minVal, int maxVal) {
-- if (val > maxVal)
-- val = maxVal;
-- if (val < minVal)
-- val = minVal;
-- return val;
--}
--
- void Platform_Initialise(void *hInstance) {
- ::InitializeCriticalSection(&crPlatformLock);
- hinstPlatformRes = static_cast<HINSTANCE>(hInstance);
-diff -r 7e28cdba6d61 -r 7030530a9a0f win32/ScintillaWin.cxx
---- a/win32/ScintillaWin.cxx Sun Jun 11 14:08:43 2017 +1000
-+++ b/win32/ScintillaWin.cxx Mon Jun 12 11:49:56 2017 +1000
-@@ -156,6 +156,14 @@
- return Point::FromInts(pt.x, pt.y);
- }
-
-+static Point PointFromLong(long lpoint) {
-+ return Point(static_cast<short>(LOWORD(lpoint)), static_cast<short>(HIWORD(lpoint)));
-+}
-+
-+static bool KeyboardIsKeyDown(int key) {
-+ return (::GetKeyState(key) & 0x80000000) != 0;
-+}
-+
- class ScintillaWin; // Forward declaration for COM interface subobjects
-
- typedef void VFunction(void);
-@@ -1376,19 +1384,19 @@
- ::ImmNotifyIME(imc.hIMC, NI_COMPOSITIONSTR, CPS_COMPLETE, 0);
- //
- //Platform::DebugPrintf("Buttdown %d %x %x %x %x %x\n",iMessage, wParam, lParam,
-- // Platform::IsKeyDown(VK_SHIFT),
-- // Platform::IsKeyDown(VK_CONTROL),
-- // Platform::IsKeyDown(VK_MENU));
-+ // KeyboardIsKeyDown(VK_SHIFT),
-+ // KeyboardIsKeyDown(VK_CONTROL),
-+ // KeyboardIsKeyDown(VK_MENU));
- ::SetFocus(MainHWND());
-- ButtonDown(Point::FromLong(static_cast<long>(lParam)), ::GetMessageTime(),
-+ ButtonDown(PointFromLong(static_cast<long>(lParam)), ::GetMessageTime(),
- (wParam & MK_SHIFT) != 0,
- (wParam & MK_CONTROL) != 0,
-- Platform::IsKeyDown(VK_MENU));
-+ KeyboardIsKeyDown(VK_MENU));
- }
- break;
-
- case WM_MOUSEMOVE: {
-- const Point pt = Point::FromLong(static_cast<long>(lParam));
-+ const Point pt = PointFromLong(static_cast<long>(lParam));
-
- // Windows might send WM_MOUSEMOVE even though the mouse has not been moved:
- // http://blogs.msdn.com/b/oldnewthing/archive/2003/10/01/55108.aspx
-@@ -1397,7 +1405,7 @@
- ButtonMoveWithModifiers(pt,
- ((wParam & MK_SHIFT) != 0 ? SCI_SHIFT : 0) |
- ((wParam & MK_CONTROL) != 0 ? SCI_CTRL : 0) |
-- (Platform::IsKeyDown(VK_MENU) ? SCI_ALT : 0));
-+ (KeyboardIsKeyDown(VK_MENU) ? SCI_ALT : 0));
- }
- }
- break;
-@@ -1408,22 +1416,22 @@
- return ::DefWindowProc(MainHWND(), iMessage, wParam, lParam);
-
- case WM_LBUTTONUP:
-- ButtonUp(Point::FromLong(static_cast<long>(lParam)),
-+ ButtonUp(PointFromLong(static_cast<long>(lParam)),
- ::GetMessageTime(),
- (wParam & MK_CONTROL) != 0);
- break;
-
- case WM_RBUTTONDOWN: {
- ::SetFocus(MainHWND());
-- Point pt = Point::FromLong(static_cast<long>(lParam));
-+ Point pt = PointFromLong(static_cast<long>(lParam));
- if (!PointInSelection(pt)) {
- CancelModes();
-- SetEmptySelection(PositionFromLocation(Point::FromLong(static_cast<long>(lParam))));
-+ SetEmptySelection(PositionFromLocation(PointFromLong(static_cast<long>(lParam))));
- }
-
- RightButtonDownWithModifiers(pt, ::GetMessageTime(), ModifierFlags((wParam & MK_SHIFT) != 0,
- (wParam & MK_CONTROL) != 0,
-- Platform::IsKeyDown(VK_MENU)));
-+ KeyboardIsKeyDown(VK_MENU)));
- }
- break;
-
-@@ -1487,9 +1495,9 @@
- //Platform::DebugPrintf("S keydown %d %x %x %x %x\n",iMessage, wParam, lParam, ::IsKeyDown(VK_SHIFT), ::IsKeyDown(VK_CONTROL));
- lastKeyDownConsumed = false;
- const int ret = KeyDown(KeyTranslate(static_cast<int>(wParam)),
-- Platform::IsKeyDown(VK_SHIFT),
-- Platform::IsKeyDown(VK_CONTROL),
-- Platform::IsKeyDown(VK_MENU),
-+ KeyboardIsKeyDown(VK_SHIFT),
-+ KeyboardIsKeyDown(VK_CONTROL),
-+ KeyboardIsKeyDown(VK_MENU),
- &lastKeyDownConsumed);
- if (!ret && !lastKeyDownConsumed) {
- return ::DefWindowProc(MainHWND(), iMessage, wParam, lParam);
-@@ -1573,7 +1581,7 @@
- }
-
- case WM_CONTEXTMENU: {
-- Point pt = Point::FromLong(static_cast<long>(lParam));
-+ Point pt = PointFromLong(static_cast<long>(lParam));
- POINT rpt = {static_cast<int>(pt.x), static_cast<int>(pt.y)};
- ::ScreenToClient(MainHWND(), &rpt);
- const Point ptClient = PointFromPOINT(rpt);
-@@ -3350,7 +3358,7 @@
- return 0;
- } else if (iMessage == WM_LBUTTONDOWN) {
- // This does not fire due to the hit test code
-- sciThis->ct.MouseClick(Point::FromLong(static_cast<long>(lParam)));
-+ sciThis->ct.MouseClick(PointFromLong(static_cast<long>(lParam)));
- sciThis->CallTipClick();
- return 0;
- } else if (iMessage == WM_SETCURSOR) {
-diff -r 7e28cdba6d61 -r 7030530a9a0f win32/makefile
---- a/win32/makefile Sun Jun 11 14:08:43 2017 +1000
-+++ b/win32/makefile Mon Jun 12 11:49:56 2017 +1000
-@@ -13,7 +13,7 @@
- LDMINGW = -Wl,--enable-runtime-pseudo-reloc-v2 -Wl,--add-stdcall-alias
- LIBSMINGW = -lstdc++
- STRIPOPTION = -s
--CXXSTD = gnu++0x
-+CXXSTD = gnu++17
- endif
-
- .SUFFIXES: .cxx
-@@ -83,6 +83,7 @@
- CharacterSet.o \
- CharClassify.o \
- ContractionState.o \
-+ DBCS.o \
- Decoration.o \
- Document.o \
- EditModel.o \
-diff -r 7e28cdba6d61 -r 7030530a9a0f win32/scintilla.mak
---- a/win32/scintilla.mak Sun Jun 11 14:08:43 2017 +1000
-+++ b/win32/scintilla.mak Mon Jun 12 11:49:56 2017 +1000
-@@ -25,7 +25,7 @@
- !ENDIF
-
- CRTFLAGS=-D_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1 -D_CRT_SECURE_NO_DEPRECATE=1 -D_SCL_SECURE_NO_WARNINGS=1 $(XP_DEFINE)
--CXXFLAGS=-Zi -TP -MP -W4 -EHsc $(CRTFLAGS)
-+CXXFLAGS=-Zi -TP -MP -W4 -EHsc -std:c++latest $(CRTFLAGS)
- CXXDEBUG=-Od -MTd -DDEBUG
- CXXNDEBUG=-O1 -MT -DNDEBUG -GL
- NAME=-Fo
-@@ -75,6 +75,7 @@
- $(DIR_O)\CharacterSet.obj \
- $(DIR_O)\CharClassify.obj \
- $(DIR_O)\ContractionState.obj \
-+ $(DIR_O)\DBCS.obj \
- $(DIR_O)\Decoration.obj \
- $(DIR_O)\Document.obj \
- $(DIR_O)\EditModel.obj \