Skip to content

Commit 044a556

Browse files
committed
Merge branch 'development' into releases/3.3.4-beta2
2 parents 200b76e + 6c214b8 commit 044a556

File tree

2 files changed

+30
-34
lines changed

2 files changed

+30
-34
lines changed

app/src/ui/diff/side-by-side-diff-row.tsx

Lines changed: 27 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,12 @@ import { WhitespaceHintPopover } from './whitespace-hint-popover'
1919
import { TooltipDirection } from '../lib/tooltip'
2020
import { Button } from '../lib/button'
2121

22+
enum DiffRowPrefix {
23+
Added = '+',
24+
Deleted = '-',
25+
Nothing = '\u{A0}',
26+
}
27+
2228
interface ISideBySideDiffRowProps {
2329
/**
2430
* The row data. This contains most of the information used to render the row.
@@ -219,7 +225,7 @@ export class SideBySideDiffRow extends React.Component<
219225
isSelected
220226
)}
221227
{this.renderHunkHandle()}
222-
{this.renderContent(row.data)}
228+
{this.renderContent(row.data, DiffRowPrefix.Added)}
223229
{this.renderWhitespaceHintPopover(DiffColumn.After)}
224230
</div>
225231
</div>
@@ -235,7 +241,7 @@ export class SideBySideDiffRow extends React.Component<
235241
</div>
236242
<div className={afterClasses}>
237243
{this.renderLineNumber(lineNumber, DiffColumn.After, isSelected)}
238-
{this.renderContent(row.data)}
244+
{this.renderContent(row.data, DiffRowPrefix.Added)}
239245
{this.renderWhitespaceHintPopover(DiffColumn.After)}
240246
</div>
241247
{this.renderHunkHandle()}
@@ -257,7 +263,7 @@ export class SideBySideDiffRow extends React.Component<
257263
isSelected
258264
)}
259265
{this.renderHunkHandle()}
260-
{this.renderContent(row.data)}
266+
{this.renderContent(row.data, DiffRowPrefix.Deleted)}
261267
{this.renderWhitespaceHintPopover(DiffColumn.Before)}
262268
</div>
263269
</div>
@@ -271,12 +277,12 @@ export class SideBySideDiffRow extends React.Component<
271277
>
272278
<div className={beforeClasses}>
273279
{this.renderLineNumber(lineNumber, DiffColumn.Before, isSelected)}
274-
{this.renderContent(row.data)}
280+
{this.renderContent(row.data, DiffRowPrefix.Deleted)}
275281
{this.renderWhitespaceHintPopover(DiffColumn.Before)}
276282
</div>
277283
<div className={afterClasses}>
278284
{this.renderLineNumber(undefined, DiffColumn.After)}
279-
{this.renderContentFromString('')}
285+
{this.renderContentFromString('', [])}
280286
{this.renderWhitespaceHintPopover(DiffColumn.After)}
281287
</div>
282288
{this.renderHunkHandle()}
@@ -296,7 +302,7 @@ export class SideBySideDiffRow extends React.Component<
296302
DiffColumn.Before,
297303
before.isSelected
298304
)}
299-
{this.renderContent(before)}
305+
{this.renderContent(before, DiffRowPrefix.Deleted)}
300306
{this.renderWhitespaceHintPopover(DiffColumn.Before)}
301307
</div>
302308
<div
@@ -308,7 +314,7 @@ export class SideBySideDiffRow extends React.Component<
308314
DiffColumn.After,
309315
after.isSelected
310316
)}
311-
{this.renderContent(after)}
317+
{this.renderContent(after, DiffRowPrefix.Added)}
312318
{this.renderWhitespaceHintPopover(DiffColumn.After)}
313319
</div>
314320
{this.renderHunkHandle()}
@@ -338,23 +344,28 @@ export class SideBySideDiffRow extends React.Component<
338344

339345
private renderContentFromString(
340346
content: string,
341-
tokens: ReadonlyArray<ILineTokens> = []
347+
tokens: ReadonlyArray<ILineTokens> = [],
348+
prefix: DiffRowPrefix = DiffRowPrefix.Nothing
342349
) {
343350
return this.renderContent({ content, tokens, noNewLineIndicator: false })
344351
}
345352

346353
private renderContent(
347-
data: Pick<IDiffRowData, 'content' | 'noNewLineIndicator' | 'tokens'>
354+
data: Pick<IDiffRowData, 'content' | 'noNewLineIndicator' | 'tokens'>,
355+
prefix: DiffRowPrefix = DiffRowPrefix.Nothing
348356
) {
349357
return (
350358
<div className="content" onContextMenu={this.props.onContextMenuText}>
351-
{syntaxHighlightLine(data.content, data.tokens)}
352-
{data.noNewLineIndicator && (
353-
<Octicon
354-
symbol={narrowNoNewlineSymbol}
355-
title="No newline at end of file"
356-
/>
357-
)}
359+
<div className="prefix">&nbsp;&nbsp;{prefix}&nbsp;&nbsp;</div>
360+
<div className="content-wrapper">
361+
{syntaxHighlightLine(data.content, data.tokens)}
362+
{data.noNewLineIndicator && (
363+
<Octicon
364+
symbol={narrowNoNewlineSymbol}
365+
title="No newline at end of file"
366+
/>
367+
)}
368+
</div>
358369
</div>
359370
)
360371
}

app/styles/ui/_side-by-side-diff.scss

Lines changed: 3 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,7 @@
163163
}
164164

165165
.content {
166-
padding-left: var(--spacing);
166+
display: flex;
167167
white-space: pre-wrap;
168168
overflow-y: auto;
169169
flex-grow: 1;
@@ -175,9 +175,8 @@
175175
user-select: text;
176176
}
177177

178-
&:before {
179-
content: ' ';
180-
padding-right: var(--spacing);
178+
.prefix {
179+
user-select: none;
181180
}
182181

183182
.octicon {
@@ -264,20 +263,6 @@
264263
}
265264
}
266265

267-
&.added,
268-
&.modified {
269-
.after .content:before {
270-
content: '+';
271-
}
272-
}
273-
274-
&.deleted,
275-
&.modified {
276-
.before .content:before {
277-
content: '-';
278-
}
279-
}
280-
281266
&.context .before,
282267
&.context .after {
283268
background: var(--diff-background-color);

0 commit comments

Comments
 (0)