Merge lp:~macslow/qtubuntu/fix-1475678 into lp:qtubuntu

Proposed by Mirco Müller
Status: Work in progress
Proposed branch: lp:~macslow/qtubuntu/fix-1475678
Merge into: lp:qtubuntu
Diff against target: 87 lines (+32/-0)
3 files modified
src/ubuntumirclient/input.cpp (+12/-0)
src/ubuntumirclient/window.cpp (+17/-0)
src/ubuntumirclient/window.h (+3/-0)
To merge this branch: bzr merge lp:~macslow/qtubuntu/fix-1475678
Reviewer Review Type Date Requested Status
Ubuntu Phablet Team Pending
Review via email: mp+265459@code.launchpad.net

Commit message

Hook up listening to changes of mir_surface_attrib_visibility.

Description of the change

Hook up listening to changes of mir_surface_attrib_visibility.

To post a comment you must log in.
lp:~macslow/qtubuntu/fix-1475678 updated
271. By Mirco Müller

Implement isExposed() for UbuntuWindow and store visible state passed in via handleSurfaceVisibleChange().

272. By Mirco Müller

Use better-fitting term of "exposed" instead of "visible" in related calls... also matches qtmir's meaning of visibility better.

273. By Mirco Müller

Use temp. logging for UbuntuInput::customEvent().

Unmerged revisions

273. By Mirco Müller

Use temp. logging for UbuntuInput::customEvent().

272. By Mirco Müller

Use better-fitting term of "exposed" instead of "visible" in related calls... also matches qtmir's meaning of visibility better.

271. By Mirco Müller

Implement isExposed() for UbuntuWindow and store visible state passed in via handleSurfaceVisibleChange().

270. By Mirco Müller

Make a client-window set its visible-flag based on corresponding mir-surface-event coming in.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'src/ubuntumirclient/input.cpp'
2--- src/ubuntumirclient/input.cpp 2015-06-17 13:46:49 +0000
3+++ src/ubuntumirclient/input.cpp 2015-07-30 13:49:11 +0000
4@@ -232,10 +232,22 @@
5 case mir_event_type_surface:
6 {
7 auto surfaceEvent = mir_event_get_surface_event(nativeEvent);
8+
9+ if (mir_surface_event_get_attribute(surfaceEvent) == mir_surface_attrib_focus) {
10+ LOG("UbuntuInput::customEvent() - mir_surface_attrib_focus");
11+ }
12+ if (mir_surface_event_get_attribute(surfaceEvent) == mir_surface_attrib_visibility) {
13+ LOG("UbuntuInput::customEvent() - mir_surface_attrib_visibility");
14+ }
15+
16 if (mir_surface_event_get_attribute(surfaceEvent) == mir_surface_attrib_focus) {
17 ubuntuEvent->window->handleSurfaceFocusChange(mir_surface_event_get_attribute_value(surfaceEvent) ==
18 mir_surface_focused);
19 }
20+ if (mir_surface_event_get_attribute(surfaceEvent) == mir_surface_attrib_visibility) {
21+ ubuntuEvent->window->handleSurfaceExposedChange(mir_surface_event_get_attribute_value(surfaceEvent) ==
22+ mir_surface_visibility_exposed);
23+ }
24 break;
25 }
26 case mir_event_type_orientation:
27
28=== modified file 'src/ubuntumirclient/window.cpp'
29--- src/ubuntumirclient/window.cpp 2015-06-24 17:21:21 +0000
30+++ src/ubuntumirclient/window.cpp 2015-07-30 13:49:11 +0000
31@@ -350,6 +350,18 @@
32 QWindowSystemInterface::handleWindowActivated(activatedWindow, Qt::ActiveWindowFocusReason);
33 }
34
35+void UbuntuWindow::handleSurfaceExposedChange(bool exposed)
36+{
37+ LOG("UbuntuWindow::handleSurfaceExposedChange(exposed=%s)", exposed ? "true" : "false");
38+
39+ this->setVisible(exposed);
40+ if (m_exposed != exposed) {
41+ m_exposed = exposed;
42+ QWindowSystemInterface::handleExposeEvent (window(), m_exposed ? geometry() : QRect());
43+ }
44+}
45+
46+
47 void UbuntuWindow::setWindowState(Qt::WindowState state)
48 {
49 QMutexLocker(&d->mutex);
50@@ -397,6 +409,11 @@
51 }
52 }
53
54+bool UbuntuWindow::isExposed() const
55+{
56+ return m_exposed;
57+}
58+
59 void* UbuntuWindow::eglSurface() const
60 {
61 return d->eglSurface;
62
63=== modified file 'src/ubuntumirclient/window.h'
64--- src/ubuntumirclient/window.h 2015-05-12 17:30:15 +0000
65+++ src/ubuntumirclient/window.h 2015-07-30 13:49:11 +0000
66@@ -40,11 +40,13 @@
67 void setGeometry(const QRect&) override;
68 void setWindowState(Qt::WindowState state) override;
69 void setVisible(bool visible) override;
70+ bool isExposed() const override;
71
72 // New methods.
73 void* eglSurface() const;
74 void handleSurfaceResize(int width, int height);
75 void handleSurfaceFocusChange(bool focused);
76+ void handleSurfaceExposedChange(bool exposed);
77 void onBuffersSwapped_threadSafe(int newBufferWidth, int newBufferHeight);
78
79 UbuntuWindowPrivate* priv() { return d; }
80@@ -54,6 +56,7 @@
81 void moveResize(const QRect& rect);
82
83 UbuntuWindowPrivate *d;
84+ bool m_exposed;
85 };
86
87 #endif // UBUNTU_WINDOW_H

Subscribers

People subscribed via source and target branches