fix a couple of subtle backwards compatibility bugs

This commit is contained in:
Brenden Tuck 2019-04-01 22:09:18 -04:00
parent 0ca3bdae9f
commit 40b77b2eb8
2 changed files with 23 additions and 19 deletions

View file

@ -11,6 +11,10 @@ let defaultin_plugin = (function () {
// find where the key comes from // find where the key comes from
var inputfield = $(".inputfield:focus"); var inputfield = $(".inputfield:focus");
if( inputfield.length < 1 ) { // non-goldenlayout backwards compatibility
inputfield = $("#inputfield:focus");
}
// check for important keys // check for important keys
switch (event.which) { switch (event.which) {
case 9: // ignore tab key -- allows normal focus control case 9: // ignore tab key -- allows normal focus control
@ -22,13 +26,13 @@ let defaultin_plugin = (function () {
break; break;
case 13: // Enter key case 13: // Enter key
var outtext = inputfield.val(); var outtext = inputfield.val(); // Grab the text from which-ever inputfield is focused
if ( outtext && !event.shiftKey ) { // Enter Key without shift --> send Mesg if ( outtext && !event.shiftKey ) { // Enter Key without shift --> send Mesg
var lines = outtext.trim().replace(/[\r]+/,"\n").replace(/[\n]+/, "\n").split("\n"); var lines = outtext.trim().replace(/[\r]+/,"\n").replace(/[\n]+/, "\n").split("\n");
for (var i = 0; i < lines.length; i++) { for (var i = 0; i < lines.length; i++) {
plugin_handler.onSend( lines[i].trim() ); plugin_handler.onSend( lines[i].trim() );
} }
inputfield.val(''); inputfield.val(''); // Clear this inputfield
event.preventDefault(); event.preventDefault();
} }
inputfield.blur(); inputfield.blur();
@ -36,10 +40,15 @@ let defaultin_plugin = (function () {
// Anything else, focus() a textarea if needed, and allow the default event // Anything else, focus() a textarea if needed, and allow the default event
default: default:
// is anything actually focused? if not, focus the first .inputfield found in the DOM // is an inputfield actually focused?
if( !inputfield.hasClass('inputfield') ) { if( inputfield.length < 1 ) {
// :first only matters if dual_input or similar multi-input plugins are in use // Nope, focus the last .inputfield found in the DOM (or #inputfield)
$('.inputfield:last').focus(); // :last only matters if multi-input plugins are in use
inputfield = $(".inputfield:last")
inputfield.focus();
if( inputfield.length < 1 ) { // non-goldenlayout backwards compatibility
$("#inputfield").focus();
}
} }
} }
@ -49,13 +58,13 @@ let defaultin_plugin = (function () {
// //
// Mandatory plugin init function // Mandatory plugin init function
var init = function () { var init = function () {
// Handle pressing the send button // Handle pressing the send button, this only applies to non-goldenlayout setups
$("#inputsend") $("#inputsend")
.bind("click", function (evnt) { .bind("click", function (evnt) {
// simulate a carriage return // simulate a carriage return
var e = $.Event( "keydown" ); var e = $.Event( "keydown" );
e.which = 13; e.which = 13;
$('.inputfield:last').trigger(e); $("#inputfield").focus().trigger(e);
}); });
console.log('DefaultIn initialized'); console.log('DefaultIn initialized');

View file

@ -42,15 +42,6 @@ let history_plugin = (function () {
history_pos = 0; history_pos = 0;
} }
//
// Add input to the scratch line
var scratch = function (input) {
// Put the input into the last history entry (which is normally empty)
// without making the array larger as with add.
// Allows for in-progress editing to be saved.
history[history.length-1] = input;
}
// Public // Public
// //
@ -58,7 +49,6 @@ let history_plugin = (function () {
var onKeydown = function(event) { var onKeydown = function(event) {
var code = event.which; var code = event.which;
var history_entry = null; var history_entry = null;
var inputfield = $('.inputfield:focus');
// Only process up/down arrow if cursor is at the end of the line. // Only process up/down arrow if cursor is at the end of the line.
if (code === 38 && event.shiftKey) { // Arrow up if (code === 38 && event.shiftKey) { // Arrow up
@ -70,7 +60,12 @@ let history_plugin = (function () {
// are we processing an up or down history event? // are we processing an up or down history event?
if (history_entry !== null) { if (history_entry !== null) {
// Doing a history navigation; replace the text in the input and move the cursor to the end of the new value // Doing a history navigation; replace the text in the input and
// move the cursor to the end of the new value
var inputfield = $('.inputfield:focus');
if( inputfield.length < 1 ) { // pre-goldenlayout backwards compatibility
inputfield = $('#inputfield');
}
inputfield.val(''); inputfield.val('');
inputfield.blur().focus().val(history_entry); inputfield.blur().focus().val(history_entry);
event.preventDefault(); event.preventDefault();