much better chat focus toggle behavior

This commit is contained in:
John McLear 2015-03-26 16:58:13 +00:00
parent 428b547d24
commit 19e83d5405
2 changed files with 20 additions and 4 deletions

View file

@ -3636,6 +3636,7 @@ function Ace2Inner(){
var charCode = evt.charCode; var charCode = evt.charCode;
var keyCode = evt.keyCode; var keyCode = evt.keyCode;
var which = evt.which; var which = evt.which;
var altKey = evt.altKey;
// prevent ESC key // prevent ESC key
if (keyCode == 27) if (keyCode == 27)
@ -3718,11 +3719,11 @@ function Ace2Inner(){
firstEditbarElement.focus(); firstEditbarElement.focus();
evt.preventDefault(); evt.preventDefault();
} }
if ((!specialHandled) && isTypeForSpecialKey && keyCode == 67){ if ((!specialHandled) && altKey && keyCode == 67){
// Alt c focuses on the Chat window // Alt c focuses on the Chat window
$(this).blur();
parent.parent.chat.show(); parent.parent.chat.show();
parent.parent.chat.focus(); parent.parent.chat.focus();
$(this).blur();
evt.preventDefault(); evt.preventDefault();
} }
if ((!specialHandled) && isTypeForSpecialKey && keyCode == 8) if ((!specialHandled) && isTypeForSpecialKey && keyCode == 8)

View file

@ -18,6 +18,7 @@ var padutils = require('./pad_utils').padutils;
var padcookie = require('./pad_cookie').padcookie; var padcookie = require('./pad_cookie').padcookie;
var Tinycon = require('tinycon/tinycon'); var Tinycon = require('tinycon/tinycon');
var hooks = require('./pluginfw/hooks'); var hooks = require('./pluginfw/hooks');
var padeditor = require('./pad_editor').padeditor;
var chat = (function() var chat = (function()
{ {
@ -38,7 +39,11 @@ var chat = (function()
}, },
focus: function () focus: function ()
{ {
$("#chatinput").focus(); // I'm not sure why we need a setTimeout here but without it we don't get focus...
// Animation maybe?
setTimeout(function(){
$("#chatinput").focus();
},100);
}, },
stickToScreen: function(fromInitialCall) // Make chat stick to right hand side of screen stickToScreen: function(fromInitialCall) // Make chat stick to right hand side of screen
{ {
@ -209,8 +214,18 @@ var chat = (function()
init: function(pad) init: function(pad)
{ {
this._pad = pad; this._pad = pad;
$("#chatinput").keypress(function(evt) $("#chatinput").keyup(function(evt)
{ {
// If the event is Alt C or Escape & we're already in the chat menu
// Send the users focus back to the pad
if((evt.altKey == true && evt.which === 67) || evt.which === 27){
// If we're in chat already..
$(':focus').blur(); // required to do not try to remove!
padeditor.ace.focus(); // Sends focus back to pad
}
});
$("#chatinput").keypress(function(evt){
//if the user typed enter, fire the send //if the user typed enter, fire the send
if(evt.which == 13 || evt.which == 10) if(evt.which == 13 || evt.which == 10)
{ {