From 26092bc7d110f797d901cb686484fbd935d143fd Mon Sep 17 00:00:00 2001 From: coderaiser Date: Wed, 2 Apr 2014 10:40:49 -0400 Subject: [PATCH] feature(view) add set current file afterClose --- lib/client/dom.js | 33 +++++++++++++++++++++++++++++++++ lib/client/menu.js | 29 +++++++++-------------------- lib/client/view.js | 12 ++++++++++++ 3 files changed, 54 insertions(+), 20 deletions(-) diff --git a/lib/client/dom.js b/lib/client/dom.js index 907758e8..5429605f 100644 --- a/lib/client/dom.js +++ b/lib/client/dom.js @@ -1080,6 +1080,39 @@ var CloudCmd, Util, DOM, CloudFunc, Dialog; return this; }; + /* + * set current file by position + * + * @param layer - element + * @param - position {x, y} + */ + this.getCurrentByPosition = function(position) { + var element, tag, isChild, + x = position.x, + y = position.y; + + element = document.elementFromPoint(x, y), + tag = element.tagName; + + isChild = Util.strCmp(tag, ['A', 'SPAN', 'LI']); + + if (!isChild) { + element = null; + } else { + switch (tag) { + case 'A': + element = element.parentElement.parentElement; + break; + + case 'SPAN': + element = element.parentElement; + break; + } + } + + return element; + }; + /** * select current file * @param currentFile diff --git a/lib/client/menu.js b/lib/client/menu.js index 571f494c..a629af84 100644 --- a/lib/client/menu.js +++ b/lib/client/menu.js @@ -287,30 +287,19 @@ var CloudCmd, Util, DOM, CloudFunc, $; * DOM tree. */ function clickProcessing() { - var lLayer = DOM.getById('context-menu-layer'); + var element, isCurrent, + layer = DOM.getById('context-menu-layer'); - if (lLayer && Position) { - DOM.hide(lLayer); + if (layer) { + DOM.hide(layer); - var lElement = document.elementFromPoint(Position.x, Position.y), - lTag = lElement.tagName; + element = DOM.getCurrentByPosition(Position); + isCurrent = DOM.isCurrentFile(element); - if (Util.strCmp(lTag, ['A', 'SPAN'])) { - switch (lTag) { - case 'A': - lElement = lElement.parentElement.parentElement; - break; - - case 'SPAN': - lElement = lElement.parentElement; - break; - } - - if (lElement.className === '') - DOM.setCurrentFile(lElement); - } + if (!isCurrent) + DOM.setCurrentFile(element); - DOM.show(lLayer); + DOM.show(layer); Key.setBind(); } } diff --git a/lib/client/view.js b/lib/client/view.js index d0382636..d3f7cf08 100644 --- a/lib/client/view.js +++ b/lib/client/view.js @@ -19,6 +19,18 @@ var CloudCmd, Util, DOM, CloudFunc, $; Images.hideLoad(); Key.unsetBind(); }, + afterClose : function() { + var element, isCurrent, + overlay = DOM.getByClass('fancybox-overlay'), + position = CloudCmd.MousePosition; + + DOM.hide(overlay); + element = DOM.getCurrentByPosition(position); + isCurrent = DOM.isCurrentFile(element); + + if (!isCurrent) + DOM.setCurrentFile(element); + }, beforeClose : Key.setBind, fitToView : true, loop : false,