@@ -136,6 +136,8 @@ def _qt_create_toolbars(self):
136136
137137 self .scroll_time = QT .QScrollBar (orientation = QT .Qt .Horizontal )
138138 self .scroll_time .valueChanged .connect (self ._qt_on_scroll_time )
139+ self ._qt_update_scroll_step ()
140+
139141 if self .controller .has_extension ("events" ):
140142 bottom_layout = QT .QHBoxLayout ()
141143 bottom_layout .addWidget (self .scroll_time , stretch = 8 )
@@ -209,13 +211,17 @@ def _qt_initialize_plot(self):
209211 self .gains = None
210212 self .offsets = None
211213
212- def _qt_update_scroll_limits (self ):
214+ def _qt_update_scroll_step (self ):
213215 segment_index = self .controller .get_time ()[1 ]
214216 length = self .controller .get_num_samples (segment_index )
217+ num_scrollbar_steps = max (2 ** 16 , length )
218+ self .scroll_step = length / num_scrollbar_steps
219+
215220 t_start , t_stop = self .controller .get_t_start_t_stop ()
216221 self .timeseeker .set_start_stop (t_start , t_stop , seek = False )
222+
217223 self .scroll_time .setMinimum (0 )
218- self .scroll_time .setMaximum (length - 1 )
224+ self .scroll_time .setMaximum (num_scrollbar_steps - 1 )
219225
220226 def _qt_change_segment (self , segment_index ):
221227 #TODO: dirty because now seg_pos IS segment_index
@@ -224,7 +230,8 @@ def _qt_change_segment(self, segment_index):
224230 if segment_index != self .combo_seg .currentIndex ():
225231 self .combo_seg .setCurrentIndex (segment_index )
226232
227- self ._qt_update_scroll_limits ()
233+ self ._qt_update_scroll_step ()
234+
228235 if not self ._block_auto_refresh_and_notify :
229236 self .refresh ()
230237 self .notify_time_info_updated ()
@@ -255,7 +262,8 @@ def _qt_xsize_zoom(self, xmove):
255262 self .spinbox_xsize .setValue (newsize )
256263
257264 def _qt_on_scroll_time (self , val ):
258- time = self .controller .sample_index_to_time (val )
265+ sample = int (val * self .scroll_step )
266+ time = self .controller .sample_index_to_time (sample )
259267 self .timeseeker .seek (time )
260268
261269 def _qt_seek_with_selected_spike (self ):
@@ -677,7 +685,6 @@ def _qt_make_layout(self):
677685 self .plot .addItem (self .scatter )
678686
679687 self .layout .addWidget (self .bottom_toolbar )
680- self ._qt_update_scroll_limits ()
681688
682689 def _qt_on_settings_changed (self ):
683690 # adjust xsize spinbox bounds, and adjust xsize if out of bounds
@@ -707,12 +714,11 @@ def _qt_seek(self, t):
707714
708715 xsize = self .xsize
709716 t1 , t2 = t - xsize / 3. , t + xsize * 2 / 3.
710- sr = self .controller .sampling_frequency
711717
712718 self .scroll_time .valueChanged .disconnect (self ._qt_on_scroll_time )
713- value = self .controller .time_to_sample_index (t )
719+ sample = self .controller .time_to_sample_index (t )
720+ value = int (sample / self .scroll_step )
714721 self .scroll_time .setValue (value )
715- self .scroll_time .setPageStep (int (sr * xsize ))
716722 self .scroll_time .valueChanged .connect (self ._qt_on_scroll_time )
717723
718724 visible_channel_inds = self .get_visible_channel_inds ()
0 commit comments