From 8d54b916eb32458205d2e0f1a4e9cd007585f252 Mon Sep 17 00:00:00 2001 From: Lev Lazinskiy Date: Thu, 19 Jan 2017 16:20:52 -0800 Subject: [PATCH 1/7] Only handle tab key inside of editor This refactors the controller a bit to insert 4 spaces when a tab key is inserted inside of an editor, but in all other parts of the app allow the user to use the tab key normally. fix https://github.com/standardnotes/desktop/issues/23 --- .../app/frontend/controllers/editor.js | 31 ++++++++++++------- 1 file changed, 20 insertions(+), 11 deletions(-) diff --git a/app/assets/javascripts/app/frontend/controllers/editor.js b/app/assets/javascripts/app/frontend/controllers/editor.js index 358a24aa5..e567a3ad8 100644 --- a/app/assets/javascripts/app/frontend/controllers/editor.js +++ b/app/assets/javascripts/app/frontend/controllers/editor.js @@ -15,16 +15,23 @@ angular.module('app.frontend') link:function(scope, elem, attrs, ctrl) { + /** + * Insert 4 spaces when a tab key is pressed, + * only used when inside of the text editor. + */ + var handleTab = function (event ) { + + if (event.which == 9) { + event.preventDefault(); + var start = event.target.selectionStart; + var end = event.target.selectionEnd; + var spaces = " "; + event.target.value = event.target.value.substring(0, start) + + spaces + event.target.value.substring(end); + } + } + var handler = function(event) { - // Handle Tab Key - if (event.which == 9) { - event.preventDefault(); - var start = event.target.selectionStart; - var end = event.target.selectionEnd; - var spaces = " "; - event.target.value = event.target.value.substring(0, start) - + spaces + event.target.value.substring(end); - } if (event.ctrlKey || event.metaKey) { switch (String.fromCharCode(event.which).toLowerCase()) { case 's': @@ -56,6 +63,9 @@ angular.module('app.frontend') }; window.addEventListener('keydown', handler); + var editor = document.getElementById("note-text-editor"); + editor.addEventListener('keydown', handleTab); + scope.$on('$destroy', function(){ window.removeEventListener('keydown', handler); @@ -100,8 +110,7 @@ angular.module('app.frontend') this.focusEditor = function(delay) { setTimeout(function(){ - var element = document.getElementById("note-text-editor"); - element.focus(); + editor.focus(); }, delay) } From 56ce553d819fabe4623a9be3233571b0f6b85842 Mon Sep 17 00:00:00 2001 From: Lev Lazinskiy Date: Thu, 19 Jan 2017 16:23:53 -0800 Subject: [PATCH 2/7] Fix minor formatting issues --- app/assets/javascripts/app/frontend/controllers/editor.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/app/assets/javascripts/app/frontend/controllers/editor.js b/app/assets/javascripts/app/frontend/controllers/editor.js index e567a3ad8..56750684f 100644 --- a/app/assets/javascripts/app/frontend/controllers/editor.js +++ b/app/assets/javascripts/app/frontend/controllers/editor.js @@ -19,8 +19,7 @@ angular.module('app.frontend') * Insert 4 spaces when a tab key is pressed, * only used when inside of the text editor. */ - var handleTab = function (event ) { - + var handleTab = function (event) { if (event.which == 9) { event.preventDefault(); var start = event.target.selectionStart; From 59018ed7c9f67ad22138530c5fbf2dd7da6a12bd Mon Sep 17 00:00:00 2001 From: Lev Lazinskiy Date: Thu, 19 Jan 2017 21:27:46 -0800 Subject: [PATCH 3/7] Fix refernce to the editor element --- app/assets/javascripts/app/frontend/controllers/editor.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/app/assets/javascripts/app/frontend/controllers/editor.js b/app/assets/javascripts/app/frontend/controllers/editor.js index 56750684f..79c0760bc 100644 --- a/app/assets/javascripts/app/frontend/controllers/editor.js +++ b/app/assets/javascripts/app/frontend/controllers/editor.js @@ -61,9 +61,8 @@ angular.module('app.frontend') } }; - window.addEventListener('keydown', handler); - var editor = document.getElementById("note-text-editor"); - editor.addEventListener('keydown', handleTab); + var element = document.getElementById("note-text-editor"); + element.addEventListener('keydown', handleTab); scope.$on('$destroy', function(){ @@ -109,7 +108,8 @@ angular.module('app.frontend') this.focusEditor = function(delay) { setTimeout(function(){ - editor.focus(); + var element = document.getElementById("note-text-editor"); + element.focus(); }, delay) } From 1b3eb1bbfd83449b763634875e9c81ccb2bd9fbd Mon Sep 17 00:00:00 2001 From: Lev Lazinskiy Date: Thu, 19 Jan 2017 21:31:33 -0800 Subject: [PATCH 4/7] revert accidental removal of window keydown handler --- app/assets/javascripts/app/frontend/controllers/editor.js | 1 + 1 file changed, 1 insertion(+) diff --git a/app/assets/javascripts/app/frontend/controllers/editor.js b/app/assets/javascripts/app/frontend/controllers/editor.js index 79c0760bc..8ec0328ae 100644 --- a/app/assets/javascripts/app/frontend/controllers/editor.js +++ b/app/assets/javascripts/app/frontend/controllers/editor.js @@ -61,6 +61,7 @@ angular.module('app.frontend') } }; + window.addEventListener('keydown', handler); var element = document.getElementById("note-text-editor"); element.addEventListener('keydown', handleTab); From a4a68985262c4cf23e41355bfae33e370d74ae5f Mon Sep 17 00:00:00 2001 From: Lev Lazinskiy Date: Thu, 19 Jan 2017 21:33:00 -0800 Subject: [PATCH 5/7] fix spacing --- app/assets/javascripts/app/frontend/controllers/editor.js | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/app/assets/javascripts/app/frontend/controllers/editor.js b/app/assets/javascripts/app/frontend/controllers/editor.js index 8ec0328ae..4afd7bb42 100644 --- a/app/assets/javascripts/app/frontend/controllers/editor.js +++ b/app/assets/javascripts/app/frontend/controllers/editor.js @@ -60,11 +60,10 @@ angular.module('app.frontend') } } }; - + window.addEventListener('keydown', handler); - var element = document.getElementById("note-text-editor"); - element.addEventListener('keydown', handleTab); - + var element = document.getElementById("note-text-editor"); + element.addEventListener('keydown', handleTab); scope.$on('$destroy', function(){ window.removeEventListener('keydown', handler); From e1eac39ed04aaf644f0a6868a55e16eb2e0d0a84 Mon Sep 17 00:00:00 2001 From: Lev Lazinskiy Date: Thu, 19 Jan 2017 21:39:12 -0800 Subject: [PATCH 6/7] Fix spacing (for real this time) --- app/assets/javascripts/app/frontend/controllers/editor.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/assets/javascripts/app/frontend/controllers/editor.js b/app/assets/javascripts/app/frontend/controllers/editor.js index 4afd7bb42..f33fc9ba6 100644 --- a/app/assets/javascripts/app/frontend/controllers/editor.js +++ b/app/assets/javascripts/app/frontend/controllers/editor.js @@ -61,9 +61,9 @@ angular.module('app.frontend') } }; - window.addEventListener('keydown', handler); - var element = document.getElementById("note-text-editor"); - element.addEventListener('keydown', handleTab); + window.addEventListener('keydown', handler); + var element = document.getElementById("note-text-editor"); + element.addEventListener('keydown', handleTab); scope.$on('$destroy', function(){ window.removeEventListener('keydown', handler); From 3f3b80828696ab0c5ac9a33893db58396376a049 Mon Sep 17 00:00:00 2001 From: Lev Lazinskiy Date: Thu, 19 Jan 2017 21:40:43 -0800 Subject: [PATCH 7/7] Remove extra space before window --- app/assets/javascripts/app/frontend/controllers/editor.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/assets/javascripts/app/frontend/controllers/editor.js b/app/assets/javascripts/app/frontend/controllers/editor.js index f33fc9ba6..73ef0102b 100644 --- a/app/assets/javascripts/app/frontend/controllers/editor.js +++ b/app/assets/javascripts/app/frontend/controllers/editor.js @@ -60,7 +60,7 @@ angular.module('app.frontend') } } }; - + window.addEventListener('keydown', handler); var element = document.getElementById("note-text-editor"); element.addEventListener('keydown', handleTab);