From bfe43008edfa861fe4552032285c02a6da2b2dea Mon Sep 17 00:00:00 2001 From: Jon Rohan Date: Tue, 22 Jan 2013 16:34:35 -0800 Subject: [PATCH] fixing the tree-view specs --- .../tree-view/spec/tree-view-spec.coffee | 36 +++++++++--------- src/packages/tree-view/src/tree-view.coffee | 38 ++++++++++++------- 2 files changed, 43 insertions(+), 31 deletions(-) diff --git a/src/packages/tree-view/spec/tree-view-spec.coffee b/src/packages/tree-view/spec/tree-view-spec.coffee index c06a1cf44..5cf9ad3c6 100644 --- a/src/packages/tree-view/spec/tree-view-spec.coffee +++ b/src/packages/tree-view/spec/tree-view-spec.coffee @@ -15,7 +15,7 @@ describe "TreeView", -> atom.loadPackage("tree-view") treeView = TreeView.instance - treeView.root = treeView.find('> li:first').view() + treeView.root = treeView.find('ol > li:first').view() sampleJs = treeView.find('.file:contains(tree-view.js)') sampleTxt = treeView.find('.file:contains(tree-view.txt)') @@ -108,7 +108,7 @@ describe "TreeView", -> it "restores the focus state of the tree view", -> rootView.attachToDom() treeView.focus() - expect(treeView).toMatchSelector ':focus' + expect(treeView.find(".tree-view")).toMatchSelector ':focus' newRootView = RootView.deserialize(rootView.serialize()) rootView.deactivate() # Deactivates previous TreeView @@ -117,7 +117,7 @@ describe "TreeView", -> newRootView.activatePackage('tree-view', TreeView) newTreeView = newRootView.find(".tree-view").view() - expect(newTreeView).toMatchSelector ':focus' + expect(newTreeView.find(".tree-view")).toMatchSelector ':focus' it "restores the scroll top when toggled", -> rootView.height(5) @@ -154,14 +154,14 @@ describe "TreeView", -> rootView.focus() rootView.trigger 'tree-view:toggle' expect(treeView).toBeVisible() - expect(treeView).toMatchSelector(':focus') + expect(treeView.find(".tree-view")).toMatchSelector(':focus') describe "when the tree view is hidden", -> it "shows and focuses the tree view", -> treeView.detach() rootView.trigger 'tree-view:toggle' expect(treeView.hasParent()).toBeTruthy() - expect(treeView).toMatchSelector(':focus') + expect(treeView.find(".tree-view")).toMatchSelector(':focus') describe "when tree-view:reveal-current-file is triggered on the root view", -> beforeEach -> @@ -196,10 +196,10 @@ describe "TreeView", -> rootView.open() # When we trigger 'tool-panel:unfocus' below, we want an editor to become focused rootView.attachToDom() treeView.focus() - expect(treeView).toMatchSelector(':focus') + expect(treeView.find(".tree-view")).toMatchSelector(':focus') treeView.trigger 'tool-panel:unfocus' expect(treeView).toBeVisible() - expect(treeView).not.toMatchSelector(':focus') + expect(treeView.find(".tree-view")).not.toMatchSelector(':focus') expect(rootView.getActiveEditor().isFocused).toBeTruthy() describe "when core:close is triggered on the tree view", -> @@ -434,7 +434,7 @@ describe "TreeView", -> treeView.height(100) treeView.attachToDom() $(element).view().expand() for element in treeView.find('.directory') - expect(treeView.prop('scrollHeight')).toBeGreaterThan treeView.outerHeight() + expect(treeView.find(".tree-view").prop('scrollHeight')).toBeGreaterThan treeView.find(".tree-view").outerHeight() expect(treeView.scrollTop()).toBe 0 @@ -458,11 +458,11 @@ describe "TreeView", -> treeView.height(100) treeView.attachToDom() $(element).view().expand() for element in treeView.find('.directory') - expect(treeView.prop('scrollHeight')).toBeGreaterThan treeView.outerHeight() + expect(treeView.find(".tree-view").prop('scrollHeight')).toBeGreaterThan treeView.find(".tree-view").outerHeight() expect(treeView.scrollTop()).toBe 0 treeView.trigger 'core:move-to-bottom' - expect(treeView.scrollBottom()).toBe treeView.prop('scrollHeight') + expect(treeView.scrollBottom()).toBe treeView.find(".tree-view").prop('scrollHeight') it "selects the last entry", -> expect(treeView.root).toHaveClass 'selected' @@ -474,7 +474,7 @@ describe "TreeView", -> treeView.height(5) treeView.attachToDom() $(element).view().expand() for element in treeView.find('.directory') - expect(treeView.prop('scrollHeight')).toBeGreaterThan treeView.outerHeight() + expect(treeView.find(".tree-view").prop('scrollHeight')).toBeGreaterThan treeView.find(".tree-view").outerHeight() expect(treeView.scrollTop()).toBe 0 treeView.scrollToBottom() @@ -489,7 +489,7 @@ describe "TreeView", -> treeView.height(5) treeView.attachToDom() $(element).view().expand() for element in treeView.find('.directory') - expect(treeView.prop('scrollHeight')).toBeGreaterThan treeView.outerHeight() + expect(treeView.find(".tree-view").prop('scrollHeight')).toBeGreaterThan treeView.find(".tree-view").outerHeight() expect(treeView.scrollTop()).toBe 0 treeView.trigger 'core:page-down' @@ -500,14 +500,14 @@ describe "TreeView", -> treeView.height(100) treeView.attachToDom() $(element).view().expand() for element in treeView.find('.directory') - expect(treeView.prop('scrollHeight')).toBeGreaterThan treeView.outerHeight() + expect(treeView.find(".tree-view").prop('scrollHeight')).toBeGreaterThan treeView.find(".tree-view").outerHeight() treeView.moveDown() expect(treeView.scrollTop()).toBe 0 entryCount = treeView.find(".entry").length _.times entryCount, -> treeView.moveDown() - expect(treeView.scrollBottom() + 2).toBe treeView.prop('scrollHeight') + expect(treeView.scrollBottom()).toBe treeView.find(".tree-view").prop('scrollHeight') _.times entryCount, -> treeView.moveUp() expect(treeView.scrollTop()).toBe 0 @@ -687,7 +687,7 @@ describe "TreeView", -> expect(fs.isDirectory(newPath)).toBeTruthy() expect(addDialog.parent()).not.toExist() expect(rootView.getActiveEditor().getPath()).not.toBe newPath - expect(treeView).toMatchSelector(':focus') + expect(treeView.find(".tree-view")).toMatchSelector(':focus') expect(rootView.getActiveEditor().isFocused).toBeFalsy() expect(dirView.find('.directory.selected:contains(new)').length).toBe(1) @@ -700,7 +700,7 @@ describe "TreeView", -> expect(fs.isDirectory(newPath)).toBeTruthy() expect(addDialog.parent()).not.toExist() expect(rootView.getActiveEditor().getPath()).not.toBe newPath - expect(treeView).toMatchSelector(':focus') + expect(treeView.find(".tree-view")).toMatchSelector(':focus') expect(rootView.getActiveEditor().isFocused).toBeFalsy() expect(dirView.find('.directory.selected:contains(new2)').length).toBe(1) @@ -721,7 +721,7 @@ describe "TreeView", -> treeView.attachToDom() addDialog.trigger 'core:cancel' expect(addDialog.parent()).not.toExist() - expect(treeView).toMatchSelector(':focus') + expect(treeView.find(".tree-view")).toMatchSelector(':focus') describe "when the add dialog's editor loses focus", -> it "removes the dialog and focuses root view", -> @@ -835,7 +835,7 @@ describe "TreeView", -> treeView.attachToDom() moveDialog.trigger 'core:cancel' expect(moveDialog.parent()).not.toExist() - expect(treeView).toMatchSelector(':focus') + expect(treeView.find(".tree-view")).toMatchSelector(':focus') describe "when the move dialog's editor loses focus", -> it "removes the dialog and focuses root view", -> diff --git a/src/packages/tree-view/src/tree-view.coffee b/src/packages/tree-view/src/tree-view.coffee index 7cf9a6017..1068f9f1f 100644 --- a/src/packages/tree-view/src/tree-view.coffee +++ b/src/packages/tree-view/src/tree-view.coffee @@ -74,15 +74,15 @@ class TreeView extends ScrollView @selectEntry(@root) if @root afterAttach: (onDom) -> - @treeViewList.focus() if @focusAfterAttach - @treeViewList.scrollTop(@scrollTopAfterAttach) if @scrollTopAfterAttach > 0 + @focus() if @focusAfterAttach + @scrollTop(@scrollTopAfterAttach) if @scrollTopAfterAttach > 0 serialize: -> directoryExpansionStates: @root?.serializeEntryExpansionStates() selectedPath: @selectedEntry()?.getPath() hasFocus: @hasFocus() attached: @hasParent() - scrollTop: @treeViewList.scrollTop() + scrollTop: @scrollTop() width: @width() deactivate: -> @@ -93,20 +93,23 @@ class TreeView extends ScrollView @detach() else if @hasParent() - @treeViewList.focus() + @focus() else @attach() attach: -> return unless rootView.project.getPath() @rootView.horizontal.prepend(this) - @treeViewList.focus() + @focus() detach: -> @scrollTopAfterAttach = @scrollTop() super @rootView.focus() + focus: -> + @treeViewList.focus() + hasFocus: -> @treeViewList.is(':focus') @@ -201,7 +204,7 @@ class TreeView extends ScrollView else @selectEntry(selectedEntry.parents('.directory').first()) else - @selectEntry(@find('.entry').last()) + @selectEntry(@treeViewList.find('.entry').last()) @scrollToEntry(@selectedEntry()) @@ -304,15 +307,25 @@ class TreeView extends ScrollView @treeViewList.find('.selected').removeClass('selected') entry.addClass('selected') + scrollTop: (top) -> + if top + @treeViewList.scrollTop(top) + else + @treeViewList.scrollTop() + + scrollBottom: (bottom) -> + if bottom + @treeViewList.scrollBottom(bottom) + else + @treeViewList.scrollBottom() + scrollToEntry: (entry) -> displayElement = if entry instanceof DirectoryView then entry.header else entry - - top = @treeViewList.scrollTop() + displayElement.position().top + top = @scrollTop() + displayElement.position().top bottom = top + displayElement.outerHeight() - - if bottom > @treeViewList.scrollBottom() + if bottom > @scrollBottom() @treeViewList.scrollBottom(bottom) - if top < @treeViewList.scrollTop() + if top < @scrollTop() @treeViewList.scrollTop(top) scrollToBottom: -> @@ -323,6 +336,5 @@ class TreeView extends ScrollView scrollToTop: -> super() - @selectEntry(@root) if @root - @scrollToEntry(@root) if @root + @treeViewList.scrollTop(0)