Mouse filter: mousemove event logic does not fire exited / entered signals when needed

Bug #1566378 reported by Andrea Bernabei
10
This bug affects 2 people
Affects Status Importance Assigned to Milestone
Canonical System Image
Fix Released
Critical
Zoltan Balogh
ubuntu-ui-toolkit (Ubuntu)
Fix Released
Critical
Andrea Bernabei
ubuntu-ui-toolkit (Ubuntu RTM)
Fix Released
Critical
Andrea Bernabei

Bug Description

r1921

Test case:
import QtQuick 2.4
import Ubuntu.Components 1.3

MainView {
    applicationName: "test"
    width: units.gu(50)
    height: units.gu(40)

    Rectangle {
        anchors.fill: parent
        color: "yellow"
        MouseArea {
            anchors.fill: parent
            anchors.margins: units.gu(10)

            hoverEnabled: true
            onEntered: console.log("Mouse entered")
            onExited: console.log("Mouse exited")

            Mouse.enabled: true
            Mouse.onEntered: console.log("Mouse filter entered")
            Mouse.onExited: console.log("Mouse filter exited")

            Rectangle {
                anchors.fill: parent
                color: "blue"
            }
        }
    }
}

How to reproduce:
1) qmlscene testcase.qml
2) move the mouse inside the blue rectangle
3) press and hold the left button of the mouse
4) WITHOUT RELEASING the button, move the mouse outside the blue rectangle
5) (optional) move the mouse back inside the blue rectangle (still without releasing the button)

Actual outcome (qml log):
qml: Mouse filter entered
qml: Mouse entered
qml: Mouse exited
qml: Mouse entered

Expected log (qml log):
qml: Mouse filter entered
qml: Mouse entered
qml: Mouse filter exited
qml: Mouse exited
qml: Mouse filter entered
qml: Mouse entered

Related branches

Revision history for this message
Andrea Bernabei (faenil) wrote :

I'll take this, as it is blocking the Scrollbar refresh ;)

Changed in ubuntu-ui-toolkit (Ubuntu):
assignee: nobody → Andrea Bernabei (faenil)
importance: Undecided → Critical
status: New → In Progress
status: In Progress → Fix Committed
Revision history for this message
Andrea Bernabei (faenil) wrote :

More info:

This is what QQuickMouseArea does in Qt5.4 (which is what we're using)
https://github.com/qtproject/qtdeclarative/blob/5.4/src/quick/items/qquickmousearea.cpp#L667

Changed in canonical-devices-system-image:
assignee: nobody → Zoltan Balogh (bzoltan)
importance: Undecided → Critical
Changed in ubuntu-ui-toolkit (Ubuntu RTM):
importance: Undecided → Critical
Changed in canonical-devices-system-image:
milestone: none → 11
Changed in ubuntu-ui-toolkit (Ubuntu RTM):
assignee: nobody → Andrea Bernabei (faenil)
status: New → Fix Committed
Changed in canonical-devices-system-image:
status: New → In Progress
Revision history for this message
Andrea Bernabei (faenil) wrote :

I have just updated the bug description, swapping Expected with Actual output... (doh)

description: updated
Revision history for this message
Andrea Bernabei (faenil) wrote :

just to clarify the comment above:
the bug description was previously reporting the expected output under the "Actual" output and viceversa.

As a consequence, QA could not verify the fix, because they the output they got didn't match the "Expected" one.

After some digging, I realized it was just a problem in the bug description, and updated it accordingly, swapping "Actual" and "Expected" outputs

Revision history for this message
Łukasz Zemczak (sil2100) wrote :

This bug was fixed in the package ubuntu-ui-toolkit 1.3.1938+15.04.20160412 in https://launchpad.net/~ci-train-ppa-service/+archive/ubuntu/stable-phone-overlay

---------------

ubuntu-ui-toolkit (1.3.1938+15.04.20160412) vivid; urgency=medium

  [ Tim Peeters ]
  * Hide the PageStack back button when depth == 1. Fixes LP: #1565811
  * Add header subtitle. Fixes LP: #1399289
  * Reveal the header in gallery when changing the layout to two columns.
    Fixes LP: #1556860
  * Set correct colors for disabled actions in the header.
    Fixes LP: #1393485
  * Disable tst_datepicker.qml to unblock the staging.Fixes LP: #1567840
  * Prevent invisible header from setting the flickable topMargin.
    Fixes LP: #1560419, LP: #1560458, LP: #1566231.

  [ Zsombor Egri ]
  * Move MouseTouchAdaptor into UbuntuToolkit library. Fix adaptor code for
    Xenial. Fixes LP: #1561436

  [ Christian Dywan ]
  * Don't use a separate argument to distinguish touch events. If it's touch,
    it has our overloaded methods. Fixes LP: #1530802
  * Use export_qml_dir.sh in qmlapicheck and runtest Also add Usage to runtest.
    Fixes LP: #1567286.
  * Summary style error results with sections. Fixes LP: #1568804

  [ Andrea Bernabei ]
  * Mouse filter: check if mouse is inside the area on mouse moves and
    setHovered accordingly. Fixes LP: #1566378.

  [ Timo Jyrinki ]
  * Add latest changes for GLES.
  * Add back Provides: qtdeclarative5-ubuntu-ui-toolkit-plugin to resolve
    upgrade issue. Fixes LP: #1568817
  * Fix wrapper script auto-generated by Qt that incorrectly tries to execute
    itself. Fixes LP: #1560000
  * bileto_convert_to_gles: sort and add
    qml-module-ubuntu-performancemetrics-gles.install. Fixes LP: #1569217

  * Add additional Breaks as requested by archive admin.
  * Add latest changes for GLES.

  [ Zolán Balogh ]
  * Fix the UITK test plan script.

  [ CI Train Bot ]
  * Resync trunk. added: examples/ubuntu-ui-toolkit-gallery/po/nb.po

  [ Robert Park ]
  * Inline GLES packaging. added: debian/bileto_convert_to_gles
    debian/control.gles debian/rules.gles

 -- Zoltan Balogh <email address hidden> Tue, 12 Apr 2016 11:12:44 +0000

Changed in ubuntu-ui-toolkit (Ubuntu RTM):
status: Fix Committed → Fix Released
Changed in canonical-devices-system-image:
status: In Progress → Fix Committed
Revision history for this message
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package ubuntu-ui-toolkit - 1.3.1984+16.10.20160527.2

---------------
ubuntu-ui-toolkit (1.3.1984+16.10.20160527.2) yakkety; urgency=medium

  [ Christian Dywan ]
  * Slimmer frame for TextFields: 0.5dp. Fixes LP: #1578190.

  [ Albert Astals Cid ]
  * Add override
    The override specifier (since C++11) specifies that a virtual function
    overrides another virtual function. In a member function declaration or
    definition, override ensures that the function is virtual and is overriding
    a virtual function from the base class.

  [ Tim Peeters ]
  * Fix reference error in PullToRefreshStyle. Fixes LP: #1582843
  * Mark Tab, Tabs, TabBar, PageHeadConfiguration, PageHeadSections,
    PageHeadState, ToolbarButton, ToolbarItems as deprecated in the
    documentation. Fixes LP: #1566735, LP: #1566741.

  [ CI Train Bot ]
  * Resync trunk.

 -- Zoltan Balogh <email address hidden> Fri, 27 May 2016 07:08:44 +0000

Changed in ubuntu-ui-toolkit (Ubuntu):
status: Fix Committed → Fix Released
Changed in canonical-devices-system-image:
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.