Page MenuHomePhabricator

D21249.diff
No OneTemporary

D21249.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' => '0efaf0ac',
'dark-console.pkg.js' => '187792c2',
'differential.pkg.css' => 'd71d4531',
- 'differential.pkg.js' => '06a7949c',
+ 'differential.pkg.js' => 'ac6914bb',
'diffusion.pkg.css' => '42c75c37',
'diffusion.pkg.js' => 'a98c0bf7',
'maniphest.pkg.css' => '35995d6d',
@@ -380,7 +380,7 @@
'rsrc/js/application/dashboard/behavior-dashboard-query-panel-select.js' => '1e413dc9',
'rsrc/js/application/dashboard/behavior-dashboard-tab-panel.js' => '0116d3e8',
'rsrc/js/application/diff/DiffChangeset.js' => '20715b98',
- 'rsrc/js/application/diff/DiffChangesetList.js' => '4a3639a1',
+ 'rsrc/js/application/diff/DiffChangesetList.js' => '9d5b137e',
'rsrc/js/application/diff/DiffInline.js' => '6227a0e3',
'rsrc/js/application/diff/DiffPathView.js' => '8207abf9',
'rsrc/js/application/diff/DiffTreeView.js' => '5d83623b',
@@ -775,7 +775,7 @@
'phabricator-darkmessage' => '26cd4b73',
'phabricator-dashboard-css' => '5a205b9d',
'phabricator-diff-changeset' => '20715b98',
- 'phabricator-diff-changeset-list' => '4a3639a1',
+ 'phabricator-diff-changeset-list' => '9d5b137e',
'phabricator-diff-inline' => '6227a0e3',
'phabricator-diff-path-view' => '8207abf9',
'phabricator-diff-tree-view' => '5d83623b',
@@ -1327,11 +1327,6 @@
'490e2e2e' => array(
'phui-oi-list-view-css',
),
- '4a3639a1' => array(
- 'javelin-install',
- 'phuix-button-view',
- 'phabricator-diff-tree-view',
- ),
'4a7fb02b' => array(
'javelin-behavior',
'javelin-dom',
@@ -1821,6 +1816,11 @@
'javelin-uri',
'phabricator-textareautils',
),
+ '9d5b137e' => array(
+ 'javelin-install',
+ 'phuix-button-view',
+ 'phabricator-diff-tree-view',
+ ),
'9f081f05' => array(
'javelin-behavior',
'javelin-dom',
diff --git a/webroot/rsrc/js/application/diff/DiffChangesetList.js b/webroot/rsrc/js/application/diff/DiffChangesetList.js
--- a/webroot/rsrc/js/application/diff/DiffChangesetList.js
+++ b/webroot/rsrc/js/application/diff/DiffChangesetList.js
@@ -2232,34 +2232,36 @@
_updateSourceSelection: function() {
var ranges = this._getSelectedRanges();
- // If we have zero or more than one range, don't do anything.
- if (ranges.length === 1) {
- for (var ii = 0; ii < ranges.length; ii++) {
- var range = ranges[ii];
+ // In Firefox, selecting multiple rows gives us multiple ranges. In
+ // Safari and Chrome, we get a single range.
+ if (!ranges.length) {
+ this._setSourceSelection(null, null);
+ return;
+ }
- var head = range.startContainer;
- var last = range.endContainer;
+ var min = 0;
+ var max = ranges.length - 1;
- var head_loc = this._getFragmentLocation(head);
- var last_loc = this._getFragmentLocation(last);
+ var head = ranges[min].startContainer;
+ var last = ranges[max].endContainer;
- if (head_loc === null || last_loc === null) {
- break;
- }
+ var head_loc = this._getFragmentLocation(head);
+ var last_loc = this._getFragmentLocation(last);
- if (head_loc.changesetID !== last_loc.changesetID) {
- break;
- }
-
- head_loc.offset += range.startOffset;
- last_loc.offset += range.endOffset;
+ if (head_loc === null || last_loc === null) {
+ this._setSourceSelection(null, null);
+ return;
+ }
- this._setSourceSelection(head_loc, last_loc);
- return;
- }
+ if (head_loc.changesetID !== last_loc.changesetID) {
+ this._setSourceSelection(null, null);
+ return;
}
- this._setSourceSelection(null, null);
+ head_loc.offset += ranges[min].startOffset;
+ last_loc.offset += ranges[max].endOffset;
+
+ this._setSourceSelection(head_loc, last_loc);
},
_setSourceSelection: function(start, end) {
@@ -2382,6 +2384,8 @@
// Find the line number and display column for the fragment.
var line = null;
var column_count = -1;
+ var has_new = false;
+ var has_old = false;
var offset = null;
var target_node = null;
var td;
@@ -2415,6 +2419,18 @@
while (cursor) {
if (cursor.getAttribute('data-copy-mode')) {
column_count++;
+ } else {
+ // In unified mode, the content column isn't currently marked
+ // with an attribute, and we can't count content columns anyway.
+ // Keep track of whether or not we see a "NL" (New Line) column
+ // and/or an "OL" (Old Line) column to try to puzzle out which
+ // side of the display change we're on.
+
+ if (cursor.id.match(/NL/)) {
+ has_new = true;
+ } else if (cursor.id.match(/OL/)) {
+ has_old = true;
+ }
}
var n = parseInt(cursor.getAttribute('data-n'));
@@ -2434,7 +2450,15 @@
}
if (column_count < 0) {
- return null;
+ if (has_new || has_old) {
+ if (has_new) {
+ column_count = 1;
+ } else {
+ column_count = 0;
+ }
+ } else {
+ return null;
+ }
}
var seen = 0;

File Metadata

Mime Type
text/plain
Expires
Sat, Nov 23, 8:10 AM (13 h, 9 m)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
6777885
Default Alt Text
D21249.diff (5 KB)

Event Timeline