From 571d6519e9082976129ead7a5e81d07b3c0c8f63 Mon Sep 17 00:00:00 2001 From: Kevin Velghe Date: Wed, 30 Mar 2016 19:08:10 +0200 Subject: [PATCH] Handle frames --- qutebrowser/browser/hints.py | 2 +- qutebrowser/browser/webelem.py | 11 ++++++----- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/qutebrowser/browser/hints.py b/qutebrowser/browser/hints.py index 0c99387b5..040d553c5 100644 --- a/qutebrowser/browser/hints.py +++ b/qutebrowser/browser/hints.py @@ -466,7 +466,7 @@ class HintManager(QObject): Qt.NoButton, modifiers), ] if context.target == Target.current: - elem.remove_target() + elem.remove_blank_target() for evt in events: self.mouse_event.emit(evt) if elem.is_text_input() and elem.is_editable(): diff --git a/qutebrowser/browser/webelem.py b/qutebrowser/browser/webelem.py index 0f6ae633d..6100cd1b3 100644 --- a/qutebrowser/browser/webelem.py +++ b/qutebrowser/browser/webelem.py @@ -285,12 +285,13 @@ class WebElementWrapper(collections.abc.MutableMapping): tag = self._elem.tagName().lower() return self.get('role', None) in roles or tag in ('input', 'textarea') - def remove_target(self): + def remove_blank_target(self): """Remove target from link.""" - if self._elem.tagName().lower() == 'a': - self._elem.removeAttribute('target') - elif self.parent().tagName().lower() == 'a': - self.parent().removeAttribute('target') + for elem in [self._elem, self.parent()]: + if elem.tagName().lower() == 'a': + if elem.attribute('target') == '_blank': + elem.setAttribute('target', '_top') + break def debug_text(self): """Get a text based on an element suitable for debug output."""