[BUG_FIXED] (Author: Neomi) Fix text flickering due to line number pane size adaptation.

git-svn-id: svn://svn.tuxfamily.org/svnroot/notepadplus/repository/trunk@1162 f5eea248-9336-0410-98b8-ebc06183d4e3
remotes/trunk
Don Ho 11 years ago
parent bbe9bff592
commit 3fc26bbcf8

@ -2112,6 +2112,47 @@ void ScintillaEditView::setLineIndent(int line, int indent) const {
execute(SCI_SETSEL, crange.cpMin, crange.cpMax);
}
void ScintillaEditView::updateLineNumberWidth()
{
if (_lineNumbersShown)
{
int linesVisible = (int) execute(SCI_LINESONSCREEN);
if (linesVisible)
{
int firstVisibleLineVis = (int) execute(SCI_GETFIRSTVISIBLELINE);
int lastVisibleLineVis = linesVisible + firstVisibleLineVis + 1;
if (execute(SCI_GETWRAPMODE) != SC_WRAP_NONE)
{
int numLinesDoc = (int) execute(SCI_GETLINECOUNT);
int prevLineDoc = (int) execute(SCI_DOCLINEFROMVISIBLE, firstVisibleLineVis);
for (int i = firstVisibleLineVis + 1; i <= lastVisibleLineVis; ++i)
{
int lineDoc = (int) execute(SCI_DOCLINEFROMVISIBLE, i);
if (lineDoc == numLinesDoc)
break;
if (lineDoc == prevLineDoc)
lastVisibleLineVis++;
prevLineDoc = lineDoc;
}
}
int lastVisibleLineDoc = (int) execute(SCI_DOCLINEFROMVISIBLE, lastVisibleLineVis);
int i = 0;
while (lastVisibleLineDoc)
{
lastVisibleLineDoc /= 10;
++i;
}
i = max(i, 3);
int pixelWidth = int(8 + i * execute(SCI_TEXTWIDTH, STYLE_LINENUMBER, (LPARAM)"8"));
execute(SCI_SETMARGINWIDTHN, _SC_MARGE_LINENUMBER, pixelWidth);
}
}
}
const char * ScintillaEditView::getCompleteKeywordList(std::basic_string<char> & kwl, LangType langType, int keywordIndex)
{
kwl += " ";

@ -516,29 +516,7 @@ public:
}
}
void updateLineNumberWidth() {
if (_lineNumbersShown)
{
int linesVisible = (int) execute(SCI_LINESONSCREEN);
if (linesVisible)
{
int firstVisibleLineVis = (int) execute(SCI_GETFIRSTVISIBLELINE);
int lastVisibleLineVis = linesVisible + firstVisibleLineVis + 1;
int lastVisibleLineDoc = (int) execute(SCI_DOCLINEFROMVISIBLE, lastVisibleLineVis);
int i = 0;
while (lastVisibleLineDoc)
{
lastVisibleLineDoc /= 10;
++i;
}
i = max(i, 3);
{
int pixelWidth = int(8 + i * execute(SCI_TEXTWIDTH, STYLE_LINENUMBER, (LPARAM)"8"));
execute(SCI_SETMARGINWIDTHN, _SC_MARGE_LINENUMBER, pixelWidth);
}
}
}
};
void updateLineNumberWidth();
void setCurrentLineHiLiting(bool isHiliting, COLORREF bgColor) const {
execute(SCI_SETCARETLINEVISIBLE, isHiliting);

Loading…
Cancel
Save