compute between bytes and chars to get correct clipboard copy

This commit is contained in:
2021-10-25 17:52:14 +02:00
parent b8eb62a3bf
commit 7002e91a35
4 changed files with 28 additions and 12 deletions

View File

@@ -26,15 +26,23 @@ class HighlightSelection(Highlight):
if line.intersects(begin, end):
if line.includes_byte(begin):
start = begin - line.byte_offset()
start_byte_in_line = begin - line.byte_offset()
else:
start = 0
start_byte_in_line = 0
if line.includes_byte(end):
length = end - line.byte_offset() - start
length_in_bytes = end - line.byte_offset() - start_byte_in_line
else:
length = Settings.max_line_length() - start
# renders the highlighting to the end of the line
# this is how selections usually behave
length_in_bytes = Settings.max_line_length() - start_byte_in_line
return [HighlightedRange(start, length, brush=QBrush(QColor(156, 215, 255)), pen=Qt.PenStyle.NoPen)]
start_char = line.byte_index_to_char_index(start_byte_in_line)
end_char = line.byte_index_to_char_index(start_byte_in_line+length_in_bytes)
length_in_chars = end_char - start_char
#print("selected: %s" % (line.substr(start_char, length_in_chars)))
return [HighlightedRange(start_char, length_in_chars, brush=QBrush(QColor(156, 215, 255)), pen=Qt.PenStyle.NoPen)]
else:
return None