Page MenuHomePhorge

D25773.1732282098.diff
No OneTemporary

D25773.1732282098.diff

diff --git a/resources/celerity/map.php b/resources/celerity/map.php
--- a/resources/celerity/map.php
+++ b/resources/celerity/map.php
@@ -10,7 +10,7 @@
'conpherence.pkg.css' => '2f25eb4f',
'conpherence.pkg.js' => '020aebcf',
'core.pkg.css' => 'ac619266',
- 'core.pkg.js' => '2eeda9e0',
+ 'core.pkg.js' => '8c86adab',
'dark-console.pkg.js' => '187792c2',
'differential.pkg.css' => 'fda9518d',
'differential.pkg.js' => '46fcb3af',
@@ -476,7 +476,7 @@
'rsrc/js/core/behavior-device.js' => 'ac2b1e01',
'rsrc/js/core/behavior-drag-and-drop-textarea.js' => '6bc7ccf7',
'rsrc/js/core/behavior-fancy-datepicker.js' => 'b545d0a0',
- 'rsrc/js/core/behavior-form.js' => '55d7b788',
+ 'rsrc/js/core/behavior-form.js' => 'c60fb44a',
'rsrc/js/core/behavior-gesture.js' => 'b58d1a2a',
'rsrc/js/core/behavior-global-drag-and-drop.js' => '1cab0e9a',
'rsrc/js/core/behavior-high-security-warning.js' => 'dae2d55b',
@@ -591,7 +591,7 @@
'javelin-behavior-aphlict-status' => 'c3703a16',
'javelin-behavior-aphront-basic-tokenizer' => '3b4899b0',
'javelin-behavior-aphront-drag-and-drop-textarea' => '6bc7ccf7',
- 'javelin-behavior-aphront-form-disable-on-submit' => '55d7b788',
+ 'javelin-behavior-aphront-form-disable-on-submit' => 'c60fb44a',
'javelin-behavior-aphront-more' => '506aa3f4',
'javelin-behavior-audio-source' => '3dc5ad43',
'javelin-behavior-audit-preview' => 'b7b73831',
@@ -1432,11 +1432,6 @@
'javelin-install',
'javelin-dom',
),
- '55d7b788' => array(
- 'javelin-behavior',
- 'javelin-stratcom',
- 'javelin-dom',
- ),
'5793d835' => array(
'javelin-install',
'javelin-util',
@@ -2034,6 +2029,11 @@
'javelin-stratcom',
'javelin-dom',
),
+ 'c60fb44a' => array(
+ 'javelin-behavior',
+ 'javelin-stratcom',
+ 'javelin-dom',
+ ),
'c687e867' => array(
'javelin-behavior',
'javelin-dom',
diff --git a/webroot/rsrc/js/core/behavior-form.js b/webroot/rsrc/js/core/behavior-form.js
--- a/webroot/rsrc/js/core/behavior-form.js
+++ b/webroot/rsrc/js/core/behavior-form.js
@@ -11,7 +11,24 @@
JX.Stratcom.listen('click', 'tag:button', function(e) {
var raw = e.getRawEvent();
- new_tab = (raw.altKey || raw.ctrlKey || raw.metaKey || raw.shiftKey);
+ // Only set new_tab if raw.detail is set. When Ctrl+Return is used on an
+ // input element, the event is bubbled through like so:
+ // <input> -> <button> -> <form>
+ //
+ // When the event hits the button element, we receive a click event without
+ // any of the *Key properties set to true, even if the key is held down. We
+ // can handle this by ignoring the fake click event, which is detectable
+ // through `raw.detail === 0`. `raw.detail` stolen from CSS Tricks:
+ // https://css-tricks.com/when-a-click-is-not-just-a-click/
+ if (raw.detail !== 0) {
+ new_tab = (raw.altKey || raw.ctrlKey || raw.metaKey || raw.shiftKey);
+ }
+ });
+
+ JX.Stratcom.listen('keydown', 'tag:input', function(e) {
+ var raw = e.getRawEvent();
+ new_tab = e.getSpecialKey() === 'return' &&
+ (raw.altKey || raw.ctrlKey || raw.metaKey || raw.shiftKey);
});

File Metadata

Mime Type
text/plain
Expires
Fri, Nov 22, 13:28 (19 h, 53 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
989183
Default Alt Text
D25773.1732282098.diff (3 KB)

Event Timeline