@@ -28,11 +28,19 @@ Item {
28 property alias unityMenuModel: rowRepeater.model
28 property alias unityMenuModel: rowRepeater.model
29 property bool enableKeyFilter: false
29 property bool enableKeyFilter: false
30 property real overflowWidth: width
30 property real overflowWidth: width
31+ property bool windowMoving: false
32 // read from outside
33 // read from outside
33 readonly property bool valid: rowRepeater.count > 0
34 readonly property bool valid: rowRepeater.count > 0
34 readonly property bool showRequested: d.longAltPressed || d.currentItem != null
35 readonly property bool showRequested: d.longAltPressed || d.currentItem != null
37+ // MoveHandler API for DecoratedWindow
38+ signal pressed(var mouse)
39+ signal pressedChangedEx(bool pressed, var pressedButtons, real mouseX, real mouseY)
40+ signal positionChanged(var mouse)
41+ signal released(var mouse)
42+ signal doubleClicked(var mouse)
36 implicitWidth: row.width
44 implicitWidth: row.width
37 height: parent.height
45 height: parent.height
@@ -77,7 +85,7 @@ Item {
77 anchors.fill: parent
85 anchors.fill: parent
78 enabled: d.currentItem != null
86 enabled: d.currentItem != null
79 hoverEnabled: enabled && d.currentItem && d.currentItem.__popup != null
87 hoverEnabled: enabled && d.currentItem && d.currentItem.__popup != null
80− onPressed: d.dismissAll()
88+ onPressed: { mouse.accepted = false; d.dismissAll(); }
@@ -218,24 +226,40 @@ Item {
220 MouseArea {
228 MouseArea {
221− anchors.fill: row
229+ anchors.fill: parent
222 hoverEnabled: d.currentItem
230 hoverEnabled: d.currentItem
232+ property bool moved: false
224 onEntered: {
234 onEntered: {
225 if (d.currentItem) {
235 if (d.currentItem) {
226 updateCurrentItemFromPosition(Qt.point(mouseX, mouseY))
236 updateCurrentItemFromPosition(Qt.point(mouseX, mouseY))
229− onPositionChanged: {
239+
230− if (d.currentItem) {
240+ onClicked: {
242+ var prevItem = d.currentItem;
231− updateCurrentItemFromPosition(Qt.point(mouse.x, mouse.y))
243+ updateCurrentItemFromPosition(Qt.point(mouseX, mouseY));
244+ if (prevItem && d.currentItem == prevItem) {
235− var prevItem = d.currentItem;
251+ // for the MoveHandler
252+ onPressed: root.pressed(mouse)
253+ onPressedChanged: root.pressedChangedEx(pressed, pressedButtons, mouseX, mouseY)
254+ onReleased: root.released(mouse)
255+ onDoubleClicked: root.doubleClicked(mouse)
257+ Mouse.ignoreSynthesizedEvents: true
258+ Mouse.onPositionChanged: {
259+ root.positionChanged(mouse);
260+ moved = root.windowMoving;
261+ if (d.currentItem) {
236− updateCurrentItemFromPosition(Qt.point(mouse.x, mouse.y))
262+ updateCurrentItemFromPosition(Qt.point(mouse.x, mouse.y))
237− if (prevItem && d.currentItem == prevItem) {
@@ -260,7 +284,7 @@ Item {
260 hoverEnabled: d.currentItem
284 hoverEnabled: d.currentItem
261 onEntered: d.currentItem = this
285 onEntered: d.currentItem = this
262 onPositionChanged: d.currentItem = this
286 onPositionChanged: d.currentItem = this
263− onClicked: d.currentItem = this
287+ onPressed: d.currentItem = this
265 property Item __popup: null;
289 property Item __popup: null;
266 readonly property bool popupVisible: __popup && __popup.visible
290 readonly property bool popupVisible: __popup && __popup.visible