From 4f433ce0e83a81187042aa968b5fbe1f4823901a Mon Sep 17 00:00:00 2001 From: Jon Rohan Date: Thu, 27 Dec 2012 21:01:17 -0800 Subject: [PATCH] Changing the close icon when the tab is modified --- src/packages/tabs/src/tab.coffee | 20 ++++++++++++++++++++ src/packages/tabs/src/tabs.css | 14 ++++++++++++++ 2 files changed, 34 insertions(+) diff --git a/src/packages/tabs/src/tab.coffee b/src/packages/tabs/src/tab.coffee index 67935a3d5..7c472fd5c 100644 --- a/src/packages/tabs/src/tab.coffee +++ b/src/packages/tabs/src/tab.coffee @@ -11,6 +11,26 @@ class Tab extends View @updateFileName() @editSession.on 'buffer-path-change.tab', => @updateFileName() + @subscribeToBuffer() + + updateTab: -> + @updateBufferHasModifiedText(@buffer.isModified()) + + subscribeToBuffer: -> + @buffer?.off '.tabs' + @buffer = @editSession.buffer + @buffer.on 'contents-modified.tabs', (e) => @updateBufferHasModifiedText(e.differsFromDisk) + @buffer.on 'after-save.tabs', => @updateTab() + @buffer.on 'git-status-change.tabs', => @updateTab() + @updateTab() + + updateBufferHasModifiedText: (differsFromDisk) -> + if differsFromDisk + @toggleClass('file-modified') unless @isModified + @isModified = true + else + @removeClass('file-modified') if @isModified + @isModified = false updateFileName: -> @fileName.text(@editSession.buffer.getBaseName() ? 'untitled') diff --git a/src/packages/tabs/src/tabs.css b/src/packages/tabs/src/tabs.css index ba9b60995..d4d099a95 100644 --- a/src/packages/tabs/src/tabs.css +++ b/src/packages/tabs/src/tabs.css @@ -21,6 +21,20 @@ height: 24px; } +.tab.file-modified .close-icon { + box-shadow: inset 0 1px 2px #333; + background-color: #F9EE98; + top: 8px; + border-radius: 10px; + width: 7px; + height: 7px; + right: 7px; +} + +.tab.file-modified .close-icon:before { + content: ""; +} + .tab:first-child { box-shadow: inset 0 0 5px #383838, 0 1px 0 #585858, inset -1px 0 0 #4a4a4a; }