From de52468e51a0b09ab19038bf383bb7a509ed10a0 Mon Sep 17 00:00:00 2001 From: wareya Date: Thu, 2 May 2019 09:35:07 -0400 Subject: [PATCH] finish selection options --- options.js | 2 +- texthook.js | 38 ++++++++++++++++++++------------------ 2 files changed, 21 insertions(+), 19 deletions(-) diff --git a/options.js b/options.js index 608f0c8..a9e85bd 100644 --- a/options.js +++ b/options.js @@ -133,7 +133,7 @@ function defaults() id: "only_selection", kind: "checkbox", default: false, - label: "Only look up text when mousing over selection" + label: "Only look up text when mousing over selection (only when something is selected, setting ignored otherwise)" }); // display diff --git a/texthook.js b/texthook.js index 7864f4c..cd75975 100644 --- a/texthook.js +++ b/texthook.js @@ -1407,6 +1407,22 @@ function selection_filter_enabled(selection) return true; } +function selection_rejects_node(selection, textNode, offset) +{ + if(!selection) + return false; + if(selection + "" == "") + return false; + let range = selection.getRangeAt(0); + try + { + if(!range.isPointInRange(textNode, offset) || !range.isPointInRange(textNode, offset+1)) + return true; + } + catch(e){} + return false; +} + function selection_clip_node_with_offsets(node, selection) { if (!selection_filter_enabled(selection)) @@ -1580,6 +1596,9 @@ function grab_text(textNode, offset, elemental) { let selection = window.getSelection(); + if(selection_filter_enabled(selection) && selection_rejects_node(selection, textNode, offset)) + selection = undefined; + let text = ""; let moreText = ""; if(elemental) @@ -1797,26 +1816,9 @@ function update(event) catch (err){} } - function selection_rejects_node(textNode, offset) - { - let selection = window.getSelection(); - if(!selection) - return false; - if(selection + "" == "") - return false; - let range = selection.getRangeAt(0); - try - { - if(!range.isPointInRange(textNode, offset) || !range.isPointInRange(textNode, offset+1)) - return true; - } - catch(e){} - return false; - } - if (settings.only_selection) { - if(selection_rejects_node(textNode, offset)) + if(selection_rejects_node(window.getSelection(), textNode, offset)) { lookup_cancel(); return;