update min/max for scaledScrollbar
has some issues when scrolling to the end
This commit is contained in:
@@ -73,7 +73,9 @@ class BigText(QWidget):
|
||||
self.grid.setVerticalSpacing(0)
|
||||
self.setLayout(self.grid)
|
||||
|
||||
self.big_text = InnerBigText(self, model)
|
||||
self.v_scroll_bar = ScaledScrollBar()
|
||||
|
||||
self.big_text = InnerBigText(self, model, self.v_scroll_bar)
|
||||
self.big_text.setSizePolicy(QSizePolicy(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Expanding))
|
||||
|
||||
self.h_scroll_bar = QScrollBar(Qt.Orientation.Horizontal)
|
||||
@@ -81,7 +83,6 @@ class BigText(QWidget):
|
||||
self.h_scroll_bar.setMaximum(1)
|
||||
self.h_scroll_bar.valueChanged.connect(self.big_text.h_scroll_event)
|
||||
|
||||
self.v_scroll_bar = ScaledScrollBar()
|
||||
# self.v_scroll_bar.setPageStep(1)
|
||||
self.v_scroll_bar.scaledValueChanged.connect(self.big_text.v_scroll_event)
|
||||
self.v_scroll_bar.scrolled_to_end.connect(self.big_text.v_scroll_update_follow_tail)
|
||||
@@ -104,7 +105,6 @@ class BigText(QWidget):
|
||||
range_start = int(byte_count * (lower_value / 100.0))
|
||||
range_end = int(byte_count * (upper_value / 100.0))
|
||||
print(f"-> {lower_value}, {upper_value}, {range_start}, {range_end}")
|
||||
self.v_scroll_bar.set_range(range_start, range_end)
|
||||
self.big_text.set_range(range_start, range_end)
|
||||
|
||||
def get_file(self):
|
||||
@@ -138,11 +138,12 @@ class InnerBigText(QWidget):
|
||||
_range_start = 0
|
||||
_range_end = -1
|
||||
|
||||
def __init__(self, parent: BigText, model: LogFileModel):
|
||||
def __init__(self, parent: BigText, model: LogFileModel, v_scaled_scrollbar: ScaledScrollBar):
|
||||
super(InnerBigText, self).__init__()
|
||||
self.char_height = None
|
||||
self.char_width = None
|
||||
self.model = model
|
||||
self._v_scaled_scrollbar = v_scaled_scrollbar
|
||||
self.parent = parent
|
||||
self.setFocusPolicy(Qt.FocusPolicy.StrongFocus)
|
||||
self.setFocusPolicy(Qt.FocusPolicy.WheelFocus)
|
||||
@@ -161,13 +162,17 @@ class InnerBigText(QWidget):
|
||||
"",
|
||||
is_regex=False,
|
||||
ignore_case=True,
|
||||
hit_background_color="d7efffc0") # same blue as the selection hightlight, but with lower saturation
|
||||
hit_background_color="d7efffc0") # same blue as the selection highlight, but with lower saturation
|
||||
|
||||
self.line_click_listeners: [Callable[[int], None]] = []
|
||||
|
||||
def set_range(self, range_start: int, range_end: int):
|
||||
self._range_start = range_start
|
||||
self._range_end = range_end
|
||||
|
||||
self._v_scaled_scrollbar.setMinimum(max(0, self._range_start))
|
||||
self._v_scaled_scrollbar.setMaximum(min(self._v_scaled_scrollbar.maximum(), range_end))
|
||||
|
||||
self._set_byte_offset(self._byte_offset)
|
||||
|
||||
def _set_byte_offset(self, byte_offset: int):
|
||||
@@ -465,7 +470,8 @@ class InnerBigText(QWidget):
|
||||
self._byte_offset = self.lines[0].byte_offset() if len(self.lines) > 0 else 0
|
||||
# print("new byte offset: ", self._byte_offset)
|
||||
# document length == maximum + pageStep + aFewBytesSoThatTheLastLineIsShown
|
||||
self.parent.v_scroll_bar.setMaximum(self.model.byte_count() - 1)
|
||||
vmax = self.model.byte_count() - 1 if self._range_end < 0 else min(self._range_end, self.model.byte_count() - 1)
|
||||
self.parent.v_scroll_bar.setMaximum(vmax)
|
||||
|
||||
for line in self.lines:
|
||||
self.update_longest_line(len(line.line()))
|
||||
|
||||
Reference in New Issue
Block a user