From 9c99369c103a51bff5eaacab24f96dfd35d8b398 Mon Sep 17 00:00:00 2001 From: Justin Palmer Date: Sun, 10 Feb 2013 10:46:02 -0800 Subject: [PATCH] add methods to determine if we should allow dragging and dropping --- src/app/sortable-list.coffee | 9 +++++++++ src/packages/tabs/lib/tabs-view.coffee | 9 +++++++-- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/app/sortable-list.coffee b/src/app/sortable-list.coffee index 8e5e48a5d..313178d22 100644 --- a/src/app/sortable-list.coffee +++ b/src/app/sortable-list.coffee @@ -14,6 +14,8 @@ class SortableList extends View @on 'drop', '.sortable', @onDrop onDragStart: (event) => + return false if !@shouldAllowDrag() + el = @getSortableElement(event) el.addClass 'is-dragging' event.originalEvent.dataTransfer.setData 'sortable-index', el.index() @@ -32,9 +34,16 @@ class SortableList extends View @getSortableElement(event).removeClass 'is-drop-target' onDrop: (event) => + return false if !@shouldAllowDrop() event.stopPropagation() @find('.is-drop-target').removeClass 'is-drop-target' + shouldAllowDrag: -> + true + + shouldAllowDrop: -> + true + getDroppedElement: (event) -> idx = event.originalEvent.dataTransfer.getData 'sortable-index' @find ".sortable:eq(#{idx})" diff --git a/src/packages/tabs/lib/tabs-view.coffee b/src/packages/tabs/lib/tabs-view.coffee index 4d7df7f55..27fbe83a7 100644 --- a/src/packages/tabs/lib/tabs-view.coffee +++ b/src/packages/tabs/lib/tabs-view.coffee @@ -45,6 +45,10 @@ class Tabs extends SortableList removeTabAtIndex: (index) -> @find(".tab:eq(#{index})").remove() + shouldAllowDrag: -> + panes = rootView.find('.pane') + panes.length == 1 && panes.find('.sortable').length > 0 + onDragStart: (event) => super pane = $(event.target).closest('.pane') @@ -75,10 +79,11 @@ class Tabs extends SortableList draggedTab.insertAfter(droppedNearTab) currentDraggedTabIndex = draggedTab.index() - + #console.log ".#{Tabs.viewClass()} .sortable:eq(#{previousDraggedTabIndex})" toEditor.editSessions.splice(currentDraggedTabIndex, 0, fromEditor.editSessions.splice(previousDraggedTabIndex, 1)[0]) @setActiveTab(currentDraggedTabIndex) - fromEditor.setActiveEditSessionIndex(0) + console.log fromPaneIndex, toPaneIndex, currentDraggedTabIndex + fromEditor.setActiveEditSessionIndex(0) if fromPaneIndex != toPaneIndex toEditor.setActiveEditSessionIndex(currentDraggedTabIndex) toEditor.focus()