Page Menu
Home
Phabricator
Search
Configure Global Search
Log In
Files
F15380759
D11508.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
7 KB
Referenced Files
None
Subscribers
None
D11508.diff
View Options
diff --git a/resources/celerity/map.php b/resources/celerity/map.php
--- a/resources/celerity/map.php
+++ b/resources/celerity/map.php
@@ -7,8 +7,8 @@
*/
return array(
'names' => array(
- 'core.pkg.css' => 'a793698c',
- 'core.pkg.js' => '63963771',
+ 'core.pkg.css' => '30ec4610',
+ 'core.pkg.js' => '55716d41',
'darkconsole.pkg.js' => '8ab24e01',
'differential.pkg.css' => '8af45893',
'differential.pkg.js' => 'f437e70e',
@@ -39,7 +39,7 @@
'rsrc/css/application/base/main-menu-view.css' => '7bb9c588',
'rsrc/css/application/base/notification-menu.css' => '6aa0a74b',
'rsrc/css/application/base/phabricator-application-launch-view.css' => '16ca323f',
- 'rsrc/css/application/base/standard-page-view.css' => '6dafdb3b',
+ 'rsrc/css/application/base/standard-page-view.css' => '661ae3e3',
'rsrc/css/application/chatlog/chatlog.css' => '852140ff',
'rsrc/css/application/config/config-options.css' => '7fedf08b',
'rsrc/css/application/config/config-template.css' => '25d446d6',
@@ -107,7 +107,7 @@
'rsrc/css/core/core.css' => 'd7f6ec35',
'rsrc/css/core/remarkup.css' => '0ee3d256',
'rsrc/css/core/syntax.css' => '56c1ba38',
- 'rsrc/css/core/z-index.css' => '07df2e53',
+ 'rsrc/css/core/z-index.css' => '40eb7003',
'rsrc/css/diviner/diviner-shared.css' => '38813222',
'rsrc/css/font/font-awesome.css' => '21b0ced7',
'rsrc/css/font/font-source-sans-pro.css' => '91d53463',
@@ -188,7 +188,7 @@
'rsrc/externals/javelin/ext/view/__tests__/ViewInterpreter.js' => '7a94d6a5',
'rsrc/externals/javelin/ext/view/__tests__/ViewRenderer.js' => '6ea96ac9',
'rsrc/externals/javelin/lib/Cookie.js' => '62dfea03',
- 'rsrc/externals/javelin/lib/DOM.js' => 'c5ca25cf',
+ 'rsrc/externals/javelin/lib/DOM.js' => '2d66f6ec',
'rsrc/externals/javelin/lib/History.js' => 'c60f4327',
'rsrc/externals/javelin/lib/JSON.js' => '69adf288',
'rsrc/externals/javelin/lib/Leader.js' => '331b1611',
@@ -197,7 +197,7 @@
'rsrc/externals/javelin/lib/Resource.js' => '44959b73',
'rsrc/externals/javelin/lib/Routable.js' => 'b3e7d692',
'rsrc/externals/javelin/lib/Router.js' => '29274e2b',
- 'rsrc/externals/javelin/lib/Scrollbar.js' => '814d9ea1',
+ 'rsrc/externals/javelin/lib/Scrollbar.js' => '479fd9f1',
'rsrc/externals/javelin/lib/URI.js' => '6eff08aa',
'rsrc/externals/javelin/lib/Vector.js' => 'cc1bd0b0',
'rsrc/externals/javelin/lib/WebSocket.js' => '3f840822',
@@ -648,7 +648,7 @@
'javelin-color' => '7e41274a',
'javelin-cookie' => '62dfea03',
'javelin-diffusion-locate-file-source' => 'b42eddc7',
- 'javelin-dom' => 'c5ca25cf',
+ 'javelin-dom' => '2d66f6ec',
'javelin-dynval' => 'f6555212',
'javelin-event' => '85ea0626',
'javelin-fx' => '54b612ba',
@@ -666,7 +666,7 @@
'javelin-resource' => '44959b73',
'javelin-routable' => 'b3e7d692',
'javelin-router' => '29274e2b',
- 'javelin-scrollbar' => '814d9ea1',
+ 'javelin-scrollbar' => '479fd9f1',
'javelin-stratcom' => '8b0ad945',
'javelin-tokenizer' => '7644823e',
'javelin-typeahead' => '70baed2f',
@@ -731,7 +731,7 @@
'phabricator-side-menu-view-css' => '7e8c6341',
'phabricator-slowvote-css' => '266df6a1',
'phabricator-source-code-view-css' => '7d346aa4',
- 'phabricator-standard-page-view' => '6dafdb3b',
+ 'phabricator-standard-page-view' => '661ae3e3',
'phabricator-textareautils' => '5c93c52c',
'phabricator-title' => '5c1c758c',
'phabricator-tooltip' => '1d298e3a',
@@ -747,7 +747,7 @@
'phabricator-uiexample-reactor-select' => 'a155550f',
'phabricator-uiexample-reactor-sendclass' => '1def2711',
'phabricator-uiexample-reactor-sendproperties' => 'b1f0ccee',
- 'phabricator-zindex-css' => '07df2e53',
+ 'phabricator-zindex-css' => '40eb7003',
'phame-css' => '19ecc703',
'pholio-css' => '95174bdd',
'pholio-edit-css' => '3ad9d1ee',
@@ -999,6 +999,13 @@
'javelin-stratcom',
'phabricator-keyboard-shortcut',
),
+ '2d66f6ec' => array(
+ 'javelin-magical-init',
+ 'javelin-install',
+ 'javelin-util',
+ 'javelin-vector',
+ 'javelin-stratcom',
+ ),
'2f6efe18' => array(
'javelin-behavior',
'javelin-dom',
@@ -1109,6 +1116,12 @@
'javelin-view-renderer',
'javelin-install',
),
+ '479fd9f1' => array(
+ 'javelin-install',
+ 'javelin-dom',
+ 'javelin-stratcom',
+ 'javelin-vector',
+ ),
'47c794d8' => array(
'javelin-install',
'javelin-dom',
@@ -1372,12 +1385,6 @@
'javelin-behavior',
'javelin-history',
),
- '814d9ea1' => array(
- 'javelin-install',
- 'javelin-dom',
- 'javelin-stratcom',
- 'javelin-vector',
- ),
82439934 => array(
'javelin-behavior',
'javelin-dom',
@@ -1689,13 +1696,6 @@
'javelin-stratcom',
'javelin-vector',
),
- 'c5ca25cf' => array(
- 'javelin-magical-init',
- 'javelin-install',
- 'javelin-util',
- 'javelin-vector',
- 'javelin-stratcom',
- ),
'c60f4327' => array(
'javelin-stratcom',
'javelin-install',
diff --git a/webroot/rsrc/css/application/base/standard-page-view.css b/webroot/rsrc/css/application/base/standard-page-view.css
--- a/webroot/rsrc/css/application/base/standard-page-view.css
+++ b/webroot/rsrc/css/application/base/standard-page-view.css
@@ -194,3 +194,8 @@
.jx-scrollbar-bar .jx-scrollbar-visible {
opacity: 0.7;
}
+
+.jx-scrollbar-link {
+ position: absolute;
+ left: -50px;
+}
diff --git a/webroot/rsrc/css/core/z-index.css b/webroot/rsrc/css/core/z-index.css
--- a/webroot/rsrc/css/core/z-index.css
+++ b/webroot/rsrc/css/core/z-index.css
@@ -97,6 +97,10 @@
z-index: 9;
}
+.jx-scrollbar-bar {
+ z-index: 9;
+}
+
.jx-mask {
z-index: 10;
}
@@ -129,10 +133,6 @@
z-index: 17;
}
-.jx-scrollbar-bar {
- z-index: 18;
-}
-
.pholio-device-lightbox {
z-index: 20;
}
diff --git a/webroot/rsrc/externals/javelin/lib/Scrollbar.js b/webroot/rsrc/externals/javelin/lib/Scrollbar.js
--- a/webroot/rsrc/externals/javelin/lib/Scrollbar.js
+++ b/webroot/rsrc/externals/javelin/lib/Scrollbar.js
@@ -147,6 +147,29 @@
// If we activated the scrollbar, the viewport and content nodes become
// the new scroll and content frames.
JX.DOM.setContentFrame(this._viewport, this._content);
+
+ // If nothing is focused, or the document body is focused, change focus
+ // to the viewport. This makes the arrow keys, spacebar, and page
+ // up/page down keys work immediately after the page loads, without
+ // requiring a click.
+
+ // Focusing the <div /> itself doesn't work on any browser, so we
+ // add a fake, focusable element and focus that instead.
+ var focus = document.activeElement;
+ if (!focus || focus == window.document.body) {
+ var link = JX.$N('a', {href: '#', className: 'jx-scrollbar-link'});
+ JX.DOM.listen(link, 'blur', null, function() {
+ // When the user clicks anything else, remove this.
+ JX.DOM.remove(link);
+ });
+ JX.DOM.listen(link, 'click', null, function(e) {
+ // Don't respond to clicks. Since the link isn't visible, this
+ // most likely means the user hit enter or something like that.
+ e.kill();
+ });
+ JX.DOM.prependContent(this._viewport, link);
+ JX.DOM.focus(link);
+ }
} else {
// Otherwise, the unaltered content frame is both the scroll frame and
// content frame.
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Mar 15 2025, 4:21 AM (5 w, 4 d ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
7637190
Default Alt Text
D11508.diff (7 KB)
Attached To
Mode
D11508: Make scroll keys active immediately upon page load
Attached
Detach File
Event Timeline
Log In to Comment