From 065c7de944f512aa4df807146dcf65f977b708f2 Mon Sep 17 00:00:00 2001 From: piro Date: Wed, 24 Mar 2010 18:21:32 +0000 Subject: [PATCH] =?UTF-8?q?=E3=83=AA=E3=83=B3=E3=82=AF=E3=81=AE=E3=83=89?= =?UTF-8?q?=E3=83=AD=E3=83=83=E3=83=97=E3=82=82=E3=83=8F=E3=83=B3=E3=83=89?= =?UTF-8?q?=E3=83=AB=E3=81=99=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://www.cozmixng.org/repos/piro/treestyletab/trunk@6431 599a83e7-65a4-db11-8015-0010dcdd6dc2 --- content/treestyletab/treestyletab.js | 56 ++++++++++++++++++++++++++-- 1 file changed, 53 insertions(+), 3 deletions(-) diff --git a/content/treestyletab/treestyletab.js b/content/treestyletab/treestyletab.js index a364d61a..477a2416 100644 --- a/content/treestyletab/treestyletab.js +++ b/content/treestyletab/treestyletab.js @@ -690,15 +690,15 @@ catch(e) { return; } } - if (!draggedTab) - return; - if (sv.performDrop(dropActionInfo, draggedTab)) { + if (draggedTab && sv.performDrop(dropActionInfo, draggedTab)) { aEvent.stopPropagation(); return; } + // duplicating of tabs if ( + draggedTab && ( dt.dropEffect == 'copy' || draggedTab.parentNode != tabbar @@ -715,7 +715,57 @@ catch(e) { sv.attachTabTo(aTab, dropActionInfo.target); }); }, 0); + return; } + + if (draggedTab) + return; + + // dropping of urls + var url; + for (let i = 0; i < tabbar._supportedLinkDropTypes.length; i++) { + let dataType = tabbar._supportedLinkDropTypes[i]; + let isURLList = dataType == 'text/uri-list'; + let urlData = dt.mozGetDataAt(isURLList ? 'URL' : dataType , 0); + if (urlData) { + url = transferUtils.retrieveURLFromData(urlData, isURLList ? 'text/plain' : dataType); + break; + } + } + + if (!url || !url.length || url.indexOf(' ', 0) != -1 || /^\s*(javascript|data):/.test(url)) + return; + + nsDragAndDrop.dragDropSecurityCheck(aEvent, sv.getCurrentDragSession(), url); + + var bgLoad = this.getPref('browser.tabs.loadInBackground'); + if (aEvent.shiftKey) bgLoad = !bgLoad; + + var tab = sv.getTabFromEvent(aEvent); + if (!tab || dt.dropEffect == 'copy') { + sv.performDrop(dropActionInfo, b.loadOneTab(getShortcutOrURI(url), { inBackground: bgLoad })); + } + else { + let locked = tab.getAttribute('locked') == 'true'; + let loadDroppedLinkToNewChildTab = dropActionInfo.position != sv.kDROP_ON || locked; + if (!loadDroppedLinkToNewChildTab && + dropActionInfo.position == sv.kDROP_ON) + loadDroppedLinkToNewChildTab = sv.dropLinksOnTabBehavior() == sv.kDROPLINK_NEWTAB; + + try { + if (loadDroppedLinkToNewChildTab || locked) { + sv.performDrop(dropActionInfo, b.loadOneTab(getShortcutOrURI(url), { inBackground: bgLoad })); + } + else { + tab.linkedBrowser.loadURI(getShortcutOrURI(url)); + if (!bgLoad) + b.selectedTab = tab; + } + } + catch(e) { + } + } + aEvent.stopPropagation(); }, overrideGlobalFunctions : function TSTService_overrideGlobalFunctions()