Changeset 102796 in webkit


Ignore:
Timestamp:
Dec 14, 2011 10:30:55 AM (12 years ago)
Author:
ojan@chromium.org
Message:

Give a resize handle for sidebyside diffs.
https://bugs.webkit.org/show_bug.cgi?id=74465

Reviewed by Ryosuke Niwa.

This gives a drag handle so you can make the side-by-side
diff not be 50/50 on a per-file-diff basis. This is useful
for cases like new files where there's no value on the
left side.

  • PrettyPatch/PrettyPatch.rb:
  • code-review.js:
Location:
trunk/Websites/bugs.webkit.org
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/Websites/bugs.webkit.org/ChangeLog

    r102719 r102796  
     12011-12-13  Ojan Vafai  <ojan@chromium.org>
     2
     3        Give a resize handle for sidebyside diffs.
     4        https://bugs.webkit.org/show_bug.cgi?id=74465
     5
     6        Reviewed by Ryosuke Niwa.
     7
     8        This gives a drag handle so you can make the side-by-side
     9        diff not be 50/50 on a per-file-diff basis. This is useful
     10        for cases like new files where there's no value on the
     11        left side.
     12
     13        * PrettyPatch/PrettyPatch.rb:
     14        * code-review.js:
     15
    1162011-12-13  Ojan Vafai  <ojan@chromium.org>
    217
  • trunk/Websites/bugs.webkit.org/PrettyPatch/PrettyPatch.rb

    r100349 r102796  
    142142    font-family: monospace;
    143143    margin: 1em 0;
     144    position: relative;
    144145}
    145146
     
    188189}
    189190
    190 .LineSide:last-child {
    191     float: right;
    192 }
    193 
    194191.LineSide,
    195192.sidebyside .DiffBlockPart.remove,
    196193.sidebyside .DiffBlockPart.add {
    197194    display:inline-block;
    198     width:50%;
     195    width: 50%;
    199196    vertical-align: top;
     197}
     198
     199.sidebyside .resizeHandle {
     200    width: 5px;
     201    height: 100%;
     202    cursor: move;
     203    position: absolute;
     204    top: 0;
     205    left: 50%;
     206}
     207
     208.sidebyside .resizeHandle:hover {
     209    background-color: grey;
     210    opacity: 0.5;
    200211}
    201212
  • trunk/Websites/bugs.webkit.org/code-review.js

    r102719 r102796  
    6464    console.log('No attachment ID');
    6565
     66  var minLeftSideRatio = 10;
     67  var maxLeftSideRatio = 90;
     68  var file_diff_being_resized = null;
    6669  var next_line_id = 0;
    6770  var files = {};
     
    11401143    updateToolbarAnchorState();
    11411144    loadDiffState();
     1145    generateFileDiffResizeStyleElement();
    11421146  };
    11431147
     
    12231227    if (diffState(file_diff) == diff_type)
    12241228      return;
     1229
     1230    if (!$('.resizeHandle', file_diff).length)
     1231      $(file_diff).append('<div class="resizeHandle"></div>');
    12251232
    12261233    $(file_diff).removeClass('sidebyside unified');
     
    17141721  }
    17151722
    1716   $(document.body).bind('mouseup', processSelectedLines);
     1723  $('.resizeHandle').live('mousedown', function(event) {
     1724    file_diff_being_resized = $(this).parent('.FileDiff');
     1725  });
     1726
     1727  function generateFileDiffResizeStyleElement() {
     1728    // FIXME: Once we support calc, we can replace this with something that uses the attribute value.
     1729    var styleText = '';
     1730    for (var i = minLeftSideRatio; i <= maxLeftSideRatio; i++) {
     1731      // FIXME: Once we support calc, put the resize handle at calc(i% - 5) so it doesn't cover up
     1732      // the right-side line numbers.
     1733      styleText += '.FileDiff[leftsidewidth="' + i + '"] .resizeHandle {' +
     1734        'left: ' + i + '%' +
     1735      '}' +
     1736      '.FileDiff[leftsidewidth="' + i + '"] .LineSide:first-child,' +
     1737      '.FileDiff[leftsidewidth="' + i + '"].sidebyside .DiffBlockPart.remove {' +
     1738        'width:' + i + '%;' +
     1739      '}' +
     1740      '.FileDiff[leftsidewidth="' + i + '"] .LineSide:last-child,' +
     1741      '.FileDiff[leftsidewidth="' + i + '"].sidebyside .DiffBlockPart.add {' +
     1742        'width:' + (100 - i) + '%;' +
     1743      '}';
     1744    }
     1745    var styleElement = document.createElement('style');
     1746    styleElement.innerText = styleText;
     1747    document.head.appendChild(styleElement);
     1748  }
     1749
     1750  $(document).bind('mousemove', function(event) {
     1751    if (!file_diff_being_resized)
     1752      return;
     1753
     1754    var ratio = event.pageX / window.innerWidth;
     1755    var percentage = Math.floor(ratio * 100);
     1756    if (percentage < minLeftSideRatio)
     1757      percentage = minLeftSideRatio;
     1758    if (percentage > maxLeftSideRatio)
     1759      percentage = maxLeftSideRatio;
     1760    file_diff_being_resized.attr('leftsidewidth', percentage);
     1761    event.preventDefault();
     1762  });
     1763
     1764  $(document).bind('mouseup', function(event) {
     1765    file_diff_being_resized = null;
     1766    processSelectedLines();
     1767  });
    17171768
    17181769  $('.lineNumber').live('click', function(e) {
Note: See TracChangeset for help on using the changeset viewer.