Skip to content

Commit

Permalink
Just reread JR's mail and am now thoroughly confused which file does …
Browse files Browse the repository at this point in the history
…what :)
  • Loading branch information
martijnlaan committed Jan 15, 2013
1 parent 387efcb commit 2371841
Show file tree
Hide file tree
Showing 2 changed files with 216 additions and 1 deletion.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down
215 changes: 215 additions & 0 deletions scintilla-2.22-patch.txt
Original file line number Diff line number Diff line change
@@ -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);

0 comments on commit 2371841

Please sign in to comment.