select word on double click

This commit is contained in:
2021-11-01 15:13:41 +01:00
parent 2f1aabb379
commit f471f4785e
5 changed files with 88 additions and 15 deletions

View File

@@ -184,6 +184,18 @@ class InnerBigText(QWidget):
self.selection_highlight.set_end_byte(offset)
self.update()
def mouseDoubleClickEvent(self, e: QtGui.QMouseEvent) -> None:
if e.buttons() == Qt.MouseButton.LeftButton:
offset = self.to_byte_offset(e)
(_word, start_byte, end_byte) = self.model.read_word_at(offset)
if start_byte >= 0 and end_byte >= 0:
self.selection_highlight.set_start(start_byte)
self.selection_highlight.set_end_byte(end_byte)
else:
self.selection_highlight.set_start(offset)
self.selection_highlight.set_end_byte(offset)
self.update()
def mouseMoveEvent(self, e: QMouseEvent):
if e.buttons() != Qt.MouseButton.LeftButton:
@@ -243,7 +255,7 @@ class InnerBigText(QWidget):
if line_number < len(self.lines):
line = self.lines[line_number]
column_in_line = self.x_pos_to_column(e.pos().x()) + self._left_offset
char_in_line = min(column_in_line, line.length())
char_in_line = min(column_in_line, line.length() - 1)
# print("%s in line %s" % (char_in_line, line_number))
byte_in_line = line.char_index_to_byte(char_in_line)
current_byte = line.byte_offset() + byte_in_line