Page MenuHomePhabricator

D18060.id43438.diff
No OneTemporary

D18060.id43438.diff

diff --git a/resources/celerity/map.php b/resources/celerity/map.php
--- a/resources/celerity/map.php
+++ b/resources/celerity/map.php
@@ -13,7 +13,7 @@
'core.pkg.js' => '1475bd91',
'darkconsole.pkg.js' => '1f9a31bc',
'differential.pkg.css' => 'a2755617',
- 'differential.pkg.js' => '5bf658f0',
+ 'differential.pkg.js' => '9cab3335',
'diffusion.pkg.css' => 'b93d9b8c',
'diffusion.pkg.js' => '84c8f8fd',
'favicon.ico' => '30672e08',
@@ -391,7 +391,7 @@
'rsrc/js/application/dashboard/behavior-dashboard-move-panels.js' => '408bf173',
'rsrc/js/application/dashboard/behavior-dashboard-query-panel-select.js' => '453c5375',
'rsrc/js/application/dashboard/behavior-dashboard-tab-panel.js' => 'd4eecc63',
- 'rsrc/js/application/diff/DiffChangeset.js' => '1f6748ae',
+ 'rsrc/js/application/diff/DiffChangeset.js' => 'aaaf4cb5',
'rsrc/js/application/diff/DiffChangesetList.js' => '85abc805',
'rsrc/js/application/diff/DiffInline.js' => '1d17130f',
'rsrc/js/application/diff/behavior-preview-link.js' => '051c7832',
@@ -770,7 +770,7 @@
'phabricator-darklog' => 'c8e1ffe3',
'phabricator-darkmessage' => 'c48cccdd',
'phabricator-dashboard-css' => 'fe5b1869',
- 'phabricator-diff-changeset' => '1f6748ae',
+ 'phabricator-diff-changeset' => 'aaaf4cb5',
'phabricator-diff-changeset-list' => '85abc805',
'phabricator-diff-inline' => '1d17130f',
'phabricator-drag-and-drop-file-upload' => '58dea2fa',
@@ -1024,17 +1024,6 @@
'javelin-uri',
'javelin-routable',
),
- '1f6748ae' => array(
- 'javelin-dom',
- 'javelin-util',
- 'javelin-stratcom',
- 'javelin-install',
- 'javelin-workflow',
- 'javelin-router',
- 'javelin-behavior-device',
- 'javelin-vector',
- 'phabricator-diff-inline',
- ),
'1f6794f6' => array(
'javelin-behavior',
'javelin-stratcom',
@@ -1716,6 +1705,17 @@
'javelin-util',
'phabricator-prefab',
),
+ 'aaaf4cb5' => array(
+ 'javelin-dom',
+ 'javelin-util',
+ 'javelin-stratcom',
+ 'javelin-install',
+ 'javelin-workflow',
+ 'javelin-router',
+ 'javelin-behavior-device',
+ 'javelin-vector',
+ 'phabricator-diff-inline',
+ ),
'ab2f381b' => array(
'javelin-request',
'javelin-behavior',
diff --git a/webroot/rsrc/js/application/diff/DiffChangeset.js b/webroot/rsrc/js/application/diff/DiffChangeset.js
--- a/webroot/rsrc/js/application/diff/DiffChangeset.js
+++ b/webroot/rsrc/js/application/diff/DiffChangeset.js
@@ -516,14 +516,35 @@
var target_bot = (target_pos.y + target_dim.y);
// Detect if the changeset is entirely (or, at least, almost entirely)
- // above us.
- var above_screen = (target_bot < old_pos.y + 128);
+ // above us. The height here is roughly the height of the persistent
+ // banner.
+ var above_screen = (target_bot < old_pos.y + 64);
+
+ // If we have a URL anchor and are currently nearby, stick to it
+ // no matter what.
+ var on_target = null;
+ if (window.location.hash) {
+ try {
+ var anchor = JX.$(window.location.hash.replace('#', ''));
+ if (anchor) {
+ var anchor_pos = JX.$V(anchor);
+ if ((anchor_pos.y > old_pos.y) &&
+ (anchor_pos.y < old_pos.y + 96)) {
+ on_target = anchor;
+ }
+ }
+ } catch (ignored) {
+ // If we have a bogus anchor, just ignore it.
+ }
+ }
var frame = this._getContentFrame();
JX.DOM.setContent(frame, JX.$H(response.changeset));
if (this._stabilize) {
- if (!near_top) {
+ if (on_target) {
+ JX.DOM.scrollToPosition(old_pos.x, JX.$V(on_target).y - 60);
+ } else if (!near_top) {
if (near_bot || above_screen) {
// Figure out how much taller the document got.
var delta = (JX.Vector.getDocument().y - old_dim.y);

File Metadata

Mime Type
text/plain
Expires
Thu, Mar 20, 2:40 PM (1 d, 9 h ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
7713287
Default Alt Text
D18060.id43438.diff (3 KB)

Event Timeline