on xenial help sign in
merged pre-req
b6ab28fNick Dedekind
plugins/WindowManager/Screen.cpp+7
@@ -185,6 +185,13 @@ QString Screen::outputTypeName() const
185 return QString();
185 return QString();
186}
186}
187
187
188+bool Screen::isSameAs(Screen *screen) const
189+{
190+ if (!screen) return false;
191+ if (screen == this) return true;
192+ return wrapped() == screen->wrapped();
193+}
194+
188void Screen::sync(Screen *proxy)
195void Screen::sync(Screen *proxy)
189{
196{
190 if (!proxy) return;
197 if (!proxy) return;
plugins/WindowManager/Screen.h+2
@@ -47,6 +47,8 @@ public:
47 QScreen* qscreen() const;
47 QScreen* qscreen() const;
48 QString outputTypeName() const;
48 QString outputTypeName() const;
49
49
50+ Q_INVOKABLE bool isSameAs(Screen*) const;
51+
50 Q_INVOKABLE ScreenConfig *beginConfiguration() const;
52 Q_INVOKABLE ScreenConfig *beginConfiguration() const;
51 Q_INVOKABLE bool applyConfiguration(ScreenConfig *configuration);
53 Q_INVOKABLE bool applyConfiguration(ScreenConfig *configuration);
52
54
plugins/WindowManager/ScreenAttached.cpp+14−1
@@ -21,11 +21,24 @@
21#include <QQuickItem>
21#include <QQuickItem>
22#include <QScreen>
22#include <QScreen>
23
23
24+namespace
25+{
26+QQuickItem* itemForOwner(QObject* obj) {
27+ QObject* parent = obj;
28+ while(parent) {
29+ auto item = qobject_cast<QQuickItem*>(parent);
30+ if (item) return item;
31+ parent = parent->parent();
32+ }
33+ return nullptr;
34+}
35+} // namesapce
36+
24ScreenAttached::ScreenAttached(QObject *owner)
37ScreenAttached::ScreenAttached(QObject *owner)
25 : Screen(owner)
38 : Screen(owner)
26 , m_window(nullptr)
39 , m_window(nullptr)
27{
40{
28− if (auto item = qobject_cast<QQuickItem*>(owner)) {
41+ if (auto item = itemForOwner(owner)) {
29 connect(item, &QQuickItem::windowChanged, this, &ScreenAttached::windowChanged);
42 connect(item, &QQuickItem::windowChanged, this, &ScreenAttached::windowChanged);
30 windowChanged(item->window());
43 windowChanged(item->window());
31 } else if (auto window = qobject_cast<QQuickWindow*>(owner)) {
44 } else if (auto window = qobject_cast<QQuickWindow*>(owner)) {
plugins/WindowManager/WindowManagerPlugin.cpp+2−2
@@ -61,16 +61,16 @@ void WindowManagerPlugin::registerTypes(const char *uri)
61 qmlRegisterType<AvailableDesktopArea>(uri, 1, 0, "AvailableDesktopArea");
61 qmlRegisterType<AvailableDesktopArea>(uri, 1, 0, "AvailableDesktopArea");
62 qmlRegisterType<WindowMargins>(uri, 1, 0, "WindowMargins");
62 qmlRegisterType<WindowMargins>(uri, 1, 0, "WindowMargins");
63 qmlRegisterSingletonType<WorkspaceManager>(uri, 1, 0, "WorkspaceManager", workspace_manager);
63 qmlRegisterSingletonType<WorkspaceManager>(uri, 1, 0, "WorkspaceManager", workspace_manager);
64− qmlRegisterUncreatableType<WorkspaceModel>(uri, 1, 0, "WorkspaceModel", notInstantiatable);
65 qmlRegisterSingletonType<ConcreteScreens>(uri, 1, 0, "Screens", screensSingleton);
64 qmlRegisterSingletonType<ConcreteScreens>(uri, 1, 0, "Screens", screensSingleton);
66 qmlRegisterUncreatableType<qtmir::ScreenMode>(uri, 1, 0, "ScreenMode", notInstantiatable);
65 qmlRegisterUncreatableType<qtmir::ScreenMode>(uri, 1, 0, "ScreenMode", notInstantiatable);
67− qmlRegisterUncreatableType<ScreenConfig>(uri, 1, 0, "ScreenConfig", notInstantiatable);
68 qmlRegisterSingletonType<WindowManagerObjects>(uri, 1, 0, "WindowManagerObjects", objectsSingleton);
66 qmlRegisterSingletonType<WindowManagerObjects>(uri, 1, 0, "WindowManagerObjects", objectsSingleton);
69
67
70 qRegisterMetaType<ConcreteScreen*>("ConcreteScreen*");
68 qRegisterMetaType<ConcreteScreen*>("ConcreteScreen*");
71 qRegisterMetaType<ProxyScreens*>("ProxyScreens*");
69 qRegisterMetaType<ProxyScreens*>("ProxyScreens*");
72 qRegisterMetaType<Workspace*>("Workspace*");
70 qRegisterMetaType<Workspace*>("Workspace*");
73 qRegisterMetaType<TopLevelWindowModel*>("TopLevelWindowModel*");
71 qRegisterMetaType<TopLevelWindowModel*>("TopLevelWindowModel*");
72+ qRegisterMetaType<ScreenConfig*>("ScreenConfig*");
73+ qRegisterMetaType<WorkspaceModel*>("WorkspaceModel*");
74
74
75 qRegisterMetaType<Window*>("Window*");
75 qRegisterMetaType<Window*>("Window*");
76 qRegisterMetaType<QAbstractListModel*>("QAbstractListModel*");
76 qRegisterMetaType<QAbstractListModel*>("QAbstractListModel*");
plugins/WindowManager/Workspace.cpp+1
@@ -89,6 +89,7 @@ bool Workspace::isAssigned() const
89
89
90bool Workspace::isSameAs(Workspace *wks) const
90bool Workspace::isSameAs(Workspace *wks) const
91{
91{
92+ if (!wks) return false;
92 if (wks == this) return true;
93 if (wks == this) return true;
93 return wks->workspace() == workspace();
94 return wks->workspace() == workspace();
94}
95}
tests/mocks/WindowManager/WindowManagerPlugin.cpp+2−2
@@ -58,16 +58,16 @@ void WindowManagerPlugin::registerTypes(const char *uri)
58 qmlRegisterType<AvailableDesktopArea>(uri, 1, 0, "AvailableDesktopArea");
58 qmlRegisterType<AvailableDesktopArea>(uri, 1, 0, "AvailableDesktopArea");
59 qmlRegisterType<WindowMargins>(uri, 1, 0, "WindowMargins");
59 qmlRegisterType<WindowMargins>(uri, 1, 0, "WindowMargins");
60 qmlRegisterSingletonType<WorkspaceManager>(uri, 1, 0, "WorkspaceManager", workspace_manager);
60 qmlRegisterSingletonType<WorkspaceManager>(uri, 1, 0, "WorkspaceManager", workspace_manager);
61− qmlRegisterUncreatableType<WorkspaceModel>(uri, 1, 0, "WorkspaceModel", notInstantiatable);
62 qmlRegisterSingletonType<ConcreteScreens>(uri, 1, 0, "Screens", screensSingleton);
61 qmlRegisterSingletonType<ConcreteScreens>(uri, 1, 0, "Screens", screensSingleton);
63 qmlRegisterUncreatableType<qtmir::ScreenMode>(uri, 1, 0, "ScreenMode", notInstantiatable);
62 qmlRegisterUncreatableType<qtmir::ScreenMode>(uri, 1, 0, "ScreenMode", notInstantiatable);
64− qmlRegisterUncreatableType<ScreenConfig>(uri, 1, 0, "ScreenConfig", notInstantiatable);
65 qmlRegisterSingletonType<WindowManagerObjects>(uri, 1, 0, "WindowManagerObjects", objectsSingleton);
63 qmlRegisterSingletonType<WindowManagerObjects>(uri, 1, 0, "WindowManagerObjects", objectsSingleton);
66
64
67 qRegisterMetaType<ConcreteScreen*>("ConcreteScreen*");
65 qRegisterMetaType<ConcreteScreen*>("ConcreteScreen*");
68 qRegisterMetaType<ProxyScreens*>("ProxyScreens*");
66 qRegisterMetaType<ProxyScreens*>("ProxyScreens*");
69 qRegisterMetaType<Workspace*>("Workspace*");
67 qRegisterMetaType<Workspace*>("Workspace*");
70 qRegisterMetaType<TopLevelWindowModel*>("TopLevelWindowModel*");
68 qRegisterMetaType<TopLevelWindowModel*>("TopLevelWindowModel*");
69+ qRegisterMetaType<ScreenConfig*>("ScreenConfig*");
70+ qRegisterMetaType<WorkspaceModel*>("WorkspaceModel*");
71
71
72 qRegisterMetaType<Window*>("Window*");
72 qRegisterMetaType<Window*>("Window*");
73 qRegisterMetaType<QAbstractListModel*>("QAbstractListModel*");
73 qRegisterMetaType<QAbstractListModel*>("QAbstractListModel*");