Hi, First of all, sorry for the late answer!
* Gregor Pohl <[email protected]> [2015-02-28 19:24:36 +0100]: > Attached is a patch adding a config option "input->rocker-gestures", > which disables the context menu and replaces it with Opera-like > rocker gestures. > > Specifically, holding the right mouse button and pressing the left > button will go back in history. Holding the left mouse button and > pressing the right button moves forward (It is very easy to get used > to this. I can't live without it anymore, hence the patch). > > I'm not sure if there is any interest in merging this, but I thought > I'd at least share the patch. I'd be okay with merging this - though I think the code can be simplified a bit: A QMouseEvent has a button() and a buttons() method: http://doc.qt.io/qt-5/qmouseevent.html#button Returns the button that caused the event. http://doc.qt.io/qt-5/qmouseevent.html#buttons Returns the button state when the event was generated. [...] For mouse press and double click events this includes the button that caused the event. Couldn't you just check if button() is Qt.LeftButton and buttons() is Qt.LeftButton | Qt.RightButton, instead of saving the button state yourself? Also there are some other issues and nitpicks - though for the minor stuff, if you prefer to not deal with my perfectionism that's perfectly fine, I can also do those changes for you :) > diff --git a/qutebrowser/browser/webview.py b/qutebrowser/browser/webview.py > index 13b2cbb..644e349 100644 > --- a/qutebrowser/browser/webview.py > +++ b/qutebrowser/browser/webview.py > @@ -42,6 +42,7 @@ LoadStatus = usertypes.enum('LoadStatus', ['none', > 'success', 'error', 'warn', > tab_id_gen = itertools.count(0) > > > + Remove that blank line. > @@ -86,6 +87,10 @@ class WebView(QWebView): > url_text_changed = pyqtSignal(str) > shutting_down = pyqtSignal() > > + #Mouse button states for rocker gestures > + left_pressed = False > + right_pressed = False > + If those are still needed, they should be initialized in __init__, not here. Otherwise they'd be class rather than instance variables, and all instances of the class would share them. > @@ -178,6 +185,12 @@ class WebView(QWebView): > 100) > self._default_zoom_changed = False > self.init_neighborlist() > + if section == 'input' and option == 'rocker-gestures': > + if config.get('input','rocker-gestures'): Add a space after the comma here. > + self.setContextMenuPolicy(Qt.PreventContextMenu) > + else: > + self.setContextMenuPolicy(Qt.DefaultContextMenu) > + > > def init_neighborlist(self): Only one newline between methods, so remove the added newline here. > @@ -497,7 +510,15 @@ class WebView(QWebView): > Return: > The superclass return value. > """ > - if e.button() in (Qt.XButton1, Qt.XButton2): > + if e.button() == Qt.LeftButton: > + self.left_pressed = True > + elif e.button() == Qt.RightButton: > + self.right_pressed = True > + > + if e.button() in (Qt.XButton1, Qt.XButton2) or ( > + e.button() in (Qt.LeftButton, Qt.RightButton) > + and config.get('input', 'rocker-gestures') > + and self.right_pressed and self.left_pressed): I'd prefer this to be written like this: is_rocker_gesture = (e.button() in (Qt.LeftButton, Qt.RightButton) and config.get('input', 'rocker-gestures') and self.right_pressed and self.left_pressed) if e.button() in (Qt.XButton1, Qt.XButton2) or is_rocker_gesture: Otherwise this if gets rather long to grasp. Florian -- http://www.the-compiler.org | [email protected] (Mail/XMPP) GPG: 916E B0C8 FD55 A072 | http://the-compiler.org/pubkey.asc I love long mails! | http://email.is-not-s.ms/
pgpxSNt8lBxoy.pgp
Description: PGP signature
