From fefea4944a5ee5b3934f31fd9f3d312fd8cacddd Mon Sep 17 00:00:00 2001 From: Florian Bruhin Date: Tue, 9 Aug 2016 16:00:59 +0200 Subject: [PATCH] QtWebEngine: Make :open-editor work --- qutebrowser/browser/commands.py | 3 +-- qutebrowser/browser/webengine/webengineelem.py | 8 +++++--- qutebrowser/browser/webengine/webenginetab.py | 5 +++-- qutebrowser/javascript/webelem.js | 2 ++ 4 files changed, 11 insertions(+), 7 deletions(-) diff --git a/qutebrowser/browser/commands.py b/qutebrowser/browser/commands.py index 41256c6f8..f858247ac 100644 --- a/qutebrowser/browser/commands.py +++ b/qutebrowser/browser/commands.py @@ -1424,8 +1424,7 @@ class CommandDispatcher: ed.edit(text) @cmdutils.register(instance='command-dispatcher', - modes=[KeyMode.insert], hide=True, scope='window', - backend=usertypes.Backend.QtWebKit) + modes=[KeyMode.insert], hide=True, scope='window') def open_editor(self): """Open an external editor with the currently selected form field. diff --git a/qutebrowser/browser/webengine/webengineelem.py b/qutebrowser/browser/webengine/webengineelem.py index 40de2498e..afc12a1bc 100644 --- a/qutebrowser/browser/webengine/webengineelem.py +++ b/qutebrowser/browser/webengine/webengineelem.py @@ -24,7 +24,7 @@ from PyQt5.QtCore import QRect -from qutebrowser.utils import log +from qutebrowser.utils import log, javascript from qutebrowser.browser import webelem @@ -32,9 +32,10 @@ class WebEngineElement(webelem.AbstractWebElement): """A web element for QtWebEngine, using JS under the hood.""" - def __init__(self, js_dict): + def __init__(self, js_dict, run_js_callable): self._id = js_dict['id'] self._js_dict = js_dict + self._run_js = run_js_callable def __eq__(self, other): if not isinstance(other, WebEngineElement): @@ -117,7 +118,8 @@ class WebEngineElement(webelem.AbstractWebElement): content-editable. """ # FIXME:qtwebengine what to do about use_js with WebEngine? - log.stub() + js_code = javascript.assemble('webelem', 'set_text', self._id, text) + self._run_js(js_code) def set_inner_xml(self, xml): """Set the given inner XML.""" diff --git a/qutebrowser/browser/webengine/webenginetab.py b/qutebrowser/browser/webengine/webenginetab.py index 8d44de59d..6430f4bcf 100644 --- a/qutebrowser/browser/webengine/webenginetab.py +++ b/qutebrowser/browser/webengine/webenginetab.py @@ -446,7 +446,7 @@ class WebEngineTab(browsertab.AbstractTab): """ elems = [] for js_elem in js_elems: - elem = webengineelem.WebEngineElement(js_elem) + elem = webengineelem.WebEngineElement(js_elem, self.run_js_async) elems.append(elem) callback(elems) @@ -467,7 +467,8 @@ class WebEngineTab(browsertab.AbstractTab): if js_elem is None: callback(None) else: - callback(webengineelem.WebEngineElement(js_elem)) + elem = webengineelem.WebEngineElement(js_elem, self.run_js_async) + callback(elem) def find_focus_element(self, callback): js_code = javascript.assemble('webelem', 'focus_element') diff --git a/qutebrowser/javascript/webelem.js b/qutebrowser/javascript/webelem.js index a910c260d..d35974e0d 100644 --- a/qutebrowser/javascript/webelem.js +++ b/qutebrowser/javascript/webelem.js @@ -72,6 +72,8 @@ window._qutebrowser.webelem = (function() { return serialize_elem(elem, id); }; + funcs.set_text = function(id, text) { + elements[id].value = text; }; return funcs;