Forgot to put here the BUG url:
http://bugreports.qt.nokia.com/browse/QTBUG-11179

On 2 June 2010 17:23, Ivan De Marino <[email protected]> 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 <[email protected]> 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 <[email protected]> wrote:
>>
>>>
>>>
>>> On 2 June 2010 12:22, Alan Alpert <[email protected]> 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
>>>> [email protected]
>>>> 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
_______________________________________________
Qt-qml mailing list
[email protected]
http://lists.trolltech.com/mailman/listinfo/qt-qml

Reply via email to