From 80b1476aa299ecc4592f46126fdf415a3907a4e8 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Sun, 11 May 2014 10:32:24 +0530 Subject: [PATCH] Make word under cursor detection more robust --- resources/compiled_coffeescript.zip | Bin 82255 -> 82522 bytes src/calibre/ebooks/oeb/display/utils.coffee | 15 +++++++++++---- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/resources/compiled_coffeescript.zip b/resources/compiled_coffeescript.zip index 8c6e6f223bdfc0115cd45159b04c3260b6ceef38..5ff693817a9fc5f1935ca1fae37be1d8f16dc397 100644 GIT binary patch delta 440 zcmX@##CofRb;Iu;d>?~XyA-QV;od69z_3+t^1K<6)92bVa%|T6d5xDhF|SxhAvduk zIU}`LXZn9O#vhs*dHE@+3W~N0d8Iiy3ib*ht{#X8sVqoUuu>??&rDG;&{R;IE-lF@ zJ2|pndb%A4W8UQN!F-dMTt&I_)6$AlOEj&y6ci@^6O^3(n1fMxvS70m8^}CsuF3y} zM5q7ZU=*td+O1%#P?VULo~l=pA6!zDnU}7isRyKUHNe^xfB+($l3J3OoPiL9x)`V( zXoy~MK~83ghJH+vK3rR7nt}#YkzP(}UV2G}f*r`w)j(H4KoNgxNoi3Y%=6I(lLK!` z0evGmdH-sT$(dPv+g&*sZyKWo-*g>Y#z^M-T#VB{ax%(HUt-Is#pEI~{emr{H?xQ; zSX6krp&g?XQ;f}aUpvMaMh%OU)YKF+qZ9+2Y?99GkU%UgMq4$IkejH!nXW zRS!gjR2HO8*WqAXG5rw-qsn9!A>rxLoQ%TLV>uaR#EVi(N{jLoiW2kEQ}s&ngG-7s z^U^gmCr4+=Y!BdKylISP({yt?#z^KXoQ%^GMSy1Tb2D;IUvI~##cU}I7E+l02gKu4 zVVrKL$|yVC&7M(!BhZ?W;U81A(&WZcx$QOfj24UFu diff --git a/src/calibre/ebooks/oeb/display/utils.coffee b/src/calibre/ebooks/oeb/display/utils.coffee index 8ba0f9653e..ab35e1bad9 100644 --- a/src/calibre/ebooks/oeb/display/utils.coffee +++ b/src/calibre/ebooks/oeb/display/utils.coffee @@ -109,15 +109,22 @@ class CalibreUtils if range == null return null node = range.startContainer - if node.nodeType != Node.TEXT_NODE + if node?.nodeType != Node.TEXT_NODE return null offset = range.startOffset range = document.createRange() range.selectNodeContents(node) - range.setStart(node, offset) - range.setEnd(node, offset+1) + try + range.setStart(node, offset) + range.setEnd(node, offset+1) + catch error # Happens if offset is invalid + null range.expand('word') - return range.toString() + ans = range.toString().trim() + range.detach() + matches = ans.split(/\b/) + return if matches.length > 0 then matches[0] else null + # }}} if window?