Skip to content

Commit

Permalink
Merge pull request #341 from csmith/master
Browse files Browse the repository at this point in the history
Fix copying styled text bug.
  • Loading branch information
greboid committed Jan 16, 2015
2 parents 1a5a78e + 361678e commit edcd15b
Showing 1 changed file with 14 additions and 6 deletions.
20 changes: 14 additions & 6 deletions ui_swing/src/com/dmdirc/addons/ui_swing/textpane/TextPane.java
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,8 @@

import org.jdesktop.jxlayer.JXLayer;

import static com.google.common.base.Preconditions.checkArgument;

/**
* Styled, scrollable text pane.
*/
Expand Down Expand Up @@ -288,18 +290,21 @@ public String getSelectedText(final boolean styled) {
}
} else if (i == selectedRange.getStartLine()) {
//loop from start of range to the end
if (selectedRange.getStartPos() != -1) {
selectedText.append(getText(line, selectedRange.getStartPos(),
Styliser.stipControlCodes(line).length(), styled));
final int length = Styliser.stipControlCodes(line).length();
if (selectedRange.getStartPos() != -1 && selectedRange.getStartPos() < length) {
// Ensure that we're actually selecting some text on this line
selectedText.append(getText(line, selectedRange.getStartPos(), length,
styled));
}
} else if (i == selectedRange.getEndLine()) {
//loop from start to end of range
if (selectedRange.getEndPos() != -1) {
selectedText.append(getText(line, 0, selectedRange .getEndPos(), styled));
if (selectedRange.getEndPos() > 0) {
selectedText.append(getText(line, 0, selectedRange.getEndPos(), styled));
}
} else {
//loop the whole line
selectedText.append(getText(line, 0, line.length(), styled));
final int length = Styliser.stipControlCodes(line).length();
selectedText.append(getText(line, 0, length, styled));
}
}
}
Expand All @@ -319,6 +324,9 @@ public String getSelectedText(final boolean styled) {
*/
private String getText(final String text, final int start, final int end,
final boolean styled) {
checkArgument(start < end, "'start' (" + start + ") must be less than 'end' (" + end + ')');
checkArgument(start >= 0, "'start' (" + start + ") must be non-negative");

if (styled) {
return Styliser.getStyledText(text, start, end);
} else {
Expand Down

0 comments on commit edcd15b

Please sign in to comment.