diff --git a/resources/celerity/map.php b/resources/celerity/map.php --- a/resources/celerity/map.php +++ b/resources/celerity/map.php @@ -8,9 +8,9 @@ 'names' => array( 'core.pkg.css' => 'ab5dd633', - 'core.pkg.js' => '68839013', + 'core.pkg.js' => 'c5b39816', 'darkconsole.pkg.js' => 'ca8671ce', - 'differential.pkg.css' => '9578e86b', + 'differential.pkg.css' => '12c11318', 'differential.pkg.js' => '11a5b750', 'diffusion.pkg.css' => '3783278d', 'diffusion.pkg.js' => '5b4010f4', @@ -55,7 +55,7 @@ 'rsrc/css/application/countdown/timer.css' => '86b7b0a0', 'rsrc/css/application/diff/inline-comment-summary.css' => '14a91639', 'rsrc/css/application/differential/add-comment.css' => 'c478bcaa', - 'rsrc/css/application/differential/changeset-view.css' => '6a0299e9', + 'rsrc/css/application/differential/changeset-view.css' => '1570a1ff', 'rsrc/css/application/differential/core.css' => '7ac3cabc', 'rsrc/css/application/differential/results-table.css' => '239924f9', 'rsrc/css/application/differential/revision-comment.css' => '48186045', @@ -463,7 +463,7 @@ 'rsrc/js/core/behavior-line-linker.js' => 'bc778103', 'rsrc/js/core/behavior-more.js' => '9b9197be', 'rsrc/js/core/behavior-object-selector.js' => 'b4eef37b', - 'rsrc/js/core/behavior-oncopy.js' => 'e69e4400', + 'rsrc/js/core/behavior-oncopy.js' => 'c3e218fe', 'rsrc/js/core/behavior-phabricator-nav.js' => 'b5842a5e', 'rsrc/js/core/behavior-phabricator-remarkup-assist.js' => 'c021950a', 'rsrc/js/core/behavior-refresh-csrf.js' => 'c4b31646', @@ -505,7 +505,7 @@ 'conpherence-notification-css' => '403cf598', 'conpherence-update-css' => '1099a660', 'conpherence-widget-pane-css' => '87b12e0c', - 'differential-changeset-view-css' => '6a0299e9', + 'differential-changeset-view-css' => '1570a1ff', 'differential-core-view-css' => '7ac3cabc', 'differential-inline-comment-editor' => 'f2441746', 'differential-results-table-css' => '239924f9', @@ -596,7 +596,7 @@ 'javelin-behavior-phabricator-nav' => 'b5842a5e', 'javelin-behavior-phabricator-notification-example' => 'c51a6616', 'javelin-behavior-phabricator-object-selector' => 'b4eef37b', - 'javelin-behavior-phabricator-oncopy' => 'e69e4400', + 'javelin-behavior-phabricator-oncopy' => 'c3e218fe', 'javelin-behavior-phabricator-remarkup-assist' => 'c021950a', 'javelin-behavior-phabricator-reveal-content' => '8f24abfc', 'javelin-behavior-phabricator-search-typeahead' => 'f6b56f7a', @@ -1635,6 +1635,11 @@ 2 => 'javelin-util', 3 => 'javelin-magical-init', ), + 'c3e218fe' => + array( + 0 => 'javelin-behavior', + 1 => 'javelin-dom', + ), 'c4b31646' => array( 0 => 'javelin-request', @@ -1810,11 +1815,6 @@ 2 => 'javelin-view-visitor', 3 => 'javelin-util', ), - 'e69e4400' => - array( - 0 => 'javelin-behavior', - 1 => 'javelin-dom', - ), 'e7c21fb3' => array( 0 => 'javelin-dom', diff --git a/src/applications/differential/render/DifferentialChangesetTwoUpRenderer.php b/src/applications/differential/render/DifferentialChangesetTwoUpRenderer.php --- a/src/applications/differential/render/DifferentialChangesetTwoUpRenderer.php +++ b/src/applications/differential/render/DifferentialChangesetTwoUpRenderer.php @@ -284,11 +284,10 @@ $n_id = null; } - // NOTE: This is a unicode 'word joiner' (essentially a non-breaking - // zero-width space), which we use as a hint when intercepting 'copy' - // events to make sure sensible text ends up on the clipboard. - // See the 'phabricator-oncopy' behavior. - $zero_space = "\xE2\x81\xA0"; + // NOTE: This is a unicode zero-width space, which we use as a hint when + // intercepting 'copy' events to make sure sensible text ends up on the + // clipboard. See the 'phabricator-oncopy' behavior. + $zero_space = "\xE2\x80\x8B"; // NOTE: The Javascript is sensitive to whitespace changes in this // block! @@ -301,7 +300,10 @@ phutil_tag( 'td', array('class' => $n_classes, 'colspan' => $n_colspan), - array($zero_space, $n_text)), + array( + phutil_tag('span', array('class' => 'zwsp'), $zero_space), + $n_text + )), $n_cov, )); diff --git a/src/applications/diffusion/controller/DiffusionBrowseFileController.php b/src/applications/diffusion/controller/DiffusionBrowseFileController.php --- a/src/applications/diffusion/controller/DiffusionBrowseFileController.php +++ b/src/applications/diffusion/controller/DiffusionBrowseFileController.php @@ -789,7 +789,7 @@ $anchor_text, // NOTE: See phabricator-oncopy behavior. - "\xE2\x81\xA0", + "\xE2\x80\x8B", // TODO: [HTML] Not ideal. phutil_safe_html(str_replace("\t", ' ', $line['data'])), diff --git a/src/view/layout/PhabricatorSourceCodeView.php b/src/view/layout/PhabricatorSourceCodeView.php --- a/src/view/layout/PhabricatorSourceCodeView.php +++ b/src/view/layout/PhabricatorSourceCodeView.php @@ -62,7 +62,7 @@ } else { $content_number = $line_number; // NOTE: See phabricator-oncopy behavior. - $content_line = hsprintf("\xE2\x81\xA0%s", $line); + $content_line = hsprintf("\xE2\x80\x8B%s", $line); } $row_attributes = array(); diff --git a/webroot/rsrc/css/application/differential/changeset-view.css b/webroot/rsrc/css/application/differential/changeset-view.css --- a/webroot/rsrc/css/application/differential/changeset-view.css +++ b/webroot/rsrc/css/application/differential/changeset-view.css @@ -59,6 +59,11 @@ line-height: 16px; } +.differential-diff td .zwsp { + position: absolute; + width: 0; +} + .differential-diff th { text-align: right; padding: 2px 6px 0px 0px; diff --git a/webroot/rsrc/js/core/behavior-oncopy.js b/webroot/rsrc/js/core/behavior-oncopy.js --- a/webroot/rsrc/js/core/behavior-oncopy.js +++ b/webroot/rsrc/js/core/behavior-oncopy.js @@ -16,7 +16,7 @@ */ JX.behavior('phabricator-oncopy', function() { - var zws = "\u2060"; // Unicode Word Joiner (Non-Breaking Zero-Width Space) + var zws = "\u200B"; // Unicode Zero-Width Space JX.enableDispatch(document.body, 'copy'); JX.Stratcom.listen(