Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions examples/blur/Main.qml
Original file line number Diff line number Diff line change
Expand Up @@ -45,14 +45,14 @@ Item {
cursorDelegate: Cursor {
id: cursorItem

required property QtObject outputCurosr
required property QtObject outputCursor
readonly property point position: parent.mapFromGlobal(cursor.position.x, cursor.position.y)

cursor: outputCurosr.cursor
output: outputCurosr.output.output
cursor: outputCursor.cursor
output: outputCursor.output.output
x: position.x - hotSpot.x
y: position.y - hotSpot.y
visible: valid && outputCurosr.visible
visible: valid && outputCursor.visible
OutputLayer.enabled: true
OutputLayer.keepLayer: true
OutputLayer.flags: OutputLayer.Cursor
Expand Down
8 changes: 4 additions & 4 deletions examples/outputcopy/PrimaryOutputDelegate.qml
Original file line number Diff line number Diff line change
Expand Up @@ -17,14 +17,14 @@ OutputItem {
cursorDelegate: Cursor {
id: cursorItem

required property QtObject outputCurosr
required property QtObject outputCursor
readonly property point position: parent.mapFromGlobal(cursor.position.x, cursor.position.y)

cursor: outputCurosr.cursor
output: outputCurosr.output.output
cursor: outputCursor.cursor
output: outputCursor.output.output
x: position.x - hotSpot.x
y: position.y - hotSpot.y
visible: valid && outputCurosr.visible
visible: valid && outputCursor.visible
OutputLayer.enabled: true
OutputLayer.keepLayer: true
OutputLayer.flags: OutputLayer.Cursor
Expand Down
8 changes: 4 additions & 4 deletions examples/outputviewport/Main.qml
Original file line number Diff line number Diff line change
Expand Up @@ -45,14 +45,14 @@ Item {
cursorDelegate: Cursor {
id: cursorItem

required property QtObject outputCurosr
required property QtObject outputCursor
readonly property point position: parent.mapFromGlobal(cursor.position.x, cursor.position.y)

cursor: outputCurosr.cursor
output: outputCurosr.output.output
cursor: outputCursor.cursor
output: outputCursor.output.output
x: position.x - hotSpot.x
y: position.y - hotSpot.y
visible: valid && outputCurosr.visible
visible: valid && outputCursor.visible
OutputLayer.enabled: true
OutputLayer.keepLayer: true
OutputLayer.flags: OutputLayer.Cursor
Expand Down
8 changes: 4 additions & 4 deletions examples/surface-delegate/Main.qml
Original file line number Diff line number Diff line change
Expand Up @@ -119,14 +119,14 @@ Item {
cursorDelegate: Cursor {
id: cursorItem

required property QtObject outputCurosr
required property QtObject outputCursor
readonly property point position: parent.mapFromGlobal(cursor.position.x, cursor.position.y)

cursor: outputCurosr.cursor
output: outputCurosr.output.output
cursor: outputCursor.cursor
output: outputCursor.output.output
x: position.x - hotSpot.x
y: position.y - hotSpot.y
visible: valid && outputCurosr.visible
visible: valid && outputCursor.visible
OutputLayer.enabled: true
OutputLayer.keepLayer: true
OutputLayer.flags: OutputLayer.Cursor
Expand Down
8 changes: 4 additions & 4 deletions examples/tinywl-new/PrimaryOutput.qml
Original file line number Diff line number Diff line change
Expand Up @@ -17,14 +17,14 @@ OutputItem {
cursorDelegate: Cursor {
id: cursorItem

required property QtObject outputCurosr
required property QtObject outputCursor
readonly property point position: parent.mapFromGlobal(cursor.position.x, cursor.position.y)

cursor: outputCurosr.cursor
output: outputCurosr.output.output
cursor: outputCursor.cursor
output: outputCursor.output.output
x: position.x - hotSpot.x
y: position.y - hotSpot.y
visible: valid && outputCurosr.visible
visible: valid && outputCursor.visible
OutputLayer.enabled: !outputCursor.output.forceSoftwareCursor
OutputLayer.keepLayer: true
OutputLayer.outputs: [screenViewport]
Expand Down
3 changes: 2 additions & 1 deletion examples/tinywl-new/output.h
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,8 @@
#include <QObject>
#include <QQmlComponent>
#include <woutputviewport.h>
Q_MOC_INCLUDE(<woutputitem_p.h>)

Q_MOC_INCLUDE(<woutputitem.h>)

Q_DECLARE_LOGGING_CATEGORY(qLcLayerShell)

Expand Down
9 changes: 3 additions & 6 deletions src/server/protocols/woutputmanagerv1.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@

#include "woutputmanagerv1.h"
#include "woutputitem.h"
#include "woutputitem_p.h"
#include "private/wglobal_p.h"

#include <qwoutput.h>
Expand Down Expand Up @@ -122,16 +121,14 @@ void WOutputManagerV1::newOutput(WOutput *output)
W_D(WOutputManagerV1);
const auto *wlr_output = output->nativeHandle();

auto *attached = output->findChild<WOutputItemAttached*>(QString(), Qt::FindDirectChildrenOnly);
if (!attached)
attached = WOutputItem::qmlAttachedProperties(output);
auto outputItem = WOutputItem::getOutputItem(output);

WOutputState state {
.output = output,
.enabled = wlr_output->enabled,
.mode = wlr_output->current_mode,
.x = attached ? static_cast<int32_t>(attached->item()->x()) : 0,
.y = attached ? static_cast<int32_t>(attached->item()->y()) : 0,
.x = outputItem ? static_cast<int32_t>(outputItem->x()) : 0,
.y = outputItem ? static_cast<int32_t>(outputItem->y()) : 0,
.customModeSize = { wlr_output->width, wlr_output->height },
.customModeRefresh = wlr_output->refresh,
.transform = static_cast<WOutput::Transform>(wlr_output->transform),
Expand Down
30 changes: 1 addition & 29 deletions src/server/qtquick/private/woutputitem_p.h
Original file line number Diff line number Diff line change
Expand Up @@ -6,38 +6,10 @@
#include "woutputitem.h"
#include "wcursor.h"

#include <qwoutput.h>
#include <qwtexture.h>

#include <QQmlEngine>
#include <QQuickTextureFactory>

QW_USE_NAMESPACE
WAYLIB_SERVER_BEGIN_NAMESPACE

class WAYLIB_SERVER_EXPORT WOutputItemAttached : public QObject
{
friend class WOutputItem;
Q_OBJECT
Q_PROPERTY(WAYLIB_SERVER_NAMESPACE::WOutputItem* item READ item NOTIFY itemChanged FINAL)
QML_ANONYMOUS

public:
explicit WOutputItemAttached(QObject *parent = nullptr);

WOutputItem *item() const;

Q_SIGNALS:
void itemChanged();

private:
void setItem(WOutputItem *positioner);

private:
WOutputItem *m_positioner = nullptr;
};

class Q_DECL_HIDDEN WOutputCursor : public QObject
class WAYLIB_SERVER_EXPORT WOutputCursor : public QObject
{
friend class WOutputItem;
friend class WOutputItemPrivate;
Expand Down
42 changes: 2 additions & 40 deletions src/server/qtquick/woutputitem.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -16,24 +16,6 @@
QW_USE_NAMESPACE
WAYLIB_SERVER_BEGIN_NAMESPACE

WOutputItemAttached::WOutputItemAttached(QObject *parent)
: QObject(parent)
{

}

WOutputItem *WOutputItemAttached::item() const
{
return m_positioner;
}

void WOutputItemAttached::setItem(WOutputItem *positioner)
{
if (m_positioner == positioner)
return;
m_positioner = positioner;
Q_EMIT itemChanged();
}

#define DATA_OF_WOUPTUT "_WOutputItem"
class Q_DECL_HIDDEN WOutputItemPrivate : public WObjectPrivate
Expand Down Expand Up @@ -142,7 +124,7 @@ void WOutputItemPrivate::updateCursors()

Q_ASSERT(q->window());
auto obj = cursorDelegate->createWithInitialProperties({
{"outputCurosr", QVariant::fromValue(oc)},
{"outputCursor", QVariant::fromValue(oc)},
{"parent", QVariant::fromValue(q->window()->contentItem())},
}, qmlContext(q));
oc->item = qobject_cast<QQuickItem*>(obj);
Expand Down Expand Up @@ -244,17 +226,6 @@ WOutputItem::~WOutputItem()

}

WOutputItemAttached *WOutputItem::qmlAttachedProperties(QObject *target)
{
auto output = qobject_cast<WOutput*>(target);
if (!output)
return nullptr;
auto attached = new WOutputItemAttached(output);
attached->setItem(getOutputItem(output));

return attached;
}

WOutputItem *WOutputItem::getOutputItem(WOutput *output)
{
return qvariant_cast<WOutputItem*>(output->property(DATA_OF_WOUPTUT)) ;
Expand All @@ -266,11 +237,6 @@ WOutput *WOutputItem::output() const
return d->output.get();
}

inline static WOutputItemAttached *getAttached(WOutput *output)
{
return output->findChild<WOutputItemAttached*>(QString(), Qt::FindDirectChildrenOnly);
}

void WOutputItem::setOutput(WOutput *newOutput)
{
W_D(WOutputItem);
Expand All @@ -279,11 +245,7 @@ void WOutputItem::setOutput(WOutput *newOutput)
d->output = newOutput;

if (newOutput) {
if (auto attached = getAttached(newOutput)) {
attached->setItem(this);
} else {
newOutput->setProperty(DATA_OF_WOUPTUT, QVariant::fromValue(this));
}
newOutput->setProperty(DATA_OF_WOUPTUT, QVariant::fromValue(this));
}

if (isComponentComplete()) {
Expand Down
5 changes: 1 addition & 4 deletions src/server/qtquick/woutputitem.h
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,13 @@
#include <QQuickItem>

Q_MOC_INCLUDE(<wquickoutputlayout.h>)
Q_MOC_INCLUDE(<woutputitem_p.h>)

WAYLIB_SERVER_BEGIN_NAMESPACE

class WQuickSeat;
class WOutput;
class WOutputCursor;
class WQuickOutputLayout;
class WOutputItemAttached;
class WOutputItemPrivate;
class WAYLIB_SERVER_EXPORT WOutputItem : public WQuickObserver, public WObject
{
Expand All @@ -27,13 +26,11 @@ class WAYLIB_SERVER_EXPORT WOutputItem : public WQuickObserver, public WObject
Q_PROPERTY(QQmlComponent* cursorDelegate READ cursorDelegate WRITE setCursorDelegate NOTIFY cursorDelegateChanged)
Q_PROPERTY(QList<QQuickItem*> cursorItems READ cursorItems NOTIFY cursorItemsChanged)
QML_NAMED_ELEMENT(OutputItem)
QML_ATTACHED(WOutputItemAttached)

public:
explicit WOutputItem(QQuickItem *parent = nullptr);
~WOutputItem();

static WOutputItemAttached *qmlAttachedProperties(QObject *target);
static WOutputItem *getOutputItem(WOutput *output);

WOutput *output() const;
Expand Down