diff --git a/www/common/common-interface.js b/www/common/common-interface.js index 2ae963a71..c44742ce5 100644 --- a/www/common/common-interface.js +++ b/www/common/common-interface.js @@ -56,10 +56,24 @@ define([ return handler; }; var customListenForKeys = function (keys, cb, el) { - if (!keys || typeof cb !== "function") { return; } + if (!keys || !keys.length || typeof cb !== "function") { return; } + console.log(keys); var handler = function (e) { + console.log('keydown', e.which); e.stopPropagation(); - if (keys.indexOf(e.which) !== -1) { cb(); } + keys.some(function (k) { + console.log(k); + // k is number or array + // if it's an array, it should be [keyCode, "{ctrl|alt|shift|meta}"] + if (Array.isArray(k) && e.which === k[0] && e[k[1] + 'Key']) { + cb(); + return true; + } + if (e.which === k && !e.shiftKey && !e.altKey && !e.metaKey && !e.ctrlKey) { + cb(); + return true; + } + }); }; $(el || window).keydown(handler); return handler; @@ -318,7 +332,7 @@ define([ b.onClick(); close($(this).parents('.alertify').first()); }); - if (b.keys && b.keys.length) { $(button).attr('data-keys', b.keys.join(',')); } + if (b.keys && b.keys.length) { $(button).attr('data-keys', JSON.stringify(b.keys)); } navs.push(button); }); var frame = h('div', [ @@ -334,7 +348,7 @@ define([ content ]); $(frame).find('button[data-keys]').each(function (i, el) { - var keys = $(el).attr('data-keys'); + var keys = JSON.parse($(el).attr('data-keys')); customListenForKeys(keys, function () { if (!$(el).is(':visible')) { return; } $(el).click(); diff --git a/www/common/common-ui-elements.js b/www/common/common-ui-elements.js index 2d999558e..ffcc5a2b2 100644 --- a/www/common/common-ui-elements.js +++ b/www/common/common-ui-elements.js @@ -298,24 +298,26 @@ define([ $(link).find('#cp-share-link-preview').val(getLinkValue()); }); var linkButtons = [{ + name: Messages.cancel, + onClick: function () {}, + keys: [27] + }, { name: Messages.share_linkCopy, onClick: function () { saveValue(); var v = getLinkValue(); var success = Clipboard.copy(v); if (success) { UI.log(Messages.shareSuccess); } - } + }, + keys: [13] }, { name: Messages.share_linkOpen, onClick: function () { saveValue(); var v = getLinkValue(); window.open(v); - } - }, { - name: Messages.cancel, - onClick: function () {}, - keys: [27] + }, + keys: [[13, 'ctrl']] }]; var frameLink = UI.dialog.customModal(link, {buttons: linkButtons}); @@ -334,16 +336,17 @@ define([ UI.dialog.selectable(getEmbedValue()) ]); var embedButtons = [{ + name: Messages.cancel, + onClick: function () {}, + keys: [27] + }, { name: Messages.share_linkCopy, onClick: function () { var v = getEmbedValue(); var success = Clipboard.copy(v); if (success) { UI.log(Messages.shareSuccess); } - } - }, { - name: Messages.cancel, - onClick: function () {}, - keys: [27] + }, + keys: [13] }]; var frameEmbed = UI.dialog.customModal(embed, { buttons: embedButtons}); @@ -389,16 +392,17 @@ define([ var getLinkValue = function () { return url; }; $(link).find('#cp-share-link-preview').val(getLinkValue()); var linkButtons = [{ + name: Messages.cancel, + onClick: function () {}, + keys: [27] + }, { name: Messages.share_linkCopy, onClick: function () { var v = getLinkValue(); var success = Clipboard.copy(v); if (success) { UI.log(Messages.shareSuccess); } - } - }, { - name: Messages.cancel, - onClick: function () {}, - keys: [27] + }, + keys: [13] }]; var frameLink = UI.dialog.customModal(link, {buttons: linkButtons}); @@ -413,16 +417,17 @@ define([ UI.dialog.selectable(common.getMediatagFromHref(url)), ]); var embedButtons = [{ + name: Messages.cancel, + onClick: function () {}, + keys: [27] + }, { name: Messages.share_mediatagCopy, onClick: function () { var v = common.getMediatagFromHref(url); var success = Clipboard.copy(v); if (success) { UI.log(Messages.shareSuccess); } - } - }, { - name: Messages.cancel, - onClick: function () {}, - keys: [27] + }, + keys: [13] }]; var frameEmbed = UI.dialog.customModal(embed, { buttons: embedButtons});