From 26ff566423c30d4aaaf6901b418f4fbd863ad99b Mon Sep 17 00:00:00 2001 From: Jim Mathies Date: Thu, 28 Feb 2013 13:33:24 -0600 Subject: [PATCH] Bug 846412 - Don't close selection helper until after the user makes a decision in a selection context menu. r=mbrubeck --- .../metro/base/content/BrowserTouchHandler.js | 24 ++++--------------- browser/metro/base/content/ContextCommands.js | 2 ++ browser/metro/base/content/browser.xul | 10 ++++---- .../content/helperui/SelectionHelperUI.js | 8 +++---- 4 files changed, 15 insertions(+), 29 deletions(-) diff --git a/browser/metro/base/content/BrowserTouchHandler.js b/browser/metro/base/content/BrowserTouchHandler.js index 6536ccb6d153..964f8e102690 100644 --- a/browser/metro/base/content/BrowserTouchHandler.js +++ b/browser/metro/base/content/BrowserTouchHandler.js @@ -26,26 +26,10 @@ const BrowserTouchHandler = { json: aMessage.json, target: aMessage.target }; // Touch input selection handling - if (!InputSourceHelper.isPrecise) { - if (SelectionHelperUI.isActive) { - // Selection handler is active. - if (aMessage.json.types.indexOf("selected-text") != -1) { - // long tap on existing selection. The incoming message has the - // string data, so reset the selection handler and invoke the - // context menu. - SelectionHelperUI.closeEditSession(); - } else { - // Weird, context menu request with no selected text and - // SelectionHelperUI is active? Might be a bug, warn. Fall - // through anyway, the context menu handler will look in the - // incoming message for content types it knows how to handle. - Util.dumpLn("long tap on empty selection with SelectionHelperUI active?"); - SelectionHelperUI.closeEditSession(); - } - } else if (SelectionHelperUI.canHandle(aMessage)) { - SelectionHelperUI.openEditSession(aMessage); - return; - } + if (!InputSourceHelper.isPrecise && !SelectionHelperUI.isActive && + SelectionHelperUI.canHandle(aMessage)) { + SelectionHelperUI.openEditSession(aMessage); + return; } // Check to see if we have context menu item(s) that apply to what diff --git a/browser/metro/base/content/ContextCommands.js b/browser/metro/base/content/ContextCommands.js index 9e8618cc31bb..ba9bae70c814 100644 --- a/browser/metro/base/content/ContextCommands.js +++ b/browser/metro/base/content/ContextCommands.js @@ -33,6 +33,7 @@ var ContextCommands = { this.clipboard.copyString(ContextMenuUI.popupState.string, this.docRef); this.showToast(Strings.browser.GetStringFromName("selectionHelper.textCopied")); + SelectionHelperUI.closeEditSessionAndClear(); } } else { // chrome @@ -52,6 +53,7 @@ var ContextCommands = { let y = ContextMenuUI.popupState.y; let json = {x: x, y: y, command: "paste" }; target.messageManager.sendAsyncMessage("Browser:ContextCommand", json); + SelectionHelperUI.closeEditSessionAndClear(); } else { // chrome target.editor.paste(Ci.nsIClipboard.kGlobalClipboard); diff --git a/browser/metro/base/content/browser.xul b/browser/metro/base/content/browser.xul index b787a44d1c93..593f6f58e645 100644 --- a/browser/metro/base/content/browser.xul +++ b/browser/metro/base/content/browser.xul @@ -419,7 +419,11 @@ - + + + + +