WebKit Bugzilla
New
Browse
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
RESOLVED FIXED
29583
[Qt] calling a js function via QWebFrame::evaluateJavaScript doe s not repaint div background
https://bugs.webkit.org/show_bug.cgi?id=29583
Summary
[Qt] calling a js function via QWebFrame::evaluateJavaScript doe s not repain...
Tor Arne Vestbø
Reported
2009-09-21 08:48:46 PDT
This bug report originated from Nokia internal issue QT-1850 --- Comments --- Product Qt Function webkit Version 4.5.0 Platform Windows XP Platform details 32bit Windows XP SP2 Compilers GCC Compiler details Native Mingw 3.4.5 Subject calling a js function via QWebFrame::evaluateJavaScript does not repaint div background Steps to reproduce / test case Calling a javascript function, that sets a DIV element's background color: function testrepaint() { document.getElementById("repaintdiv").style.backgroundColor="blue"; } The js function is called from the GUI thread (via a button press slot), via QWebFrame::evaluateJavaScript(), like this: webView->page()->mainFrame()->evaluateJavaScript("testrepaint()"); The result: If the above is triggered when the mouse is not within the area of the QWebView control, the color of the DIV does not change. Subsequently, when moving the mouse cursor over the QWebView control, the DIV gets immediately repainted. More information I have tried performing two other operations from the called javascript function which work as expected: toggling the state of a checkbox, and setting the innerHTML of the DIV. These operations are executed immediately even if hte mouse cursor is not within the QWebView control. I have also tried an alternative method of calling the javascript function, via using the WebKit API directly. The result is the same, which probably suggest the issue is related to the Qt port of WebKit or to WebKit itself. Here is the code that uses the webkit API to call the js function: void MyBrowser::CallJSFunctionNameWithParams(WebCore::Frame* frame, const char* jsFuncName, const JSC::ArgList& argList) { WebCore::JSDOMWindow *globalObject = toJSDOMWindow(frame); if (!globalObject) { printf ("Warning: couldn't get window object"); return; } JSC::ExecState* globalExec = globalObject->globalExec(); JSC::JSLock lock(true); JSC::Identifier identifier(globalExec, jsFuncName); JSC::JSValuePtr funcVal = globalObject->get(globalExec, identifier); if ( !funcVal || !funcVal->isObject()) { printf("Requested Object could not Be Found!"); return; } JSC::JSObject* funcObj = asObject(funcVal); if (!(funcObj->inherits(&JSC::JSFunction::info))) { printf("not a function"); return; } JSC::JSFunction* funcImp = static_cast<JSC::JSFunction*>(funcObj); JSC::JSObject* thisObj = globalObject; JSC::JSValuePtr result = funcImp->call(globalExec, thisObj, argList); if (!result) { printf( "Nothing returned from JavaScript function"); return; } }
Attachments
Add attachment
proposed patch, testcase, etc.
Tor Arne Vestbø
Comment 1
2009-09-25 07:10:49 PDT
Fixed in
r47963
Note
You need to
log in
before you can comment on or make changes to this bug.
Top of Page
Format For Printing
XML
Clone This Bug