diff options
author | Sebastian Geerken <devnull@localhost> | 2013-01-13 15:21:46 +0100 |
---|---|---|
committer | Sebastian Geerken <devnull@localhost> | 2013-01-13 15:21:46 +0100 |
commit | 5797bbb234071775fe6148a29c9224c04912c8c1 (patch) | |
tree | 4bd03596f875f886f7951e43526341b128c087c7 /dw/textblock_iterator.cc | |
parent | 657daf90e9a24bfeb3c38aca2682b5f36d86dff3 (diff) | |
parent | 927887827f2a440f1f1b39e58d87b12154098d4a (diff) |
Update with main repo.
Diffstat (limited to 'dw/textblock_iterator.cc')
-rw-r--r-- | dw/textblock_iterator.cc | 24 |
1 files changed, 21 insertions, 3 deletions
diff --git a/dw/textblock_iterator.cc b/dw/textblock_iterator.cc index cfb235ac..285921b2 100644 --- a/dw/textblock_iterator.cc +++ b/dw/textblock_iterator.cc @@ -198,6 +198,11 @@ void Textblock::TextblockIterator::highlight (int start, int end, if (!oofm) { Textblock *textblock = (Textblock*)getWidget(); int index1 = index, index2 = index; + + int oldStartIndex = textblock->hlStart[layer].index; + int oldStartChar = textblock->hlStart[layer].nChar; + int oldEndIndex = textblock->hlEnd[layer].index; + int oldEndChar = textblock->hlEnd[layer].nChar; if (textblock->hlStart[layer].index > textblock->hlEnd[layer].index) { /* nothing is highlighted */ @@ -216,8 +221,12 @@ void Textblock::TextblockIterator::highlight (int start, int end, textblock->hlEnd[layer].index = index; textblock->hlEnd[layer].nChar = end; } - - textblock->queueDrawRange (index1, index2); + + if (oldStartIndex != textblock->hlStart[layer].index || + oldStartChar != textblock->hlStart[layer].nChar || + oldEndIndex != textblock->hlEnd[layer].index || + oldEndChar != textblock->hlEnd[layer].nChar) + textblock->queueDrawRange (index1, index2); } // TODO What about OOF widgets? @@ -233,6 +242,11 @@ void Textblock::TextblockIterator::unhighlight (int direction, if (textblock->hlStart[layer].index > textblock->hlEnd[layer].index) return; + int oldStartIndex = textblock->hlStart[layer].index; + int oldStartChar = textblock->hlStart[layer].nChar; + int oldEndIndex = textblock->hlEnd[layer].index; + int oldEndChar = textblock->hlEnd[layer].nChar; + if (direction == 0) { index1 = textblock->hlStart[layer].index; index2 = textblock->hlEnd[layer].index; @@ -248,7 +262,11 @@ void Textblock::TextblockIterator::unhighlight (int direction, textblock->hlEnd[layer].nChar = INT_MAX; } - textblock->queueDrawRange (index1, index2); + if (oldStartIndex != textblock->hlStart[layer].index || + oldStartChar != textblock->hlStart[layer].nChar || + oldEndIndex != textblock->hlEnd[layer].index || + oldEndChar != textblock->hlEnd[layer].nChar) + textblock->queueDrawRange (index1, index2); } // TODO What about OOF widgets? |