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' => 'fb144113', - 'core.pkg.js' => 'e39d336b', + 'core.pkg.js' => '57d0e1c4', 'darkconsole.pkg.js' => 'ca8671ce', - 'differential.pkg.css' => 'cc216438', + 'differential.pkg.css' => '331c38d9', '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' => 'd1951f43', + 'rsrc/css/application/differential/changeset-view.css' => 'df93fa84', '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' => 'c3e218fe', + 'rsrc/js/core/behavior-oncopy.js' => 'e69e4400', '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' => 'd1951f43', + 'differential-changeset-view-css' => 'df93fa84', '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' => 'c3e218fe', + 'javelin-behavior-phabricator-oncopy' => 'e69e4400', 'javelin-behavior-phabricator-remarkup-assist' => 'c021950a', 'javelin-behavior-phabricator-reveal-content' => '8f24abfc', 'javelin-behavior-phabricator-search-typeahead' => 'f6b56f7a', @@ -1634,11 +1634,6 @@ 2 => 'javelin-util', 3 => 'javelin-magical-init', ), - 'c3e218fe' => - array( - 0 => 'javelin-behavior', - 1 => 'javelin-dom', - ), 'c4b31646' => array( 0 => 'javelin-request', @@ -1814,6 +1809,11 @@ 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 @@ -7,6 +7,17 @@ return false; } + private function renderColgroup() { + return phutil_tag('colgroup', array(), array( + phutil_tag('col', array('class' => 'num')), + phutil_tag('col', array('class' => 'left')), + phutil_tag('col', array('class' => 'num')), + phutil_tag('col', array('class' => 'copy')), + phutil_tag('col', array('class' => 'right')), + phutil_tag('col', array('class' => 'cov')), + )); + } + public function renderTextChange( $range_start, $range_len, @@ -31,6 +42,8 @@ } $html = array(); + $html[] = $this->renderColgroup(); + $old_lines = $this->getOldLines(); $new_lines = $this->getNewLines(); $gaps = $this->getGaps(); @@ -184,7 +197,7 @@ } $o_num = null; - $o_classes = 'left'; + $o_classes = ''; $o_text = null; if (isset($old_lines[$ii])) { $o_num = $old_lines[$ii]['line']; @@ -192,14 +205,15 @@ if ($old_lines[$ii]['type']) { if ($old_lines[$ii]['type'] == '\\') { $o_text = $old_lines[$ii]['text']; - $o_classes .= ' comment'; + $o_class = 'comment'; } else if ($original_left && !isset($highlight_old[$o_num])) { - $o_classes .= ' old-rebase'; + $o_class = 'old-rebase'; } else if (empty($new_lines[$ii])) { - $o_classes .= ' old old-full'; + $o_class = 'old old-full'; } else { - $o_classes .= ' old'; + $o_class = 'old'; } + $o_classes = $o_class; } } @@ -265,7 +279,6 @@ } } } - $n_classes .= ' right'.$n_colspan; if (isset($hunk_starts[$o_num])) { $html[] = $context_not_available; @@ -283,10 +296,11 @@ $n_id = null; } - // 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: 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: The Javascript is sensitive to whitespace changes in this // block! @@ -326,9 +340,9 @@ } $html[] = phutil_tag('tr', array('class' => 'inline'), array( phutil_tag('th', array()), - phutil_tag('td', array('class' => 'left'), $comment_html), + phutil_tag('td', array(), $comment_html), phutil_tag('th', array()), - phutil_tag('td', array('colspan' => 3, 'class' => 'right3'), $new), + phutil_tag('td', array('colspan' => 3), $new), )); } } @@ -338,11 +352,11 @@ $on_right = true); $html[] = phutil_tag('tr', array('class' => 'inline'), array( phutil_tag('th', array()), - phutil_tag('td', array('class' => 'left')), + phutil_tag('td', array()), phutil_tag('th', array()), phutil_tag( 'td', - array('colspan' => 3, 'class' => 'right3'), + array('colspan' => 3), $comment_html), )); } @@ -391,9 +405,9 @@ $comment_html = $this->renderInlineComment($comment, $on_right = false); $html_old[] = phutil_tag('tr', array('class' => 'inline'), array( phutil_tag('th', array()), - phutil_tag('td', array('class' => 'left'), $comment_html), + phutil_tag('td', array(), $comment_html), phutil_tag('th', array()), - phutil_tag('td', array('colspan' => 3, 'class' => 'right3')), + phutil_tag('td', array('colspan' => 3)), )); } } @@ -402,11 +416,11 @@ $comment_html = $this->renderInlineComment($comment, $on_right = true); $html_new[] = phutil_tag('tr', array('class' => 'inline'), array( phutil_tag('th', array()), - phutil_tag('td', array('class' => 'left')), + phutil_tag('td', array()), phutil_tag('th', array()), phutil_tag( 'td', - array('colspan' => 3, 'class' => 'right3'), + array('colspan' => 3), $comment_html), )); } @@ -424,12 +438,15 @@ $th_new = phutil_tag('th', array('id' => "C{$id}OL1"), 1); } - $output = hsprintf( + $output = array(); + $output[] = $this->renderColgroup(); + + $output[] = hsprintf( '