Replace scroll_pos by scroll_pos_px()/_perc()

This commit is contained in:
Florian Bruhin 2016-06-14 15:15:45 +02:00
parent ed716b2b90
commit 363f3d7ea7
6 changed files with 19 additions and 13 deletions

View File

@ -150,8 +150,10 @@ class AbstractTab(QWidget):
def load_status(self): def load_status(self):
raise NotImplementedError raise NotImplementedError
@property def scroll_pos_perc(self):
def scroll_pos(self): raise NotImplementedError
def scroll_pos_px(self):
raise NotImplementedError raise NotImplementedError
def openurl(self, url): def openurl(self, url):

View File

@ -86,9 +86,11 @@ class WebEngineViewTab(tab.AbstractTab):
def load_status(self): def load_status(self):
return usertypes.LoadStatus.success return usertypes.LoadStatus.success
@property def scroll_pos_perc(self):
def scroll_pos(self): return (0, 0) # FIXME
return (0, 0)
def scroll_pos_px(self):
return self._widget.page().scrollPosition()
def set_zoom_factor(self, factor): def set_zoom_factor(self, factor):
self._widget.setZoomFactor(factor) self._widget.setZoomFactor(factor)

View File

@ -63,7 +63,7 @@ class WebViewHistory(tab.AbstractHistory):
if 'zoom' in cur_data: if 'zoom' in cur_data:
self.tab.zoom_perc(cur_data['zoom'] * 100) self.tab.zoom_perc(cur_data['zoom'] * 100)
if ('scroll-pos' in cur_data and if ('scroll-pos' in cur_data and
self.tab.scroll_position() == QPoint(0, 0)): self.tab.scroll_pos_px() == QPoint(0, 0)):
QTimer.singleShot(0, functools.partial( QTimer.singleShot(0, functools.partial(
self.tab.scroll, cur_data['scroll-pos'])) self.tab.scroll, cur_data['scroll-pos']))
@ -92,10 +92,12 @@ class WebViewTab(tab.AbstractTab):
def load_status(self): def load_status(self):
return self._widget.load_status return self._widget.load_status
@property def scroll_pos_perc(self):
def scroll_pos(self):
return self._widget.scroll_pos return self._widget.scroll_pos
def scroll_pos_px(self):
return self._widget.page().mainFrame().scrollPosition()
def dump_async(self, callback=None, *, plain=False): def dump_async(self, callback=None, *, plain=False):
frame = self._widget.page().mainFrame() frame = self._widget.page().mainFrame()
if plain: if plain:

View File

@ -52,4 +52,4 @@ class Percentage(textbase.TextBase):
@pyqtSlot(webview.WebView) @pyqtSlot(webview.WebView)
def on_tab_changed(self, tab): def on_tab_changed(self, tab):
"""Update scroll position when tab changed.""" """Update scroll position when tab changed."""
self.set_perc(*tab.scroll_pos) self.set_perc(*tab.scroll_pos_perc())

View File

@ -127,7 +127,7 @@ class TabWidget(QTabWidget):
except qtutils.QtValueError: except qtutils.QtValueError:
fields['host'] = '' fields['host'] = ''
y = widget.scroll_pos[1] y = widget.scroll_pos_perc()[1]
if y <= 0: if y <= 0:
scroll_pos = 'top' scroll_pos = 'top'
elif y >= 100: elif y >= 100:

View File

@ -165,15 +165,15 @@ class SessionManager(QObject):
user_data = item.userData() user_data = item.userData()
if tab.history.current_idx() == idx: if tab.history.current_idx() == idx:
pos = tab.scroll_pos pos = tab.scroll_pos_px()
item_data['zoom'] = tab.zoom_factor() item_data['zoom'] = tab.zoom_factor()
item_data['scroll-pos'] = {'x': pos[0], 'y': pos[1]} item_data['scroll-pos'] = {'x': pos.x(), 'y': pos.y()}
elif user_data is not None: elif user_data is not None:
if 'zoom' in user_data: if 'zoom' in user_data:
item_data['zoom'] = user_data['zoom'] item_data['zoom'] = user_data['zoom']
if 'scroll-pos' in user_data: if 'scroll-pos' in user_data:
pos = user_data['scroll-pos'] pos = user_data['scroll-pos']
item_data['scroll-pos'] = {'x': pos[0], 'y': pos[1]} item_data['scroll-pos'] = {'x': pos.x(), 'y': pos.y()}
data['history'].append(item_data) data['history'].append(item_data)
return data return data