diff options
Diffstat (limited to 'dw/textblock.cc')
-rw-r--r-- | dw/textblock.cc | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/dw/textblock.cc b/dw/textblock.cc index 0958c1d2..c1886e0a 100644 --- a/dw/textblock.cc +++ b/dw/textblock.cc @@ -1470,14 +1470,15 @@ int Textblock::findLineOfWord (int wordIndex) int Textblock::findWord (int x, int y) { int lineIndex, wordIndex; - int xCursor, lastXCursor; + int xCursor, lastXCursor, yWidgetBase; Line *line; Word *word; if ((lineIndex = findLineIndex (y)) >= lines->size ()) return -1; line = lines->getRef (lineIndex); - if (lineYOffsetWidget (line) + line->ascent + line->descent <= y) + yWidgetBase = lineYOffsetWidget (line) + line->ascent; + if (yWidgetBase + line->descent <= y) return -1; xCursor = lineXOffsetWidget (line); @@ -1485,8 +1486,11 @@ int Textblock::findWord (int x, int y) word = words->getRef (wordIndex); lastXCursor = xCursor; xCursor += word->size.width + word->effSpace; - if (lastXCursor <= x && xCursor > x) + if (lastXCursor <= x && xCursor > x && + y > yWidgetBase - word->size.ascent && + y <= yWidgetBase + word->size.descent) { return wordIndex; + } } return -1; |