From 35fce59f65c02414af6cf0fcdc698c61ae0f8b47 Mon Sep 17 00:00:00 2001
From: mitchell <70453897+667e-11@users.noreply.github.com>
Date: Sun, 18 Feb 2018 10:41:51 -0500
Subject: Backported bugfixes and changes from Scintilla 4.0.2 to 4.0.3.
---
src/scintilla_backports/6425_73343682cbda.patch | 168 ++++++++++++++++++++++++
1 file changed, 168 insertions(+)
create mode 100644 src/scintilla_backports/6425_73343682cbda.patch
(limited to 'src/scintilla_backports/6425_73343682cbda.patch')
diff --git a/src/scintilla_backports/6425_73343682cbda.patch b/src/scintilla_backports/6425_73343682cbda.patch
new file mode 100644
index 00000000..80225666
--- /dev/null
+++ b/src/scintilla_backports/6425_73343682cbda.patch
@@ -0,0 +1,168 @@
+# HG changeset patch
+# User Neil
+# Date 1513656040 -39600
+# Node ID 73343682cbda0937c5427ee45ea6c9104d97ac1e
+# Parent 5246ca55cf2443dbd6d37bc6dfede6d5f3a14a36
+Start of bidirectional code - implement SCI_SETBIDIRECTIONAL.
+
+diff -r 5246ca55cf24 -r 73343682cbda doc/ScintillaDoc.html
+--- a/doc/ScintillaDoc.html Wed Jan 10 10:04:03 2018 +1100
++++ b/doc/ScintillaDoc.html Tue Dec 19 15:00:40 2017 +1100
+@@ -119,7 +119,7 @@
+
+ Scintilla Documentation
+
+- Last edited 11 August 2017 NH
++ Last edited 10 January 2018 NH
+
+ There is an overview of the internal design of
+ Scintilla.
+@@ -3594,6 +3594,10 @@
+ SCI_GETCODEPAGE → int
+ SCI_SETIMEINTERACTION(int imeInteraction)
+ SCI_GETIMEINTERACTION → int
++
+ SCI_GRABFOCUS
+ SCI_SETFOCUS(bool focus)
+ SCI_GETFOCUS → bool
+@@ -3718,6 +3722,27 @@
+ and the inline behaviour with SCI_SETIMEINTERACTION(SC_IME_INLINE)
.
+ Scintilla may ignore this call in some cases. For example, the inline behaviour might only be supported for some languages.
+
++
++
These bidirectional features are not yet implemented and the API is provisional
++
SCI_SETBIDIRECTIONAL(int bidirectional)
++ SCI_GETBIDIRECTIONAL → int
++ Some languages, like Arabic and Hebrew, are written from right to left instead of from left to right as English is.
++ Documents that use multiple languages may contain both directions and this is termed "bidirectional".
++ The default text direction may be right to left or left to right.
++ Scintilla only correctly displays bidirectional text on some platforms and there can be additional processing and storage
++ costs to this.
++ Currently, bidirectional text only works on Win32 using DirectWrite.
++ As some applications may not want to pay the costs, bidirectional support must be explicitly enabled by calling
++ SCI_SETBIDIRECTIONAL(SC_BIDIRECTIONAL_L2R)
(1) which chooses left to right as the default direction or
++ SCI_SETBIDIRECTIONAL(SC_BIDIRECTIONAL_R2L)
(2) for default right to left.
++ This should be done after setting the technology to SC_TECHNOLOGY_DIRECTWRITE
,
++ SC_TECHNOLOGY_DIRECTWRITERETAIN
, or
++ SC_TECHNOLOGY_DIRECTWRITEDC
.
++
If the call succeeded SCI_GETBIDIRECTIONAL
will return the same value otherwise
++ SC_BIDIRECTIONAL_DISABLED
(0) is returned.
++
++
++
+ SCI_GRABFOCUS
+ SCI_SETFOCUS(bool focus)
+ SCI_GETFOCUS → bool
+@@ -8073,8 +8098,6 @@
+
+
Provisional features are displayed in this document with a distinctive background colour.
+
+- There are currently no provisional messages or values.
+-
+ Some developers may want to only use features that are stable and have graduated from
+ provisional status. To avoid using provisional messages compile with the symbol
+ SCI_DISABLE_PROVISIONAL
defined.
+diff -r 5246ca55cf24 -r 73343682cbda include/Scintilla.h
+--- a/include/Scintilla.h Wed Jan 10 10:04:03 2018 +1100
++++ b/include/Scintilla.h Tue Dec 19 15:00:40 2017 +1100
+@@ -1103,5 +1103,12 @@
+ #define SCN_AUTOCCOMPLETED 2030
+ #define SCN_MARGINRIGHTCLICK 2031
++#ifndef SCI_DISABLE_PROVISIONAL
++#define SC_BIDIRECTIONAL_DISABLED 0
++#define SC_BIDIRECTIONAL_L2R 1
++#define SC_BIDIRECTIONAL_R2L 2
++#define SCI_GETBIDIRECTIONAL 2708
++#define SCI_SETBIDIRECTIONAL 2709
++#endif
+ /* --Autogenerated -- end of section automatically generated from Scintilla.iface */
+
+ /* These structures are defined to be exactly the same shape as the Win32
+diff -r 5246ca55cf24 -r 73343682cbda include/Scintilla.iface
+--- a/include/Scintilla.iface Wed Jan 10 10:04:03 2018 +1100
++++ b/include/Scintilla.iface Tue Dec 19 15:00:40 2017 +1100
+@@ -4861,9 +4861,18 @@
+ evt void MarginRightClick=2031(int modifiers, int position, int margin)
+
+-# There are no provisional APIs currently, but some arguments to SCI_SETTECHNOLOGY are provisional.
+-
+ cat Provisional
+
++enu Bidirectional=SC_BIDIRECTIONAL_
++val SC_BIDIRECTIONAL_DISABLED=0
++val SC_BIDIRECTIONAL_L2R=1
++val SC_BIDIRECTIONAL_R2L=2
++
++# Retrieve bidirectional text display state.
++get int GetBidirectional=2708(,)
++
++# Set bidirectional text display state.
++set void SetBidirectional=2709(int bidirectional,)
++
+ cat Deprecated
+
+ # Divide each styling byte into lexical class bits (default: 5) and indicator
+diff -r 5246ca55cf24 -r 73343682cbda src/EditModel.cxx
+--- a/src/EditModel.cxx Wed Jan 10 10:04:03 2018 +1100
++++ b/src/EditModel.cxx Tue Dec 19 15:00:40 2017 +1100
+@@ -63,6 +63,7 @@
+ highlightGuideColumn = 0;
+ primarySelection = true;
+ imeInteraction = imeWindowed;
++ bidirectional = Bidirectional::bidiDisabled;
+ foldFlags = 0;
+ foldDisplayTextStyle = SC_FOLDDISPLAYTEXT_HIDDEN;
+ hotspot = Range(Sci::invalidPosition);
+diff -r 5246ca55cf24 -r 73343682cbda src/EditModel.h
+--- a/src/EditModel.h Wed Jan 10 10:04:03 2018 +1100
++++ b/src/EditModel.h Tue Dec 19 15:00:40 2017 +1100
+@@ -38,6 +38,8 @@
+
+ enum IMEInteraction { imeWindowed, imeInline } imeInteraction;
+
++ enum class Bidirectional { bidiDisabled, bidiL2R, bidiR2L } bidirectional;
++
+ int foldFlags;
+ int foldDisplayTextStyle;
+ ContractionState cs;
+diff -r 5246ca55cf24 -r 73343682cbda src/Editor.cxx
+--- a/src/Editor.cxx Wed Jan 10 10:04:03 2018 +1100
++++ b/src/Editor.cxx Tue Dec 19 15:00:40 2017 +1100
+@@ -6736,6 +6736,13 @@
+ case SCI_GETIMEINTERACTION:
+ return imeInteraction;
+
++ case SCI_SETBIDIRECTIONAL:
++ // SCI_SETBIDIRECTIONAL is implemented on platform subclasses if they support bidirectional text.
++ break;
++
++ case SCI_GETBIDIRECTIONAL:
++ return static_cast(bidirectional);
++
+ // Marker definition and setting
+ case SCI_MARKERDEFINE:
+ if (wParam <= MARKER_MAX) {
+diff -r 5246ca55cf24 -r 73343682cbda win32/ScintillaWin.cxx
+--- a/win32/ScintillaWin.cxx Wed Jan 10 10:04:03 2018 +1100
++++ b/win32/ScintillaWin.cxx Tue Dec 19 15:00:40 2017 +1100
+@@ -1744,6 +1744,17 @@
+ }
+ break;
+
++ case SCI_SETBIDIRECTIONAL:
++ if (technology == SC_TECHNOLOGY_DEFAULT) {
++ bidirectional = EditModel::Bidirectional::bidiDisabled;
++ } else if ((wParam >= SC_BIDIRECTIONAL_DISABLED) && (wParam <= SC_BIDIRECTIONAL_R2L)) {
++ bidirectional = static_cast(wParam);
++ }
++ // Invalidate all cached information including layout.
++ DropGraphics(true);
++ InvalidateStyleRedraw();
++ break;
++
+ #ifdef SCI_LEXER
+ case SCI_LOADLEXERLIBRARY:
+ LexerManager::GetInstance()->Load(reinterpret_cast(lParam));
--
cgit v1.2.3