forked from jrsoftware/issrc
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Just reread JR's mail and am now thoroughly confused which file does …
…what :)
- Loading branch information
1 parent
387efcb
commit 2371841
Showing
2 changed files
with
216 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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); |