diff options
Diffstat (limited to 'dw/textblock.cc')
-rw-r--r-- | dw/textblock.cc | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/dw/textblock.cc b/dw/textblock.cc index c7f254e6..ee5d4f67 100644 --- a/dw/textblock.cc +++ b/dw/textblock.cc @@ -2013,6 +2013,31 @@ void Textblock::changeWordStyle (int from, int to, core::style::Style *style, { } +void Textblock::queueDrawRange (int index1, int index2) +{ + int from = misc::min (index1, index2); + int to = misc::max (index1, index2); + + from = misc::min (from, words->size () - 1); + from = misc::max (from, 0); + to = misc::min (to, words->size () - 1); + to = misc::max (to, 0); + + int line1idx = findLineOfWord (from); + int line2idx = findLineOfWord (to); + + if (line1idx >= 0 && line2idx >= 0) { + Line *line1 = lines->getRef (line1idx), + *line2 = lines->getRef (line2idx); + int y = lineYOffsetWidget (line1) + line1->boxAscent - + line1->contentAscent; + int h = lineYOffsetWidget (line2) + line2->boxAscent + + line2->contentDescent - y; + + queueDrawArea (0, y, allocation.width, h); + } +} + void Textblock::borderChanged (int y) { printf ("[%p] border has changed: %d\n", this, y); |