From 24cc139ea05dfbf085042231c07fdeb6156fe1b4 Mon Sep 17 00:00:00 2001 From: Donna Wu Date: Wed, 15 Aug 2012 17:38:26 +0800 Subject: [PATCH 1/2] [FixBug] Fix bug about pressing delete key quickly --- src/js/adm.js | 18 +++++++++-- src/js/views/property.js | 68 ++++++++++------------------------------ 2 files changed, 32 insertions(+), 54 deletions(-) diff --git a/src/js/adm.js b/src/js/adm.js index 5c820808..dd8060a9 100644 --- a/src/js/adm.js +++ b/src/js/adm.js @@ -1859,7 +1859,7 @@ ADMNode.prototype.removeChild = function (child, dryrun) { * @return {ADMNode} The removed child, or null if not found. */ ADMNode.prototype.removeChildFromZone = function (zoneName, index, dryrun) { - var zone, removed, child, parentNode; + var zone, removed, child, parentNode, parent; zone = this._zones[zoneName]; if (!zone) { console.error("Error: no such zone found while removing child: " + @@ -1883,7 +1883,21 @@ ADMNode.prototype.removeChildFromZone = function (zoneName, index, dryrun) { child._root = null; if (child.isSelected()) { - ADM.setSelected(null); + parent = this; + // Select sibling of removed node, or parent node + // if removed node is the last node of parent. The + // order is next sibling, prev sibling and parent + if (zone.length === 0) { + //find the first selectable ancestor + while (!parent.isSelectable()) { + parent = parent.getParent(); + } + ADM.setSelected(parent); + } else if (index < zone.length) { + ADM.setSelected(zone[index]) + } else { + ADM.setSelected(zone[zone.length - 1]); + } } this.fireModelEvent("modelUpdated", diff --git a/src/js/views/property.js b/src/js/views/property.js index 74ac1b7f..7eba9b58 100644 --- a/src/js/views/property.js +++ b/src/js/views/property.js @@ -59,20 +59,8 @@ }, refresh: function(event, widget) { - var node; widget = widget || this; - if (event) { - if (event.node && !(event.name === "modelUpdated" && - event.type === "nodeRemoved")) { - if (event.type === "propertyChanged" && event.node.getType() === 'Design') { - return; - } - widget._showProperties(event.node); - } else { - node = ADM.getActivePage(); - widget._showProperties(node); - } - } + widget._showProperties(ADM.getSelectedNode()); }, // Private functions @@ -92,14 +80,15 @@ widget.refresh(event,widget); }, - _activePageChangedHandler: function(event, widget) { - widget = widget || this; - widget.refresh(event,widget); - }, - _modelUpdatedHandler: function(event, widget) { widget = widget || this; - widget.refresh(event,widget); + if (event && (event.type === "propertyChanged" && + event.node.getType() === 'Design')) { + return; + } else { + + widget.refresh(event,widget); + } }, _showProperties: function(node) { @@ -498,43 +487,18 @@ .appendTo(content); content.find('#deleteElement') .bind('click', function (e) { - var parent, zone, index, msg; - var doDelete = function () { - try { - index = node.getZoneIndex(); - parent = node.getParent(); - zone = parent.getZoneArray(node.getZone()); - if (type === "Page") { - $.rib.pageUtils.deletePage(node.getUid(), false); - } else { - ADM.removeChild(node.getUid(), false); - } - // Select sibling of removed node, or parent node - // if removed node is the last node of parent. The - // order is next sibling, prev sibling and parent - if (zone.length === 0) { - //find the first selectable ancestor - while (!parent.isSelectable()) { - parent = parent.getParent(); - } - ADM.setSelected(parent); - } else if (index < zone.length) { - ADM.setSelected(zone[index]) - } else { - ADM.setSelected(zone[zone.length - 1]); - } - } - catch (err) { - console.error(err.message); - } - } - if (type === "Page") { + var msg, node; + node = ADM.getSelectedNode(); + if (!node) return false; + if (node.getType() === "Page") { // TODO: i18n msg = "Are you sure you want to delete the page '%1'?"; msg = msg.replace("%1", node.getProperty("id")); - $.rib.confirm(msg, doDelete); + $.rib.confirm(msg, function () { + $.rib.pageUtils.deletePage(node.getUid()); + }); } else { - doDelete(); + ADM.removeChild(node.getUid(), false); } e.stopPropagation(); return false; From c09a0cdcd5a69c2025fac607c6aaa0ee6e0aaafd Mon Sep 17 00:00:00 2001 From: Donna Wu Date: Fri, 17 Aug 2012 16:42:59 +0800 Subject: [PATCH 2/2] [FixBug] Fix bug that can not paste cutted page --- src/js/adm.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/js/adm.js b/src/js/adm.js index dd8060a9..7e0479b3 100644 --- a/src/js/adm.js +++ b/src/js/adm.js @@ -1070,6 +1070,9 @@ ADM.copySubtree = function (node) { ADM.paste = function () { var node, parent, target; target = ADM._selection ? ADM._selection : ADM._activePage; + if (ADM._clipboard && ADM._clipboard.getType() === 'Page') { + target = ADM.getDesignRoot(); + } if (!ADM._clipboard || !target) { return; }