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_SETBIDIRECTIONAL(int bidirectional)
++ SCI_GETBIDIRECTIONAL → 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