Files
RedBear-OS/local/recipes/qt/qtdeclarative/source/examples/quick/mousearea/mousearea.qml
T
vasilito f31522130f fix: comprehensive boot warnings and exceptions — fixable silenced, unfixable diagnosed
Build system (5 gaps hardened):
- COOKBOOK_OFFLINE defaults to true (fork-mode)
- normalize_patch handles diff -ruN format
- New 'repo validate-patches' command (25/25 relibc patches)
- 14 patched Qt/Wayland/display recipes added to protected list
- relibc archive regenerated with current patch chain

Boot fixes (fixable):
- Full ISO EFI partition: 16 MiB → 1 MiB (matches mini, BIOS hardcoded 2 MiB offset)
- D-Bus system bus: absolute /usr/bin/dbus-daemon path (was skipped)
- redbear-sessiond: absolute /usr/bin/redbear-sessiond path (was skipped)
- daemon framework: silenced spurious INIT_NOTIFY warnings for oneshot_async services (P0-daemon-silence-init-notify.patch)
- udev-shim: demoted INIT_NOTIFY warning to INFO (expected for oneshot_async)
- relibc: comprehensive named semaphores (sem_open/close/unlink) replacing upstream todo!() stubs
- greeterd: Wayland socket timeout 15s → 30s (compositor DRM wait)
- greeter-ui: built and linked (header guard unification, sem_compat stubs removed)
- mc: un-ignored in both configs, fixed glib/libiconv/pcre2 transitive deps
- greeter config: removed stale keymapd dependency from display/greeter services
- prefix toolchain: relibc headers synced, _RELIBC_STDLIB_H guard unified

Unfixable (diagnosed, upstream):
- i2c-hidd: abort on no-I2C-hardware (QEMU) — process::exit → relibc abort
- kded6/greeter-ui: page fault 0x8 — Qt library null deref
- Thread panics fd != -1 — Rust std library on Redox
- DHCP timeout / eth0 MAC — QEMU user-mode networking
- hwrngd/thermald — no hardware RNG/thermal in VM
- live preload allocation — BIOS memory fragmentation, continues on demand
2026-05-05 20:20:37 +01:00

175 lines
6.1 KiB
QML

