From 23718419f366e7d706b35702741b49363c5d3b67 Mon Sep 17 00:00:00 2001 From: Martijn Laan Date: Tue, 15 Jan 2013 08:48:00 +0100 Subject: [PATCH] Just reread JR's mail and am now thoroughly confused which file does what :) --- README.md | 2 +- scintilla-2.22-patch.txt | 215 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 216 insertions(+), 1 deletion(-) create mode 100644 scintilla-2.22-patch.txt diff --git a/README.md b/README.md index 488b55dd6..3c354e4c8 100644 --- a/README.md +++ b/README.md @@ -255,7 +255,7 @@ from the zlib-dll directory in the Iscompress repository. by Visual Studio 2005 from the Projects\lzma2\Encoder directory. **Files\isscint.dll** - Compiled by Visual Studio 2005 from Scintila 2.22 source -code with scintilla-patch.txt applied. +code with scintilla-2.22-patch.txt applied. **Projects\\_shfolder.res** - shfolder.dll from a fresh install of IE 5.5 SP2 on NT 4.0 stored in a compiled resource file. diff --git a/scintilla-2.22-patch.txt b/scintilla-2.22-patch.txt new file mode 100644 index 000000000..cc5911ec3 --- /dev/null +++ b/scintilla-2.22-patch.txt @@ -0,0 +1,215 @@ +diff -ur scintilla-ORIG\include\Scintilla.h scintilla\include\Scintilla.h +--- scintilla-ORIG\include\Scintilla.h Wed Oct 27 10:45:10 2010 ++++ scintilla\include\Scintilla.h Sat Oct 30 13:34:26 2010 +@@ -124,6 +124,7 @@ + #define SC_MARK_LEFTRECT 27 + #define SC_MARK_AVAILABLE 28 + #define SC_MARK_UNDERLINE 29 ++#define SC_MARK_BACKFORE 3030 + #define SC_MARK_CHARACTER 10000 + #define SC_MARKNUM_FOLDEREND 25 + #define SC_MARKNUM_FOLDEROPENMID 26 +@@ -166,6 +167,7 @@ + #define STYLE_CONTROLCHAR 36 + #define STYLE_INDENTGUIDE 37 + #define STYLE_CALLTIP 38 ++#define STYLE_AUTOCOMPLETION 39 + #define STYLE_LASTPREDEFINED 39 + #define STYLE_MAX 255 + #define SC_CHARSET_ANSI 0 +diff -ur scintilla-ORIG\src\AutoComplete.cxx scintilla\src\AutoComplete.cxx +--- scintilla-ORIG\src\AutoComplete.cxx Wed Oct 27 10:45:10 2010 ++++ scintilla\src\AutoComplete.cxx Sat Oct 30 13:34:26 2010 +@@ -132,7 +132,7 @@ + char item[maxItemLen]; + int start = 0; // lower bound of the api array block to search + int end = lb->Length() - 1; // upper bound of the api array block to search +- while ((start <= end) && (location == -1)) { // Binary searching loop ++ while (lenWord && (start <= end) && (location == -1)) { // Binary searching loop + int pivot = (start + end) / 2; + lb->GetValue(pivot, item, maxItemLen); + int cond; +diff -ur scintilla-ORIG\src\Editor.cxx scintilla\src\Editor.cxx +--- scintilla-ORIG\src\Editor.cxx Wed Oct 27 10:45:10 2010 ++++ scintilla\src\Editor.cxx Sat Oct 30 13:34:26 2010 +@@ -114,6 +114,7 @@ + printColourMode = SC_PRINT_NORMAL; + printWrapState = eWrapWord; + cursorMode = SC_CURSORNORMAL; ++ reverseArrowInMargin = false; + controlCharSymbol = 0; /* Draw the control characters */ + + hasFocus = false; +@@ -2619,7 +2620,8 @@ + if (!overrideBackground) { + int marks = pdoc->GetMark(line); + for (int markBit = 0; (markBit < 32) && marks; markBit++) { +- if ((marks & 1) && (vsDraw.markers[markBit].markType == SC_MARK_BACKGROUND) && ++ if ((marks & 1) && ((vsDraw.markers[markBit].markType == SC_MARK_BACKGROUND) || ++ (vsDraw.markers[markBit].markType == SC_MARK_BACKFORE)) && + (vsDraw.markers[markBit].alpha == SC_ALPHA_NOALPHA)) { + background = vsDraw.markers[markBit].back.allocated; + overrideBackground = true; +@@ -2839,6 +2841,15 @@ + if (vsDraw.hotspotForegroundSet) + textFore = vsDraw.hotspotForeground.allocated; + } ++ ++ marks = pdoc->GetMark(line); ++ for (markBit = 0; (markBit < 32) && marks; markBit++) { ++ if ((marks & 1) && (vsDraw.markers[markBit].markType == SC_MARK_BACKFORE)) { ++ textFore = vsDraw.markers[markBit].fore.allocated; ++ } ++ marks >>= 1; ++ } ++ + const int inSelection = hideSelection ? 0 : sel.CharacterInSelection(iDoc); + if (inSelection && (vsDraw.selforeset)) { + textFore = (inSelection == 1) ? vsDraw.selforeground.allocated : vsDraw.selAdditionalForeground.allocated; +@@ -3050,7 +3061,8 @@ + } + marks = pdoc->GetMark(line); + for (markBit = 0; (markBit < 32) && marks; markBit++) { +- if ((marks & 1) && (vsDraw.markers[markBit].markType == SC_MARK_BACKGROUND)) { ++ if ((marks & 1) && ((vsDraw.markers[markBit].markType == SC_MARK_BACKGROUND) || ++ (vsDraw.markers[markBit].markType == SC_MARK_BACKFORE))) { + SimpleAlphaRectangle(surface, rcSegment, vsDraw.markers[markBit].back.allocated, vsDraw.markers[markBit].alpha); + } else if ((marks & 1) && (vsDraw.markers[markBit].markType == SC_MARK_UNDERLINE)) { + PRectangle rcUnderline = rcSegment; +@@ -6151,7 +6163,7 @@ + } else { + if (vs.fixedColumnWidth > 0) { // There is a margin + if (PointInSelMargin(pt)) { +- DisplayCursor(Window::cursorReverseArrow); ++ DisplayCursor(reverseArrowInMargin ? Window::cursorReverseArrow : Window::cursorArrow); + SetHotSpotRange(NULL); + return; // No need to test for selection + } +diff -ur scintilla-ORIG\src\Editor.h scintilla\src\Editor.h +--- scintilla-ORIG\src\Editor.h Wed Oct 27 10:45:10 2010 ++++ scintilla\src\Editor.h Sat Oct 30 13:34:26 2010 +@@ -137,6 +137,7 @@ + int printColourMode; + int printWrapState; + int cursorMode; ++ bool reverseArrowInMargin; + int controlCharSymbol; + + bool hasFocus; +diff -ur scintilla-ORIG\src\LineMarker.cxx scintilla\src\LineMarker.cxx +--- scintilla-ORIG\src\LineMarker.cxx Wed Oct 27 10:45:10 2010 ++++ scintilla\src\LineMarker.cxx Sat Oct 30 13:34:26 2010 +@@ -155,7 +155,8 @@ + surface->RectangleDraw(rcSmall, fore.allocated, back.allocated); + + } else if (markType == SC_MARK_EMPTY || markType == SC_MARK_BACKGROUND || +- markType == SC_MARK_UNDERLINE || markType == SC_MARK_AVAILABLE) { ++ markType == SC_MARK_UNDERLINE || markType == SC_MARK_AVAILABLE || ++ markType == SC_MARK_BACKFORE) { + // An invisible marker so don't draw anything + + } else if (markType == SC_MARK_VLINE) { +diff -ur scintilla-ORIG\src\ScintillaBase.cxx scintilla\src\ScintillaBase.cxx +--- scintilla-ORIG\src\ScintillaBase.cxx Wed Oct 27 10:45:10 2010 ++++ scintilla\src\ScintillaBase.cxx Sat Oct 30 13:34:26 2010 +@@ -220,7 +220,7 @@ + } + } + ac.Start(wMain, idAutoComplete, sel.MainCaret(), PointMainCaret(), +- lenEntered, vs.lineHeight, IsUnicodeMode()); ++ lenEntered, vs.styles[STYLE_AUTOCOMPLETION].lineHeight, IsUnicodeMode()); + + PRectangle rcClient = GetClientRectangle(); + Point pt = LocationFromPosition(sel.MainCaret() - lenEntered); +@@ -250,8 +250,8 @@ + rcac.right = rcac.left + widthLB; + rcac.bottom = Platform::Minimum(rcac.top + heightLB, rcPopupBounds.bottom); + ac.lb->SetPositionRelative(rcac, wMain); +- ac.lb->SetFont(vs.styles[STYLE_DEFAULT].font); +- unsigned int aveCharWidth = vs.styles[STYLE_DEFAULT].aveCharWidth; ++ ac.lb->SetFont(vs.styles[STYLE_AUTOCOMPLETION].font); ++ unsigned int aveCharWidth = vs.styles[STYLE_AUTOCOMPLETION].aveCharWidth; + ac.lb->SetAverageCharWidth(aveCharWidth); + ac.lb->SetDoubleClickAction(AutoCompleteDoubleClick, this); + +@@ -275,9 +275,7 @@ + rcList.bottom = rcList.top + heightAlloced; + ac.lb->SetPositionRelative(rcList, wMain); + ac.Show(true); +- if (lenEntered != 0) { +- AutoCompleteMoveToCurrentWord(); +- } ++ AutoCompleteMoveToCurrentWord(); + } + + void ScintillaBase::AutoCompleteCancel() { +@@ -299,7 +297,10 @@ + char wordCurrent[1000]; + int i; + int startWord = ac.posStart - ac.startLen; +- for (i = startWord; i < sel.MainCaret() && i - startWord < 1000; i++) ++ int endWord = sel.MainCaret(); ++ //if (ac.selectRestOfWord) ++ endWord = pdoc->ExtendWordSelect(endWord, 1, true); ++ for (i = startWord; i < endWord && i - startWord < 1000; i++) + wordCurrent[i - startWord] = pdoc->CharAt(i); + wordCurrent[Platform::Minimum(i - startWord, 999)] = '\0'; + ac.Select(wordCurrent); +diff -ur scintilla-ORIG\src\ViewStyle.cxx scintilla\src\ViewStyle.cxx +--- scintilla-ORIG\src\ViewStyle.cxx Wed Oct 27 10:45:10 2010 ++++ scintilla\src\ViewStyle.cxx Sat Oct 30 13:34:26 2010 +@@ -301,9 +301,9 @@ + for (unsigned int i=0; i