diff options
author | corvid <corvid@lavabit.com> | 2009-09-19 17:31:28 +0000 |
---|---|---|
committer | corvid <corvid@lavabit.com> | 2009-09-19 17:31:28 +0000 |
commit | e6ddb22eb045bbe5b1be4321baa822ef6762f560 (patch) | |
tree | d3f6c95af96d88561c6f3bfaab420a56c53a6c79 | |
parent | 9afc1d563e8af7118c36e4b4f5fc779236f5645d (diff) |
use word extremes in findWord()
-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; |