// Copyright (C) 2021 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
import QtQuick
Rectangle {
id: box
width: 320
height: 480
Rectangle {
id: redSquare
width: 120
height: 120
anchors {
top: parent.top
left: parent.left
margins: 10
}
color: "red"
opacity: redSquareMouseArea.containsPress ? 0.6 : 1.0
Text {
text: qsTr("Click")
font.pixelSize: 16
anchors.centerIn: parent
}
MouseArea {
id: redSquareMouseArea
anchors.fill: parent
hoverEnabled: true
property string buttonID
acceptedButtons: Qt.AllButtons
// Value 'All.Buttons' is eqivalent to:
// 'Qt::LeftButton | Qt::RightButton | Qt::MiddleButton .... | Qt::ExtraButton24'
onEntered: info.text = qsTr('Entered')
onExited: info.text = qsTr('Exited (pressed=') + pressed + ')'
onPressed: (mouse) => {
if (mouse.button == Qt.LeftButton)
buttonID = qsTr('LeftButton')
else if (mouse.button == Qt.RightButton)
buttonID = qsTr('RightButton')
else if (mouse.button == Qt.MiddleButton)
buttonID = qsTr('MiddleButton')
else if (mouse.button == Qt.BackButton)
buttonID = qsTr('BackButton')
else if (mouse.button == Qt.ForwardButton)
buttonID = qsTr('ForwardButton')
else if (mouse.button == Qt.TaskButton)
buttonID = qsTr('TaskButton')
else if (mouse.button == Qt.ExtraButton4)
buttonID = qsTr('ExtraButton4')
else if (mouse.button == Qt.ExtraButton5)
buttonID = qsTr('ExtraButton5')
else if (mouse.button == Qt.ExtraButton6)
buttonID = qsTr('ExtraButton6')
else if (mouse.button == Qt.ExtraButton7)
buttonID = qsTr('ExtraButton7')
else if (mouse.button == Qt.ExtraButton8)
buttonID = qsTr('ExtraButton8')
else if (mouse.button == Qt.ExtraButton9)
buttonID = qsTr('ExtraButton9')
else if (mouse.button == Qt.ExtraButton10)
buttonID = qsTr('ExtraButton10')
else if (mouse.button == Qt.ExtraButton11)
buttonID = qsTr('ExtraButton11')
else if (mouse.button == Qt.ExtraButton12)
buttonID = qsTr('ExtraButton12')
else if (mouse.button == Qt.ExtraButton13)
buttonID = qsTr('ExtraButton13')
else if (mouse.button == Qt.ExtraButton14)
buttonID = qsTr('ExtraButton14')
else if (mouse.button == Qt.ExtraButton15)
buttonID = qsTr('ExtraButton15')
else if (mouse.button == Qt.ExtraButton16)
buttonID = qsTr('ExtraButton16')
else if (mouse.button == Qt.ExtraButton17)
buttonID = qsTr('ExtraButton17')
else if (mouse.button == Qt.ExtraButton18)
buttonID = qsTr('ExtraButton18')
else if (mouse.button == Qt.ExtraButton19)
buttonID = qsTr('ExtraButton19')
else if (mouse.button == Qt.ExtraButton20)
buttonID = qsTr('ExtraButton20')
else if (mouse.button == Qt.ExtraButton21)
buttonID = qsTr('ExtraButton21')
else if (mouse.button == Qt.ExtraButton22)
buttonID = qsTr('ExtraButton22')
else if (mouse.button == Qt.ExtraButton23)
buttonID = qsTr('ExtraButton23')
else if (mouse.button == Qt.ExtraButton24)
buttonID = qsTr('ExtraButton24')
info.text = qsTr('Pressed (') + buttonID + qsTr(' shift=')
+ (mouse.modifiers & Qt.ShiftModifier ? qsTr('true') : qsTr('false')) + ')'
const posInBox = redSquare.mapToItem(box, mouse.x, mouse.y)
posInfo.text = + mouse.x + ',' + mouse.y + qsTr(' in square')
+ ' (' + posInBox.x + ',' + posInBox.y + qsTr(' in window)')
}
onReleased: (mouse) => {
btn.text = qsTr('Released (isClick=') + mouse.isClick + qsTr(' wasHeld=') + mouse.wasHeld + ')'
posInfo.text = ''
}
//! [clicks]
onPressAndHold: btn.text = qsTr('Press and hold')
onClicked: (mouse) => { btn.text = qsTr('Clicked (wasHeld=') + mouse.wasHeld + ')' }
onDoubleClicked: btn.text = qsTr('Double clicked')
//! [clicks]
}
}
Rectangle {
id: blueSquare
width: 120
height: 120
x: box.width - width - 10
y: 10 // making this item draggable, so don't use anchors
color: "blue"
Text {
text: qsTr("Drag")
font.pixelSize: 16
color: "white"
anchors.centerIn: parent
}
MouseArea {
anchors.fill: parent
//! [drag]
drag.target: blueSquare
drag.axis: Drag.XAndYAxis
drag.minimumX: 0
drag.maximumX: box.width - parent.width
drag.minimumY: 0
drag.maximumY: box.height - parent.width
//! [drag]
}
}
Text {
id: info
anchors{
bottom: btn.top
horizontalCenter: parent.horizontalCenter
margins: 20
}
onTextChanged: console.log(text)
}
Text {
id: btn
anchors {
bottom: posInfo.top
horizontalCenter: parent.horizontalCenter
margins: 20
}
}
Text {
id: posInfo
anchors {
bottom: parent.bottom
horizontalCenter: parent.horizontalCenter
margins: 20
}
}
}