From 0eac9d3e6f55a43943ea8a6fb2d39e7495370143 Mon Sep 17 00:00:00 2001 From: Nathan Sobo Date: Mon, 3 Mar 2014 22:33:28 -0700 Subject: [PATCH 1/3] Apply 'scrollbar-style-x' class to WorkspaceView MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit …where x is 'overlay' or 'legacy' depending on whether the scrollbars are only visible when scrolling (overlay) or always visible (legacy). This will allow us to style scrollbars in legacy mode without forcing them to be visible in overlay mode. --- package.json | 1 + spec/workspace-view-spec.coffee | 8 ++++++++ src/workspace-view.coffee | 6 ++++++ 3 files changed, 15 insertions(+) diff --git a/package.json b/package.json index 417c07a02..4de2dde47 100644 --- a/package.json +++ b/package.json @@ -41,6 +41,7 @@ "random-words": "0.0.1", "runas": "0.5.x", "scandal": "0.15.0", + "scrollbar-style": "^0.1.0", "season": ">=1.0.2 <2.0", "semver": "1.1.4", "serializable": "1.x", diff --git a/spec/workspace-view-spec.coffee b/spec/workspace-view-spec.coffee index e034d9ed4..77f94df6c 100644 --- a/spec/workspace-view-spec.coffee +++ b/spec/workspace-view-spec.coffee @@ -241,3 +241,11 @@ describe "WorkspaceView", -> expect(atom.workspaceView.getActivePane().getItems()).toHaveLength 1 atom.workspaceView.trigger('core:close') expect(atom.workspaceView.getActivePane().getItems()).toHaveLength 0 + + describe "the scrollbar style class", -> + it "has a class based on the style of the scrollbar", -> + scrollbarStyle = require 'scrollbar-style' + scrollbarStyle.emitValue 'legacy' + expect(atom.workspaceView).toHaveClass 'scrollbar-style-legacy' + scrollbarStyle.emitValue 'overlay' + expect(atom.workspaceView).toHaveClass 'scrollbar-style-overlay' diff --git a/src/workspace-view.coffee b/src/workspace-view.coffee index 1ca57cfe7..ec2c311ba 100644 --- a/src/workspace-view.coffee +++ b/src/workspace-view.coffee @@ -3,6 +3,7 @@ path = require 'path' Q = require 'q' _ = require 'underscore-plus' Delegator = require 'delegato' +scrollbarStyle = require 'scrollbar-style' {$, $$, View} = require './space-pen-extensions' fs = require 'fs-plus' Workspace = require './workspace' @@ -81,6 +82,11 @@ class WorkspaceView extends View @subscribe @model, 'uri-opened', => @trigger 'uri-opened' + @subscribe scrollbarStyle.onValue (style) => + @removeClass('scrollbar-style-legacy') + @removeClass('scrollbar-style-overlay') + @addClass("scrollbar-style-#{style}") + @updateTitle() @on 'focus', (e) => @handleFocus(e) From ea16ecc81f8f6c612811c4df6795d740579b9745 Mon Sep 17 00:00:00 2001 From: Nathan Sobo Date: Mon, 3 Mar 2014 22:38:17 -0700 Subject: [PATCH 2/3] :lipstick: Drop the ::onValue call --- src/workspace-view.coffee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/workspace-view.coffee b/src/workspace-view.coffee index ec2c311ba..b34f2b811 100644 --- a/src/workspace-view.coffee +++ b/src/workspace-view.coffee @@ -82,7 +82,7 @@ class WorkspaceView extends View @subscribe @model, 'uri-opened', => @trigger 'uri-opened' - @subscribe scrollbarStyle.onValue (style) => + @subscribe scrollbarStyle, (style) => @removeClass('scrollbar-style-legacy') @removeClass('scrollbar-style-overlay') @addClass("scrollbar-style-#{style}") From 8522707bd23f7c90059d0fdadfc6ae6e5571ddc7 Mon Sep 17 00:00:00 2001 From: Nathan Sobo Date: Tue, 4 Mar 2014 10:50:45 -0700 Subject: [PATCH 3/3] Switch to .scrollbars-visible-always/when-scrolling class names --- spec/workspace-view-spec.coffee | 6 +++--- src/workspace-view.coffee | 9 ++++++--- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/spec/workspace-view-spec.coffee b/spec/workspace-view-spec.coffee index 77f94df6c..41e9940d3 100644 --- a/spec/workspace-view-spec.coffee +++ b/spec/workspace-view-spec.coffee @@ -242,10 +242,10 @@ describe "WorkspaceView", -> atom.workspaceView.trigger('core:close') expect(atom.workspaceView.getActivePane().getItems()).toHaveLength 0 - describe "the scrollbar style class", -> + describe "the scrollbar visibility class", -> it "has a class based on the style of the scrollbar", -> scrollbarStyle = require 'scrollbar-style' scrollbarStyle.emitValue 'legacy' - expect(atom.workspaceView).toHaveClass 'scrollbar-style-legacy' + expect(atom.workspaceView).toHaveClass 'scrollbars-visible-always' scrollbarStyle.emitValue 'overlay' - expect(atom.workspaceView).toHaveClass 'scrollbar-style-overlay' + expect(atom.workspaceView).toHaveClass 'scrollbars-visible-when-scrolling' diff --git a/src/workspace-view.coffee b/src/workspace-view.coffee index b34f2b811..4cd503cf9 100644 --- a/src/workspace-view.coffee +++ b/src/workspace-view.coffee @@ -83,9 +83,12 @@ class WorkspaceView extends View @subscribe @model, 'uri-opened', => @trigger 'uri-opened' @subscribe scrollbarStyle, (style) => - @removeClass('scrollbar-style-legacy') - @removeClass('scrollbar-style-overlay') - @addClass("scrollbar-style-#{style}") + @removeClass('scrollbars-visible-always scrollbars-visible-when-scrolling') + switch style + when 'legacy' + @addClass("scrollbars-visible-always") + when 'overlay' + @addClass("scrollbars-visible-when-scrolling") @updateTitle()