~gerboland/miral/qt-remove-old-WM-state-setting-code

« back to all changes in this revision

Viewing changes to miral-qt/src/platforms/mirserver/windowmodel.cpp

  • Committer: Gerry Boland
  • Date: 2016-07-25 13:43:57 UTC
  • Revision ID: gerry.boland@canonical.com-20160725134357-xn2p7iv9m3h54l0f
Add basic state signal emission to GUI thread

Show diffs side-by-side

added added

removed removed

Lines of Context:
15
15
 */
16
16
 
17
17
#include "windowmodel.h"
 
18
#include <QDebug>
18
19
 
19
20
WindowModel::WindowModel()
20
21
{
21
 
 
 
22
    qDebug("WindowModel::WindowModel");
22
23
}
23
24
 
24
25
WindowModel::~WindowModel()
26
27
 
27
28
}
28
29
 
29
 
void WindowModel::addWindow(const miral::WindowInfo &/*windowInfo*/)
30
 
{
31
 
 
32
 
}
33
 
 
34
 
void WindowModel::removeWindow(const miral::WindowInfo &/*windowInfo*/)
35
 
{
36
 
 
37
 
}
38
 
 
39
 
void WindowModel::focusWindow(const miral::WindowInfo &/*windowInfo*/, bool /*focus*/)
40
 
{
41
 
 
42
 
}
43
 
 
44
 
void WindowModel::moveWindow(miral::WindowInfo &/*windowInfo*/, mir::geometry::Point /*topLeft*/)
45
 
{
46
 
 
47
 
}
48
 
 
49
 
void WindowModel::resizeWindow(miral::WindowInfo &/*windowInfo*/, mir::geometry::Size /*newSize*/)
50
 
{
51
 
 
 
30
void WindowModel::addWindow(const miral::WindowInfo &windowInfo)
 
31
{
 
32
    qDebug("WindowModel::addWindow");
 
33
    m_windowIdStack.push_front(windowInfo.window().surface_id());
 
34
 
 
35
    QSize size(windowInfo.window().size().width.as_int(),windowInfo.window().size().height.as_int());
 
36
    QPoint position(windowInfo.window().top_left().x.as_int(), windowInfo.window().top_left().y.as_int());
 
37
 
 
38
    WindowInfo info{ size, position, false, windowInfo.window() };
 
39
    NumberedWindow window{ 0, info };
 
40
    Q_EMIT windowAdded(window);
 
41
}
 
42
 
 
43
void WindowModel::removeWindow(const miral::WindowInfo &windowInfo)
 
44
{
 
45
    qDebug("WindowModel::removeWindow");
 
46
    const int pos = m_windowIdStack.indexOf(windowInfo.window().surface_id());
 
47
    if (pos < 0) {
 
48
        qDebug("Unknown window removed");
 
49
        return;
 
50
    }
 
51
    m_windowIdStack.removeAt(pos);
 
52
    auto upos = static_cast<unsigned int>(pos);
 
53
    Q_EMIT windowRemoved(upos);
 
54
}
 
55
 
 
56
void WindowModel::focusWindow(const miral::WindowInfo &windowInfo, const bool focus)
 
57
{
 
58
    const int pos = m_windowIdStack.indexOf(windowInfo.window().surface_id());
 
59
    if (pos < 0) {
 
60
        qDebug("Unknown window focused");
 
61
        return;
 
62
    }
 
63
    auto upos = static_cast<unsigned int>(pos);
 
64
    m_focusedWindowIndex = upos;
 
65
    QSize size(windowInfo.window().size().width.as_int(),windowInfo.window().size().height.as_int());
 
66
    QPoint position(windowInfo.window().top_left().x.as_int(), windowInfo.window().top_left().y.as_int());
 
67
 
 
68
    WindowInfo info{ size, position, focus, windowInfo.window() };
 
69
    DirtiedWindow window{ upos, info, WindowInfo::DirtyStates::Focus};
 
70
    Q_EMIT windowChanged(window);
 
71
}
 
72
 
 
73
void WindowModel::moveWindow(const miral::WindowInfo &windowInfo, mir::geometry::Point topLeft)
 
74
{
 
75
    const int pos = m_windowIdStack.indexOf(windowInfo.window().surface_id());
 
76
    if (pos < 0) {
 
77
        qDebug("Unknown window moved");
 
78
        return;
 
79
    }
 
80
    auto upos = static_cast<unsigned int>(pos);
 
81
    const bool focused = (m_focusedWindowIndex == upos);
 
82
    QSize size(windowInfo.window().size().width.as_int(),windowInfo.window().size().height.as_int());
 
83
    QPoint position(topLeft.x.as_int(), topLeft.y.as_int());
 
84
 
 
85
    WindowInfo info{ size, position, focused, windowInfo.window() };
 
86
    DirtiedWindow window{ upos, info, WindowInfo::DirtyStates::Position};
 
87
    Q_EMIT windowChanged(window);
 
88
}
 
89
 
 
90
void WindowModel::resizeWindow(const miral::WindowInfo &windowInfo, mir::geometry::Size newSize)
 
91
{
 
92
    const int pos = m_windowIdStack.indexOf(windowInfo.window().surface_id());
 
93
    if (pos < 0) {
 
94
        qDebug("Unknown window resized");
 
95
        return;
 
96
    }
 
97
    auto upos = static_cast<unsigned int>(pos);
 
98
    const bool focused = (m_focusedWindowIndex == upos);
 
99
    QSize size(newSize.width.as_int(), newSize.height.as_int());
 
100
    QPoint position(windowInfo.window().top_left().x.as_int(), windowInfo.window().top_left().y.as_int());
 
101
 
 
102
    WindowInfo info{ size, position, focused, windowInfo.window() };
 
103
    DirtiedWindow window{ upos, info, WindowInfo::DirtyStates::Size};
 
104
    Q_EMIT windowChanged(window);
52
105
}
53
106
 
54
107
void WindowModel::raiseWindows(const std::vector<miral::Window> &/*windows*/)