From d739736997824507b08eb03cfc27a9e473fbb08d Mon Sep 17 00:00:00 2001 From: Corey Johnson & Nathan Sobo Date: Fri, 9 Nov 2012 10:43:58 -0700 Subject: [PATCH] Add underlayer / overlayer for the selection and cursor The renderedLines div can now only contain actual lines, nothing else. Thes divs are designed to match the lines div in dimensions and make it easy to put things in front of or behind the text. --- src/app/editor.coffee | 19 ++++++++++++++----- static/editor.css | 17 +++++++++++++++++ 2 files changed, 31 insertions(+), 5 deletions(-) diff --git a/src/app/editor.coffee b/src/app/editor.coffee index 04bbfb403..8ba985af7 100644 --- a/src/app/editor.coffee +++ b/src/app/editor.coffee @@ -20,7 +20,9 @@ class Editor extends View @subview 'gutter', new Gutter @input class: 'hidden-input', outlet: 'hiddenInput' @div class: 'scroll-view', outlet: 'scrollView', => - @div class: 'lines', outlet: 'renderedLines', => + @div class: 'overlayer', outlet: 'overlayer' + @div class: 'lines', outlet: 'renderedLines' + @div class: 'underlayer', outlet: 'underlayer' @div class: 'vertical-scrollbar', outlet: 'verticalScrollbar', => @div outlet: 'verticalScrollbarContent' @@ -465,6 +467,8 @@ class Editor extends View @updateRenderedLines() if @attached @renderedLines.css('top', -scrollTop) + @underlayer.css('top', -scrollTop) + @overlayer.css('top', -scrollTop) @gutter.lineNumbers.css('top', -scrollTop) if options?.adjustVerticalScrollbar ? true @verticalScrollbar.scrollTop(scrollTop) @@ -661,7 +665,7 @@ class Editor extends View addCursorView: (cursor) -> cursorView = new CursorView(cursor, this) @cursorViews.push(cursorView) - @appendToLinesView(cursorView) + @overlayer.append(cursorView) cursorView removeCursorView: (cursorView) -> @@ -689,7 +693,7 @@ class Editor extends View addSelectionView: (selection) -> selectionView = new SelectionView({editor: this, selection}) @selectionViews.push(selectionView) - @appendToLinesView(selectionView) + @underlayer.append(selectionView) selectionView removeSelectionView: (selectionView) -> @@ -700,11 +704,11 @@ class Editor extends View selectionView.remove() for selectionView in @getSelectionViews() appendToLinesView: (view) -> - @renderedLines.append(view) + @overlayer.append(view) calculateDimensions: -> fragment = $('