[Qt-qml] QML on latest N900 PR1.2 vs QML in 4.7
Ivan De Marino
ivan.de.marino at gmail.com
Fri Jun 4 17:12:56 CEST 2010
Hy Alan.
I tried building the latest x11-maemo branch, the 4.7 one.
But this didn't solve the problem.
So I decided to take a look to the history of
/src/imports/webkit/qdeclarativewebview.cpp and your name came out:
http://qt.gitorious.org/qt/qt/commit/f1ba0329a90fe62a850e4b00bf3bd13011dbe4fa
<http://qt.gitorious.org/qt/qt/commit/f1ba0329a90fe62a850e4b00bf3bd13011dbe4fa>Seems
like you recently modified event handling for the QML WebView, but that your
modification is ONLY in the 4.7 branch, not in the x11-maemo one.
What I'm trying to do, is to see if applying your patch to the latest
x11-maemo 4.7 branch solves the problem.
Will keep posted, as this is now on Bugzilla as well, and I might update the
bug description if I find that this approach works.
Regards
On 3 June 2010 10:50, Ivan De Marino <ivan.de.marino at gmail.com> wrote:
> Forgot to put here the BUG url:
> http://bugreports.qt.nokia.com/browse/QTBUG-11179
>
>
> On 2 June 2010 17:23, Ivan De Marino <ivan.de.marino at gmail.com> wrote:
>
>> There you go. I slightly modified the "content/FlickableWebView.qml" to
>> show what's going on with the focus:
>>
>> import Qt 4.7
>> import org.webkit 1.0
>>
>> Flickable {
>> property alias title: webView.title
>> property alias icon: webView.icon
>> property alias progress: webView.progress
>> property alias url: webView.url
>> property alias back: webView.back
>> property alias reload: webView.reload
>> property alias forward: webView.forward
>>
>> id: flickable
>> width: parent.width
>> contentWidth: Math.max(parent.width,webView.width)
>> contentHeight: Math.max(parent.height,webView.height)
>> anchors.top: headerSpace.bottom
>> anchors.bottom: parent.top
>> anchors.left: parent.left
>> anchors.right: parent.right
>> pressDelay: 200
>>
>> onWidthChanged : {
>> // Expand (but not above 1:1) if otherwise would be smaller that
>> available width.
>> if (width > webView.width*webView.contentsScale &&
>> webView.contentsScale < 1.0)
>> webView.contentsScale = width / webView.width *
>> webView.contentsScale;
>> }
>>
>> *onFocusChanged: {*
>> * if ( focus == true ) {*
>> * console.log("Flickable got focus");*
>> * }*
>> * else {*
>> * console.log("Flickable lost focus");*
>> * }*
>> * }*
>>
>> WebView {
>> id: webView
>> transformOrigin: Item.TopLeft
>>
>> function fixUrl(url)
>> {
>> if (url == "") return url
>> if (url[0] == "/") return "file://"+url
>> if (url.indexOf(":")<0) {
>> if (url.indexOf(".")<0 || url.indexOf(" ")>=0) {
>> // Fall back to a search engine; hard-code Wikipedia
>> return "http://en.wikipedia.org/w/index.php?search="+url
>> } else {
>> return "http://"+url
>> }
>> }
>> return url
>> }
>>
>> url: fixUrl(webBrowser.urlString)
>> smooth: false // We don't want smooth scaling, since we only scale
>> during (fast) transitions
>> focus: true
>> zoomFactor: 1
>>
>> onAlert: console.log(message)
>>
>> function doZoom(zoom,centerX,centerY)
>> {
>> if (centerX) {
>> var sc = zoom/contentsScale;
>> scaleAnim.to = zoom;
>> flickVX.from = flickable.contentX
>> flickVX.to =
>> Math.max(0,Math.min(centerX-flickable.width/2,webView.width*sc-flickable.width))
>> finalX.value = flickVX.to
>> flickVY.from = flickable.contentY
>> flickVY.to =
>> Math.max(0,Math.min(centerY-flickable.height/2,webView.height*sc-flickable.height))
>> finalY.value = flickVY.to
>> quickZoom.start()
>> }
>> }
>>
>> Keys.onLeftPressed: webView.contentsScale -= 0.1
>> Keys.onRightPressed: webView.contentsScale += 0.1
>>
>> preferredWidth: flickable.width
>> preferredHeight: flickable.height
>> contentsScale: 1/zoomFactor
>> onContentsSizeChanged: {
>> // zoom out
>> contentsScale = Math.min(1,flickable.width / contentsSize.width)
>> }
>> onUrlChanged: {
>> // got to topleft
>> flickable.contentX = 0
>> flickable.contentY = 0
>> if (url != null) { header.editUrl = url.toString(); }
>> }
>> onDoubleClick: {
>> if (!heuristicZoom(clickX,clickY,2.5)) {
>> var zf = flickable.width / contentsSize.width
>> if (zf >= contentsScale)
>> zf = 2.0/zoomFactor // zoom in (else zooming out)
>> doZoom(zf,clickX*zf,clickY*zf)
>> }
>> }
>> *onFocusChanged: {*
>> * if ( focus == true ) {*
>> * console.log("WebView got focus");*
>> * }*
>> * else {*
>> * console.log("WebView lost focus");*
>> * }*
>> * }*
>>
>> SequentialAnimation {
>> id: quickZoom
>>
>> PropertyAction {
>> target: webView
>> property: "renderingEnabled"
>> value: false
>> }
>> ParallelAnimation {
>> NumberAnimation {
>> id: scaleAnim
>> target: webView
>> property: "contentsScale"
>> // the to property is set before calling
>> easing.type: Easing.Linear
>> duration: 200
>> }
>> NumberAnimation {
>> id: flickVX
>> target: flickable
>> property: "contentX"
>> easing.type: Easing.Linear
>> duration: 200
>> from: 0 // set before calling
>> to: 0 // set before calling
>> }
>> NumberAnimation {
>> id: flickVY
>> target: flickable
>> property: "contentY"
>> easing.type: Easing.Linear
>> duration: 200
>> from: 0 // set before calling
>> to: 0 // set before calling
>> }
>> }
>> // Have to set the contentXY, since the above 2
>> // size changes may have started a correction if
>> // contentsScale < 1.0.
>> PropertyAction {
>> id: finalX
>> target: flickable
>> property: "contentX"
>> value: 0 // set before calling
>> }
>> PropertyAction {
>> id: finalY
>> target: flickable
>> property: "contentY"
>> value: 0 // set before calling
>> }
>> PropertyAction {
>> target: webView
>> property: "renderingEnabled"
>> value: true
>> }
>> }
>> onZoomTo: doZoom(zoom,centerX,centerY)
>> }
>> }
>>
>> While on the desktop the Focus works as expected, on N900 the WebView gets
>> the focus while clicked/pressed, and releases it on unclicked/released.
>>
>> I was getting weird behaviours because I connected to the WebView.focus
>> property to do some graphics effect, but now everything seems a bit "crazy".
>>
>> This to me starts to look like a real bug *OR* the N900 4.7 branch just
>> needs to be put in sync with the current 4.7.
>>
>> On 2 June 2010 17:00, Ivan De Marino <ivan.de.marino at gmail.com> wrote:
>>
>>> I figured out what was stopping the "scrolling" but this unveiled that
>>> there is something else going on.
>>> What I was doing to "stop" the scrolling was:
>>>
>>> interactive: webView.focus // If the "webView" has focus, then it's flickable
>>>
>>> In this way there is no scrolling if the WebView that is inside the
>>> Flickable element doesn't have focus.
>>>
>>> Looks like there is an impediment at the WebView from getting a proper
>>> focus.
>>> I removed the above line, and what happens as soon as I start
>>> scrolling/panning, is that the WebView looses focus.
>>>
>>> On 2 June 2010 12:30, Ivan De Marino <ivan.de.marino at gmail.com> wrote:
>>>
>>>>
>>>>
>>>> On 2 June 2010 12:22, Alan Alpert <alan.alpert at nokia.com> wrote:
>>>>
>>>>>
>>>>> Onsdag 2. juni 2010 21:01:55 skrev ext Ivan De Marino :
>>>>>
>>>>> > Problem is that I'm a bit stuck now: the latest version of my project
>>>>> works
>>>>> > without any problem (aside from the bugs I didn't discover yet :P),
>>>>> while
>>>>> > on N900 the behaviour is always a bit "flaky". With realease
>>>>> 2010-05-20 of
>>>>> > the packages of "libqt4-experimental" for N900 1.2, I now lost
>>>>> > SCROLLING/PANNING And I can't make my head around on what is the
>>>>> actual
>>>>> > problem. I just use a Flickable element with a WebView inside: don't
>>>>> see
>>>>> > what can go wrong, and only on N900. The QML part of my project here:
>>>>> >
>>>>> http://github.com/OrangeLabsUK/OrangeMobileBrowser/tree/master/orangemobil
>>>>> > ebrowser-1.0/src/qmls/ .
>>>>>
>>>>> The webbrowser demo is working just fine on my n900. You might want to
>>>>> have a
>>>>> look at the differences between your FlickableWebView and the one in
>>>>> demos/declarative/webbrowser. This demo has had a bunch of minor
>>>>> changes
>>>>> recently, so you should have another look even if you've seen it
>>>>> before.
>>>>>
>>>>> I don't think any of those changes relate to this specific problem, but
>>>>> I could
>>>>> be wrong. And the recent webbrowser demo pans just fine on my N900 with
>>>>> those
>>>>> packages installed.
>>>>>
>>>> That's what I just tested and seen. I'm now trying to figure out what
>>>> are the macro differences on how things are laid out.
>>>> I was thinking that could be the "focusAway" black rectangle I apply on
>>>> the WebView when it looses focus.
>>>> The Z axis maybe.
>>>>
>>>> Will check and report.
>>>>
>>>>
>>>>>
>>>>> >
>>>>> > Plus, I can't use OpenGL in my GraphicsView because... no idea! It's
>>>>> slow,
>>>>> > painfully slow. I get much better performance if I "#ifdef" it out.
>>>>>
>>>>> With the PR1.2 packages this is a known issue, and is caused by a bug
>>>>> involving clipping. The next set of Qt 4.7 packages should hopefully
>>>>> resolve
>>>>> it. Until then keep trying without using OpenGL.
>>>>>
>>>> Great! This means I'm not doing something wrong myself.
>>>> I'll wait for the new packages ;)
>>>>
>>>> Thanks a lot.
>>>>
>>>>>
>>>>> --
>>>>>
>>>>> Alan Alpert
>>>>> Software Engineer
>>>>> Nokia, Qt Development Frameworks
>>>>> _______________________________________________
>>>>> Qt-qml mailing list
>>>>> Qt-qml at trolltech.com
>>>>> http://lists.trolltech.com/mailman/listinfo/qt-qml
>>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> Ivan De Marino | Software Engineer | France Telecom R&D UK - Orange Labs
>>>> w. +44 20 8849 5806 | m. +44 7515 955 861 | m. +44 7974 156 216
>>>> ivan[dot]demarino[at]orange-ftgroup.com |
>>>> ivan[dot]de[dot]marino[at]gmail[dot]com
>>>> www.detronizator.org | www.linkedin.com/in/ivandemarino
>>>>
>>>
>>>
>>>
>>> --
>>> Ivan De Marino | Software Engineer | France Telecom R&D UK - Orange Labs
>>> w. +44 20 8849 5806 | m. +44 7515 955 861 | m. +44 7974 156 216
>>> ivan[dot]demarino[at]orange-ftgroup.com |
>>> ivan[dot]de[dot]marino[at]gmail[dot]com
>>> www.detronizator.org | www.linkedin.com/in/ivandemarino
>>>
>>
>>
>>
>> --
>> Ivan De Marino | Software Engineer | France Telecom R&D UK - Orange Labs
>> w. +44 20 8849 5806 | m. +44 7515 955 861 | m. +44 7974 156 216
>> ivan[dot]demarino[at]orange-ftgroup.com |
>> ivan[dot]de[dot]marino[at]gmail[dot]com
>> www.detronizator.org | www.linkedin.com/in/ivandemarino
>>
>
>
>
> --
> Ivan De Marino | Software Engineer | France Telecom R&D UK - Orange Labs
> w. +44 20 8849 5806 | m. +44 7515 955 861 | m. +44 7974 156 216
> ivan[dot]demarino[at]orange-ftgroup.com |
> ivan[dot]de[dot]marino[at]gmail[dot]com
> www.detronizator.org | www.linkedin.com/in/ivandemarino
>
--
Ivan De Marino | Software Engineer | France Telecom R&D UK - Orange Labs
w. +44 20 8849 5806 | m. +44 7515 955 861 | m. +44 7974 156 216
ivan[dot]demarino[at]orange-ftgroup.com |
ivan[dot]de[dot]marino[at]gmail[dot]com
www.detronizator.org | www.linkedin.com/in/ivandemarino
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.qt.nokia.com/pipermail/qt-qml/attachments/20100604/43430d35/attachment.html
More information about the Qt-qml
mailing list