Commit 872625d5 authored by Mike Connor's avatar Mike Connor
Browse files

bug 454518 -allow opening URLs that are not linked from the context menu (if...

bug 454518 -allow opening URLs that are not linked from the context menu (if selected), r=gavin, ui-r=beltzner

--HG--
extra : rebase_source : 1b363d5cfbbcd1acbbf037485bd0367bb0a7a9b6
parent 1f4b461a
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -44,6 +44,10 @@
                accesskey="&spellAddToDictionary.accesskey;"
                oncommand="InlineSpellCheckerUI.addToDictionary();"/>
      <menuseparator id="spell-suggestions-separator"/>
      <menuitem id="context-openlinkincurrent"
                label="&openLinkCmdInCurrent.label;"
                accesskey="&openLinkCmdInCurrent.accesskey;"
                oncommand="gContextMenu.openLinkInCurrent();"/>
      <menuitem id="context-openlink"
                label="&openLinkCmd.label;"
                accesskey="&openLinkCmd.accesskey;"
+27 −1
Original line number Diff line number Diff line
@@ -143,9 +143,29 @@ nsContextMenu.prototype = {
                          mailtoHandler.preferredAction == Ci.nsIHandlerInfo.useHelperApp &&
                          (mailtoHandler.preferredApplicationHandler instanceof Ci.nsIWebHandlerApp));
    }
    var shouldShow = this.onSaveableLink || isMailtoInternal;

    // time to do some bad things and see if we've highlighted a URL that isn't actually linked
    if (this.isTextSelected) {
      // ok, we have some text, let's figure out if it looks like a URL
      var someText = document.commandDispatcher.focusedWindow
                             .getSelection().toString();
      try {
       var uri = makeURI(someText);
      }
      catch (ex) { }
 
      var onPlainTextLink = false;
      if (uri && /^(https?|ftp)/i.test(uri.scheme) && uri.host) {
        this.linkURI = uri;
        this.linkURL = this.linkURI.spec;
        onPlainTextLink = true;
      }
    }
 
    var shouldShow = this.onSaveableLink || isMailtoInternal || onPlainTextLink;
    this.showItem("context-openlink", shouldShow);
    this.showItem("context-openlinkintab", shouldShow);
    this.showItem("context-openlinkincurrent", onPlainTextLink);
    this.showItem("context-sep-open", shouldShow);
  },

@@ -655,6 +675,12 @@ nsContextMenu.prototype = {
    openNewTabWith(this.linkURL, this.target.ownerDocument, null, null, false);
  },

  // open URL in current tab
  openLinkInCurrent: function() {
    openUILinkIn(this.linkURL, "current", null, null, 
                 this.target.ownerDocument.documentURIObject);
  },

  // Open frame in a new tab.
  openFrameInTab: function() {
    var doc = this.target.ownerDocument;
+2 −0
Original line number Diff line number Diff line
@@ -235,6 +235,8 @@

<!ENTITY openLinkCmd.label            "Open Link in New Window">
<!ENTITY openLinkCmd.accesskey        "W">
<!ENTITY openLinkCmdInCurrent.label     "Open Link">
<!ENTITY openLinkCmdInCurrent.accesskey "O">
<!ENTITY openLinkCmdInTab.label       "Open Link in New Tab">
<!ENTITY openLinkCmdInTab.accesskey   "T">
<!ENTITY openFrameCmd.label           "Open Frame in New Window">