From: Sven Depondt Date: Fri, 28 Jul 2017 20:32:18 +0000 (+0200) Subject: Use id when handling hotkeys for specific dialogs X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=0978dbf8905fd6bbeaa6259678a96884760b1963;p=transmission Use id when handling hotkeys for specific dialogs Identifying a dialog by it's header title is kinda dirty and now we use the dialogs id instead. We also check if the dialog is visible before executing the hotkey action. --- diff --git a/web/javascript/dialog.js b/web/javascript/dialog.js index 13baca3dd..9e58c9c3e 100644 --- a/web/javascript/dialog.js +++ b/web/javascript/dialog.js @@ -41,6 +41,11 @@ Dialog.prototype = { * *--------------------------------------------*/ + executeCallback: function () { + this._callback(); + dialog.hideDialog(); + }, + hideDialog: function () { $('body.dialog_showing').removeClass('dialog_showing'); this._container.hide(); @@ -48,14 +53,16 @@ Dialog.prototype = { transmission.updateButtonStates(); }, + isVisible: function () { + return this._container.is(':visible'); + }, + onCancelClicked: function (event) { event.data.dialog.hideDialog(); }, onConfirmClicked: function (event) { - var dialog = event.data.dialog; - dialog._callback(); - dialog.hideDialog(); + event.data.dialog.executeCallback(); }, /*-------------------------------------------- diff --git a/web/javascript/transmission.js b/web/javascript/transmission.js index bf0ea998a..9cc2436ba 100644 --- a/web/javascript/transmission.js +++ b/web/javascript/transmission.js @@ -505,9 +505,7 @@ Transmission.prototype = { } if (o_key || u_key) { - $('body').addClass('open_showing'); - this.uploadTorrentFile(); - this.updateButtonStates(); + this.openTorrentClicked(ev); handled = true; } @@ -527,36 +525,61 @@ Transmission.prototype = { } } + if (slash_key) { + this.showHotkeysDialog(); + handled = true; + } + if (enter_key) { - // check if remove dialog - if ($('.dialog_heading:visible').text().match("Remove") != null) { - $("#dialog_confirm_button").click(); + // handle other dialogs + if (dialog && dialog.isVisible()) { + dialog.executeCallback(); handled = true; } - // check if upload torrent dialog - if ($('.dialog_heading:visible').text() == "Upload Torrent Files") { + // handle upload dialog + if ($('#upload_container').is(':visible')) { this.confirmUploadClicked(); handled = true; } - // check if location dialog - if ($('.dialog_heading:visible').text() == "Set Location") { + // handle move dialog + if ($('#move_container').is(':visible')) { this.confirmMoveClicked(); handled = true; } - } - if (slash_key) { - this.showHotkeysDialog(); - handled = true; + // handle rename dialog + if ($('#rename_container').is(':visible')) { + this.confirmRenameClicked(); + handled = true; + } } if (esc_key) { - this.hideMoveDialog(); - this.hideUploadDialog(); - dialog.hideDialog(); - handled = true; + // handle other dialogs + if (dialog && dialog.isVisible()) { + dialog.hideDialog(); + handled = true; + } + + // handle upload dialog + if ($('#upload_container').is(':visible')) { + this.hideUploadDialog(); + handled = true; + } + + // handle move dialog + if ($('#move_container').is(':visible')) { + this.hideMoveDialog(); + handled = true; + } + + // handle rename dialog + if ($('#rename_container').is(':visible')) { + this.hideRenameDialog(); + handled = true; + } } if ((up_key || dn_key) && rows.length) {