diff --git a/spec/workspace-element-spec.coffee b/spec/workspace-element-spec.coffee index efb1d1b26..cfe21cb18 100644 --- a/spec/workspace-element-spec.coffee +++ b/spec/workspace-element-spec.coffee @@ -27,7 +27,7 @@ describe "WorkspaceElement", -> expect(workspaceElement).toHaveClass 'scrollbars-visible-when-scrolling' describe "editor font styling", -> - [editor, editorElement] = [] + [editor, editorElement, workspaceElement] = [] beforeEach -> waitsForPromise -> atom.workspace.open('sample.js') @@ -63,6 +63,44 @@ describe "WorkspaceElement", -> expect(getComputedStyle(editorElement).lineHeight).toBe atom.config.get('editor.lineHeight') expect(editor.getLineHeightInPixels()).not.toBe initialLineHeight + it "increases or decreases the font size when a ctrl-mousewheel event occurs", -> + atom.config.set('editor.zoomFontWhenCtrlScrolling', true) + atom.config.set('editor.fontSize', 12) + + # Zoom out + editorElement.dispatchEvent(new WheelEvent('mousewheel', { + wheelDeltaY: -10, + ctrlKey: true + })) + expect(atom.config.get('editor.fontSize')).toBe(11) + + # Zoom in + editorElement.dispatchEvent(new WheelEvent('mousewheel', { + wheelDeltaY: 10, + ctrlKey: true + })) + expect(atom.config.get('editor.fontSize')).toBe(12) + + # Not on an atom-text-editor + workspaceElement.dispatchEvent(new WheelEvent('mousewheel', { + wheelDeltaY: 10, + ctrlKey: true + })) + expect(atom.config.get('editor.fontSize')).toBe(12) + + # No ctrl key + workspaceElement.dispatchEvent(new WheelEvent('mousewheel', { + wheelDeltaY: 10, + })) + expect(atom.config.get('editor.fontSize')).toBe(12) + + atom.config.set('editor.zoomFontWhenCtrlScrolling', false) + editorElement.dispatchEvent(new WheelEvent('mousewheel', { + wheelDeltaY: 10, + ctrlKey: true + })) + expect(atom.config.get('editor.fontSize')).toBe(12) + describe 'panel containers', -> it 'inserts panel container elements in the correct places in the DOM', -> workspaceElement = atom.views.getView(atom.workspace) diff --git a/src/text-editor-component.coffee b/src/text-editor-component.coffee index 5a6f1bde0..2786e321e 100644 --- a/src/text-editor-component.coffee +++ b/src/text-editor-component.coffee @@ -392,15 +392,6 @@ class TextEditorComponent # Only scroll in one direction at a time {wheelDeltaX, wheelDeltaY} = event - # Ctrl+MouseWheel adjusts font size. - if event.ctrlKey and @config.get('editor.zoomFontWhenCtrlScrolling') - if wheelDeltaY > 0 - @workspace.increaseFontSize() - else if wheelDeltaY < 0 - @workspace.decreaseFontSize() - event.preventDefault() - return - if Math.abs(wheelDeltaX) > Math.abs(wheelDeltaY) # Scrolling horizontally previousScrollLeft = @presenter.getScrollLeft() diff --git a/src/workspace-element.coffee b/src/workspace-element.coffee index c604f62b1..2435c94bf 100644 --- a/src/workspace-element.coffee +++ b/src/workspace-element.coffee @@ -76,6 +76,8 @@ class WorkspaceElement extends HTMLElement @verticalAxis.appendChild(@paneContainer) @addEventListener 'focus', @handleFocus.bind(this) + @addEventListener 'mousewheel', @handleMousewheel.bind(this), true + @panelContainers = top: @views.getView(@model.panelContainers.top) left: @views.getView(@model.panelContainers.left) @@ -100,6 +102,15 @@ class WorkspaceElement extends HTMLElement getModel: -> @model + handleMousewheel: (event) -> + if event.ctrlKey and @config.get('editor.zoomFontWhenCtrlScrolling') and event.target.matches('atom-text-editor') + if event.wheelDeltaY > 0 + @model.increaseFontSize() + else if event.wheelDeltaY < 0 + @model.decreaseFontSize() + event.preventDefault() + event.stopPropagation() + handleFocus: (event) -> @model.getActivePane().activate()