QtWebEngine: Make :open-editor work
This commit is contained in:
parent
ca67e2be3c
commit
fefea4944a
@ -1424,8 +1424,7 @@ class CommandDispatcher:
|
|||||||
ed.edit(text)
|
ed.edit(text)
|
||||||
|
|
||||||
@cmdutils.register(instance='command-dispatcher',
|
@cmdutils.register(instance='command-dispatcher',
|
||||||
modes=[KeyMode.insert], hide=True, scope='window',
|
modes=[KeyMode.insert], hide=True, scope='window')
|
||||||
backend=usertypes.Backend.QtWebKit)
|
|
||||||
def open_editor(self):
|
def open_editor(self):
|
||||||
"""Open an external editor with the currently selected form field.
|
"""Open an external editor with the currently selected form field.
|
||||||
|
|
||||||
|
@ -24,7 +24,7 @@
|
|||||||
|
|
||||||
from PyQt5.QtCore import QRect
|
from PyQt5.QtCore import QRect
|
||||||
|
|
||||||
from qutebrowser.utils import log
|
from qutebrowser.utils import log, javascript
|
||||||
from qutebrowser.browser import webelem
|
from qutebrowser.browser import webelem
|
||||||
|
|
||||||
|
|
||||||
@ -32,9 +32,10 @@ class WebEngineElement(webelem.AbstractWebElement):
|
|||||||
|
|
||||||
"""A web element for QtWebEngine, using JS under the hood."""
|
"""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._id = js_dict['id']
|
||||||
self._js_dict = js_dict
|
self._js_dict = js_dict
|
||||||
|
self._run_js = run_js_callable
|
||||||
|
|
||||||
def __eq__(self, other):
|
def __eq__(self, other):
|
||||||
if not isinstance(other, WebEngineElement):
|
if not isinstance(other, WebEngineElement):
|
||||||
@ -117,7 +118,8 @@ class WebEngineElement(webelem.AbstractWebElement):
|
|||||||
content-editable.
|
content-editable.
|
||||||
"""
|
"""
|
||||||
# FIXME:qtwebengine what to do about use_js with WebEngine?
|
# 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):
|
def set_inner_xml(self, xml):
|
||||||
"""Set the given inner XML."""
|
"""Set the given inner XML."""
|
||||||
|
@ -446,7 +446,7 @@ class WebEngineTab(browsertab.AbstractTab):
|
|||||||
"""
|
"""
|
||||||
elems = []
|
elems = []
|
||||||
for js_elem in js_elems:
|
for js_elem in js_elems:
|
||||||
elem = webengineelem.WebEngineElement(js_elem)
|
elem = webengineelem.WebEngineElement(js_elem, self.run_js_async)
|
||||||
elems.append(elem)
|
elems.append(elem)
|
||||||
callback(elems)
|
callback(elems)
|
||||||
|
|
||||||
@ -467,7 +467,8 @@ class WebEngineTab(browsertab.AbstractTab):
|
|||||||
if js_elem is None:
|
if js_elem is None:
|
||||||
callback(None)
|
callback(None)
|
||||||
else:
|
else:
|
||||||
callback(webengineelem.WebEngineElement(js_elem))
|
elem = webengineelem.WebEngineElement(js_elem, self.run_js_async)
|
||||||
|
callback(elem)
|
||||||
|
|
||||||
def find_focus_element(self, callback):
|
def find_focus_element(self, callback):
|
||||||
js_code = javascript.assemble('webelem', 'focus_element')
|
js_code = javascript.assemble('webelem', 'focus_element')
|
||||||
|
@ -72,6 +72,8 @@ window._qutebrowser.webelem = (function() {
|
|||||||
return serialize_elem(elem, id);
|
return serialize_elem(elem, id);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
funcs.set_text = function(id, text) {
|
||||||
|
elements[id].value = text;
|
||||||
};
|
};
|
||||||
|
|
||||||
return funcs;
|
return funcs;
|
||||||
|
Loading…
Reference in New Issue
Block a user