From 2a3354d3876fe037a5cd934b9c5fa685560ad109 Mon Sep 17 00:00:00 2001 From: Mark Finkle Date: Wed, 13 Jul 2011 14:59:38 -0400 Subject: [PATCH] Bug 667062 - Content text selection highlight should match Gingerbread theming style [r=wjohnston] --- mobile/chrome/content/content.js | 35 ++++++++++++++++++---- mobile/themes/core/gingerbread/content.css | 5 ++++ 2 files changed, 35 insertions(+), 5 deletions(-) diff --git a/mobile/chrome/content/content.js b/mobile/chrome/content/content.js index ed2673fb5af5..f81682a7aa73 100644 --- a/mobile/chrome/content/content.js +++ b/mobile/chrome/content/content.js @@ -1331,6 +1331,7 @@ TouchEventHandler.init(); var SelectionHandler = { cache: {}, + selectedText: "", init: function() { addMessageListener("Browser:SelectionStart", this); @@ -1345,6 +1346,8 @@ var SelectionHandler = { switch (aMessage.name) { case "Browser:SelectionStart": { + this.selectedText = ""; + // Position the caret using a fake mouse click utils.sendMouseEventToWindow("mousedown", json.x - scrollOffset.x, json.y - scrollOffset.y, 0, 1, 0, true); utils.sendMouseEventToWindow("mouseup", json.x - scrollOffset.x, json.y - scrollOffset.y, 0, 1, 0, true); @@ -1365,6 +1368,18 @@ var SelectionHandler = { return; let range = selection.getRangeAt(0).QueryInterface(Ci.nsIDOMNSRange); + if (!range) + return; + + // Cache the selected text since the selection might be gone by the time we get the "end" message + this.selectedText = selection.toString().trim(); + + // If the range didn't have any text, let's bail + if (!this.selectedText.length) { + selection.collapseToStart(); + return; + } + this.cache = { start: {}, end: {} }; let rects = range.getClientRects(); for (let i=0; i