From 84b05d24b0b7cfeb9c19684909b25dbd35c41a90 Mon Sep 17 00:00:00 2001
From: Pierre Ossman <ossman@cendio.se>
Date: Fri, 3 Feb 2017 13:19:15 +0100
Subject: [PATCH] Allow submitting the password from the input field

---
 app/styles/base.css | 16 +++++++++++-----
 app/ui.js           |  5 +++--
 vnc.html            |  6 +++---
 3 files changed, 17 insertions(+), 10 deletions(-)

diff --git a/app/styles/base.css b/app/styles/base.css
index 0518acc..c8b63b3 100644
--- a/app/styles/base.css
+++ b/app/styles/base.css
@@ -91,7 +91,7 @@ input[type=input], input[type=password], input:not([type]), textarea {
   background: linear-gradient(to top, rgb(255, 255, 255) 80%, rgb(240, 240, 240));
 }
 
-input[type=button], select {
+input[type=button], input[type=submit], select {
   /* Disable default rendering */
   -webkit-appearance: none;
   -moz-appearance: none;
@@ -109,7 +109,7 @@ input[type=button], select {
   vertical-align: middle;
 }
 
-input[type=button] {
+input[type=button], input[type=submit] {
   padding-left: 20px;
   padding-right: 20px;
 }
@@ -121,29 +121,35 @@ option {
 
 input[type=input]:focus, input[type=password]:focus,
 input:not([type]):focus, input[type=button]:focus,
+input[type=submit]:focus,
 textarea:focus, select:focus {
   box-shadow: 0px 0px 3px rgba(74, 144, 217, 0.5);
   border-color: rgb(74, 144, 217);
   outline: none;
 }
 
-input[type=button]::-moz-focus-inner {
+input[type=button]::-moz-focus-inner,
+input[type=submit]::-moz-focus-inner {
   border: none;
 }
 
 input[type=input]:disabled, input[type=password]:disabled,
 input:not([type]):disabled, input[type=button]:disabled,
+input[type=submit]:disabled,
 textarea:disabled, select:disabled {
   color: rgb(128, 128, 128);
   background: rgb(240, 240, 240);
 }
 
-input[type=button]:active, select:active {
+input[type=button]:active, input[type=submit]:active,
+select:active {
   border-bottom-width: 1px;
   margin-top: 3px;
 }
 
-:root:not(.noVNC_touch) input[type=button]:hover:not(:disabled), :root:not(.noVNC_touch) select:hover:not(:disabled) {
+:root:not(.noVNC_touch) input[type=button]:hover:not(:disabled),
+:root:not(.noVNC_touch) input[type=submit]:hover:not(:disabled),
+:root:not(.noVNC_touch) select:hover:not(:disabled) {
   background: linear-gradient(to top, rgb(255, 255, 255), rgb(250, 250, 250));
 }
 
diff --git a/app/ui.js b/app/ui.js
index 4726355..83233a7 100644
--- a/app/ui.js
+++ b/app/ui.js
@@ -1152,13 +1152,14 @@ var UI;
             UI.showStatus(msg, "warning");
         },
 
-        setPassword: function() {
+        setPassword: function(e) {
             var password = document.getElementById('noVNC_password_input').value;
             UI.rfb.sendPassword(password);
             UI.reconnect_password = password;
             document.getElementById('noVNC_password_dlg')
                 .classList.remove('noVNC_open');
-            return false;
+            // Prevent actually submitting the form
+            e.preventDefault();
         },
 
 /* ------^-------
diff --git a/vnc.html b/vnc.html
index 0048046..c6f0d25 100644
--- a/vnc.html
+++ b/vnc.html
@@ -277,17 +277,17 @@
 
     <!-- Password Dialog -->
     <div class="noVNC_center noVNC_connect_layer">
-    <div id="noVNC_password_dlg" class="noVNC_panel">
+    <div id="noVNC_password_dlg" class="noVNC_panel"><form>
         <ul>
             <li>
                 <label>Password:</label>
                 <input id="noVNC_password_input" type="password" />
             </li>
             <li>
-                <input id="noVNC_password_button" type="button" value="Send Password" class="noVNC_submit" />
+                <input id="noVNC_password_button" type="submit" value="Send Password" class="noVNC_submit" />
             </li>
         </ul>
-    </div>
+    </form></div>
     </div>
 
     <!-- Transition Screens -->
-- 
GitLab