Commit ba18e0b2 authored by Jacob Schatz's avatar Jacob Schatz

Merge branch '14176-diff-paste-data' into 'master'

Copying and pasting doesn't grab line numbers or +/-

Fixes #14176 

See merge request !3687
parents 95ce4d29 80d8f8b8
...@@ -67,6 +67,24 @@ ...@@ -67,6 +67,24 @@
line-height: $code_line_height; line-height: $code_line_height;
font-size: $code_font_size; font-size: $code_font_size;
&.noteable_line {
position: relative;
&.old {
&:before {
content: '-';
position: absolute;
}
}
&.new {
&:before {
content: '+';
position: absolute;
}
}
}
span { span {
white-space: pre; white-space: pre;
} }
...@@ -391,3 +409,23 @@ ...@@ -391,3 +409,23 @@
margin-bottom: 0; margin-bottom: 0;
} }
} }
.file-holder {
.diff-line-num:not(.js-unfold-bottom) {
a {
&:before {
content: attr(data-linenumber);
}
}
}
}
.discussion {
.diff-content {
.diff-line-num {
&:before {
content: attr(data-linenumber);
}
}
}
}
...@@ -276,8 +276,7 @@ ul.notes { ...@@ -276,8 +276,7 @@ ul.notes {
.diff-file tr.line_holder { .diff-file tr.line_holder {
@mixin show-add-diff-note { @mixin show-add-diff-note {
filter: alpha(opacity=100); display: inline-block;
opacity: 1.0;
} }
.add-diff-note { .add-diff-note {
...@@ -291,13 +290,8 @@ ul.notes { ...@@ -291,13 +290,8 @@ ul.notes {
position: absolute; position: absolute;
z-index: 10; z-index: 10;
width: 32px; width: 32px;
transition: all 0.2s ease;
// "hide" it by default // "hide" it by default
opacity: 0.0; display: none;
filter: alpha(opacity=0);
&:hover { &:hover {
background: $gl-info; background: $gl-info;
color: #fff; color: #fff;
......
...@@ -40,10 +40,11 @@ module DiffHelper ...@@ -40,10 +40,11 @@ module DiffHelper
(unfold) ? 'unfold js-unfold' : '' (unfold) ? 'unfold js-unfold' : ''
end end
def diff_line_content(line) def diff_line_content(line, line_type = nil)
if line.blank? if line.blank?
"  ".html_safe "  ".html_safe
else else
line[0] = ' ' if %w[new old].include?(line_type)
line line
end end
end end
......
- if @lines.present? - if @lines.present?
- if @form.unfold? && @form.since != 1 && !@form.bottom? - if @form.unfold? && @form.since != 1 && !@form.bottom?
%tr.line_holder{ id: @form.since } %tr.line_holder{ id: @form.since }
= render "projects/diffs/match_line", {line: @match_line, = render "projects/diffs/match_line", { line: @match_line,
line_old: @form.since, line_new: @form.since, bottom: false, new_file: false} line_old: @form.since, line_new: @form.since, bottom: false, new_file: false }
- @lines.each_with_index do |line, index| - @lines.each_with_index do |line, index|
- line_new = index + @form.since - line_new = index + @form.since
- line_old = line_new - @form.offset - line_old = line_new - @form.offset
%tr.line_holder %tr.line_holder
%td.old_line.diff-line-num{data: {linenumber: line_old}} %td.old_line.diff-line-num{ data: { linenumber: line_old } }
= link_to raw(line_old), "#" = link_to raw(line_old), "#"
%td.new_line.diff-line-num %td.new_line.diff-line-num{ data: { linenumber: line_old } }
= link_to raw(line_new) , "#" = link_to raw(line_new) , "#"
%td.line_content.noteable_line==#{' ' * @form.indent}#{line} %td.line_content.noteable_line==#{' ' * @form.indent}#{line}
- if @form.unfold? && @form.bottom? && @form.to < @blob.loc - if @form.unfold? && @form.bottom? && @form.to < @blob.loc
%tr.line_holder{ id: @form.to } %tr.line_holder{ id: @form.to }
= render "projects/diffs/match_line", {line: @match_line, = render "projects/diffs/match_line", { line: @match_line,
line_old: @form.to, line_new: @form.to, bottom: true, new_file: false} line_old: @form.to, line_new: @form.to, bottom: true, new_file: false }
- type = line.type - type = line.type
%tr.line_holder{id: line_code, class: type} %tr.line_holder{ id: line_code, class: type }
- case type - case type
- when 'match' - when 'match'
= render "projects/diffs/match_line", {line: line.text, = render "projects/diffs/match_line", { line: line.text,
line_old: line.old_pos, line_new: line.new_pos, bottom: false, new_file: diff_file.new_file} line_old: line.old_pos, line_new: line.new_pos, bottom: false, new_file: diff_file.new_file }
- when 'nonewline' - when 'nonewline'
%td.old_line.diff-line-num %td.old_line.diff-line-num
%td.new_line.diff-line-num %td.new_line.diff-line-num
%td.line_content.match= line.text %td.line_content.match= line.text
- else - else
%td.old_line.diff-line-num{class: type} %td.old_line.diff-line-num{ class: type, data: { linenumber: line.new_pos } }
- link_text = raw(type == "new" ? "&nbsp;" : line.old_pos) - link_text = type == "new" ? "&nbsp;".html_safe : line.old_pos
- if defined?(plain) && plain - if defined?(plain) && plain
= link_text = link_text
- else - else
= link_to link_text, "##{line_code}", id: line_code = link_to "", "##{line_code}", id: line_code, data: { linenumber: link_text }
- if @comments_allowed && can?(current_user, :create_note, @project) - if @comments_allowed && can?(current_user, :create_note, @project)
= link_to_new_diff_note(line_code) = link_to_new_diff_note(line_code)
%td.new_line.diff-line-num{class: type, data: {linenumber: line.new_pos}} %td.new_line.diff-line-num{ class: type, data: { linenumber: line.new_pos } }
- link_text = raw(type == "old" ? "&nbsp;" : line.new_pos) - link_text = type == "old" ? "&nbsp;".html_safe : line.new_pos
- if defined?(plain) && plain - if defined?(plain) && plain
= link_text = link_text
- else - else
= link_to link_text, "##{line_code}", id: line_code = link_to "", "##{line_code}", id: line_code, data: { linenumber: link_text }
%td.line_content{class: "noteable_line #{type} #{line_code}", data: { line_code: line_code }}= diff_line_content(line.text) %td.line_content{ class: ['noteable_line', type, line_code], data: { line_code: line_code } }= diff_line_content(line.text, type)
...@@ -20,11 +20,9 @@ ...@@ -20,11 +20,9 @@
%td.new_line.diff-line-num= "..." %td.new_line.diff-line-num= "..."
%td.line_content.match= line.text %td.line_content.match= line.text
- else - else
%td.old_line.diff-line-num %td.old_line.diff-line-num{ data: { linenumber: type == "new" ? "&nbsp;".html_safe : line.old_pos } }
= raw(type == "new" ? "&nbsp;" : line.old_pos) %td.new_line.diff-line-num{ data: { linenumber: type == "old" ? "&nbsp;".html_safe : line.new_pos } }
%td.new_line.diff-line-num %td.line_content{ class: ['noteable_line', type, line_code], line_code: line_code }= diff_line_content(line.text, type)
= raw(type == "old" ? "&nbsp;" : line.new_pos)
%td.line_content{class: "noteable_line #{type} #{line_code}", line_code: line_code}= diff_line_content(line.text)
- if line_code == note.line_code - if line_code == note.line_code
= render "projects/notes/diff_notes_with_reply", notes: discussion_notes = render "projects/notes/diff_notes_with_reply", notes: discussion_notes
...@@ -227,7 +227,7 @@ module SharedDiffNote ...@@ -227,7 +227,7 @@ module SharedDiffNote
end end
def click_diff_line(code) def click_diff_line(code)
find("button[data-line-code='#{code}']").click find("button[data-line-code='#{code}']").trigger('click')
end end
def click_parallel_diff_line(code, line_type) def click_parallel_diff_line(code, line_type)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment