Prechádzať zdrojové kódy

Just reread JR's mail and am now thoroughly confused which file does what :)

Martijn Laan 12 rokov pred
rodič
commit
23718419f3
2 zmenil súbory, kde vykonal 216 pridanie a 1 odobranie
  1. 1 1
      README.md
  2. 215 0
      scintilla-2.22-patch.txt

+ 1 - 1
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.

+ 215 - 0
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<stylesSize; i++) {
+ 		if (i != STYLE_DEFAULT) {
+ 			styles[i].Realise(surface, zoomLevel, &styles[STYLE_DEFAULT], extraFontFlag);
+-			if (maxAscent < styles[i].ascent)
++			if (maxAscent < styles[i].ascent && i != STYLE_AUTOCOMPLETION)
+ 				maxAscent = styles[i].ascent;
+-			if (maxDescent < styles[i].descent)
++			if (maxDescent < styles[i].descent && i != STYLE_AUTOCOMPLETION)
+ 				maxDescent = styles[i].descent;
+ 		}
+ 		if (styles[i].IsProtected()) {
+diff -ur scintilla-ORIG\win32\PlatWin.cxx scintilla\win32\PlatWin.cxx
+--- scintilla-ORIG\win32\PlatWin.cxx	Wed Oct 27 10:45:10 2010
++++ scintilla\win32\PlatWin.cxx	Sat Oct 30 13:34:26 2010
+@@ -1367,7 +1367,7 @@
+ };
+ 
+ const Point ListBoxX::ItemInset(0, 0);
+-const Point ListBoxX::TextInset(2, 0);
++const Point ListBoxX::TextInset(2, 1);
+ const Point ListBoxX::ImageInset(1, 0);
+ 
+ ListBox *ListBox::Allocate() {
+diff -ur scintilla-ORIG\win32\ScintillaWin.cxx scintilla\win32\ScintillaWin.cxx
+--- scintilla-ORIG\win32\ScintillaWin.cxx	Wed Oct 27 10:45:10 2010
++++ scintilla\win32\ScintillaWin.cxx	Sat Oct 30 13:34:26 2010
+@@ -697,7 +697,9 @@
+ 
+ 		case WM_TIMER:
+ 			if (wParam == standardTimerID && timer.ticking) {
+-				Tick();
++				HWND capWnd = ::GetCapture();
++				if (!capWnd || capWnd == MainHWND())
++					Tick();
+ 			} else if (wParam == idleTimerID && idler.state) {
+ 				SendMessage(MainHWND(), SC_WIN_IDLE, 0, 1);
+ 			} else {
+@@ -784,7 +786,7 @@
+ 					::GetCursorPos(&pt);
+ 					::ScreenToClient(MainHWND(), &pt);
+ 					if (PointInSelMargin(Point(pt.x, pt.y))) {
+-						DisplayCursor(Window::cursorReverseArrow);
++						DisplayCursor(reverseArrowInMargin ? Window::cursorReverseArrow : Window::cursorArrow);
+ 					} else if (PointInSelection(Point(pt.x, pt.y)) && !SelectionEmpty()) {
+ 						DisplayCursor(Window::cursorArrow);
+ 					} else if (PointIsHotspot(Point(pt.x, pt.y))) {
+@@ -883,6 +885,7 @@
+ 					!(::IsChild(wThis, wOther) || (wOther == wCT))) {
+ 					SetFocusState(false);
+ 					DestroySystemCaret();
++					SetTicking(false);
+ 				}
+ 			}
+ 			//RealizeWindowPalette(true);