From ed221d908d5afd5a3968c6b2a5c2461138ad1660 Mon Sep 17 00:00:00 2001 From: Andreas Huber Date: Sat, 17 Dec 2022 18:56:56 +0100 Subject: [PATCH] respect range limit when selecting all text --- src/ui/bigtext/bigtext.py | 6 ++++-- src/ui/bigtext/logFileModel.py | 12 ++++++++++++ 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/ui/bigtext/bigtext.py b/src/ui/bigtext/bigtext.py index 8956733..c4a3207 100644 --- a/src/ui/bigtext/bigtext.py +++ b/src/ui/bigtext/bigtext.py @@ -432,8 +432,10 @@ class InnerBigText(QWidget): PluginRegistry.execute("open_file", selected_file) def _select_all(self): - self.selection_highlight.start_byte = 0 - self.selection_highlight.end_byte = self.model.byte_count() + self.selection_highlight.start_byte = self.model.get_line_start_at(self._range_start) + end_byte = self.model.byte_count() if self._range_end < 0 else min( + self.model.byte_count(), self._range_end) + self.selection_highlight.end_byte = self.model.get_line_end_at(end_byte) self._update_highlight_selected_text() self.update() diff --git a/src/ui/bigtext/logFileModel.py b/src/ui/bigtext/logFileModel.py index eadce9f..0050128 100644 --- a/src/ui/bigtext/logFileModel.py +++ b/src/ui/bigtext/logFileModel.py @@ -79,6 +79,18 @@ class LogFileModel: target.write(buffer) offset = new_offset + def get_line_start_at(self, byte_offset: int) -> int: + lines = self.data(byte_offset, 0, 1, 0, -1); + if len(lines) == 0: + return 0 + return lines[0].byte_offset() + + def get_line_end_at(self, byte_offset: int) -> int: + lines = self.data(byte_offset, 0, 1, 0, -1); + if len(lines) == 0: + return 0 + return lines[0].byte_end() + def read_word_at(self, byte_offset: int) -> (str, int, int): lines = self.data(byte_offset, 0, 1, 0, -1) if len(lines) == 0: