Page Menu
Home
Phabricator
Search
Configure Global Search
Log In
Files
F14079434
D21249.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
5 KB
Referenced Files
None
Subscribers
None
D21249.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
@@ -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
Details
Attached
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)
Attached To
Mode
D21249: Improve select-to-comment behavior in Firefox and on unified diffs
Attached
Detach File
Event Timeline
Log In to Comment