Changeset View
Changeset View
Standalone View
Standalone View
autotests/integration/screenedge_client_show_test.cpp
Show All 13 Lines | |||||
14 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 14 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
15 | GNU General Public License for more details. | 15 | GNU General Public License for more details. | ||
16 | 16 | | |||
17 | You should have received a copy of the GNU General Public License | 17 | You should have received a copy of the GNU General Public License | ||
18 | along with this program. If not, see <http://www.gnu.org/licenses/>. | 18 | along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
19 | *********************************************************************/ | 19 | *********************************************************************/ | ||
20 | #include "kwin_wayland_test.h" | 20 | #include "kwin_wayland_test.h" | ||
21 | #include "platform.h" | 21 | #include "platform.h" | ||
22 | #include "client.h" | 22 | #include "x11client.h" | ||
23 | #include "cursor.h" | 23 | #include "cursor.h" | ||
24 | #include "deleted.h" | 24 | #include "deleted.h" | ||
25 | #include "screenedge.h" | 25 | #include "screenedge.h" | ||
26 | #include "screens.h" | 26 | #include "screens.h" | ||
27 | #include "wayland_server.h" | 27 | #include "wayland_server.h" | ||
28 | #include "workspace.h" | 28 | #include "workspace.h" | ||
29 | #include "xdgshellclient.h" | 29 | #include "xdgshellclient.h" | ||
30 | #include <kwineffects.h> | 30 | #include <kwineffects.h> | ||
▲ Show 20 Lines • Show All 104 Lines • ▼ Show 20 Line(s) | 112 | { | |||
135 | NETWinInfo info(c.data(), w, rootWindow(), NET::WMAllProperties, NET::WM2AllProperties); | 135 | NETWinInfo info(c.data(), w, rootWindow(), NET::WMAllProperties, NET::WM2AllProperties); | ||
136 | info.setWindowType(NET::Dock); | 136 | info.setWindowType(NET::Dock); | ||
137 | xcb_map_window(c.data(), w); | 137 | xcb_map_window(c.data(), w); | ||
138 | xcb_flush(c.data()); | 138 | xcb_flush(c.data()); | ||
139 | 139 | | |||
140 | QSignalSpy windowCreatedSpy(workspace(), &Workspace::clientAdded); | 140 | QSignalSpy windowCreatedSpy(workspace(), &Workspace::clientAdded); | ||
141 | QVERIFY(windowCreatedSpy.isValid()); | 141 | QVERIFY(windowCreatedSpy.isValid()); | ||
142 | QVERIFY(windowCreatedSpy.wait()); | 142 | QVERIFY(windowCreatedSpy.wait()); | ||
143 | Client *client = windowCreatedSpy.last().first().value<Client*>(); | 143 | X11Client *client = windowCreatedSpy.last().first().value<X11Client *>(); | ||
144 | QVERIFY(client); | 144 | QVERIFY(client); | ||
145 | QVERIFY(!client->isDecorated()); | 145 | QVERIFY(!client->isDecorated()); | ||
146 | QCOMPARE(client->geometry(), windowGeometry); | 146 | QCOMPARE(client->geometry(), windowGeometry); | ||
147 | QVERIFY(!client->hasStrut()); | 147 | QVERIFY(!client->hasStrut()); | ||
148 | QVERIFY(!client->isHiddenInternal()); | 148 | QVERIFY(!client->isHiddenInternal()); | ||
149 | 149 | | |||
150 | QSignalSpy effectsWindowAdded(effects, &EffectsHandler::windowAdded); | 150 | QSignalSpy effectsWindowAdded(effects, &EffectsHandler::windowAdded); | ||
151 | QVERIFY(effectsWindowAdded.isValid()); | 151 | QVERIFY(effectsWindowAdded.isValid()); | ||
152 | QVERIFY(effectsWindowAdded.wait()); | 152 | QVERIFY(effectsWindowAdded.wait()); | ||
153 | 153 | | |||
154 | // now try to hide | 154 | // now try to hide | ||
155 | QFETCH(quint32, location); | 155 | QFETCH(quint32, location); | ||
156 | xcb_change_property(c.data(), XCB_PROP_MODE_REPLACE, w, atom, XCB_ATOM_CARDINAL, 32, 1, &location); | 156 | xcb_change_property(c.data(), XCB_PROP_MODE_REPLACE, w, atom, XCB_ATOM_CARDINAL, 32, 1, &location); | ||
157 | xcb_flush(c.data()); | 157 | xcb_flush(c.data()); | ||
158 | 158 | | |||
159 | QSignalSpy effectsWindowHiddenSpy(effects, &EffectsHandler::windowHidden); | 159 | QSignalSpy effectsWindowHiddenSpy(effects, &EffectsHandler::windowHidden); | ||
160 | QVERIFY(effectsWindowHiddenSpy.isValid()); | 160 | QVERIFY(effectsWindowHiddenSpy.isValid()); | ||
161 | QSignalSpy clientHiddenSpy(client, &Client::windowHidden); | 161 | QSignalSpy clientHiddenSpy(client, &X11Client::windowHidden); | ||
162 | QVERIFY(clientHiddenSpy.isValid()); | 162 | QVERIFY(clientHiddenSpy.isValid()); | ||
163 | QVERIFY(clientHiddenSpy.wait()); | 163 | QVERIFY(clientHiddenSpy.wait()); | ||
164 | QVERIFY(client->isHiddenInternal()); | 164 | QVERIFY(client->isHiddenInternal()); | ||
165 | QCOMPARE(effectsWindowHiddenSpy.count(), 1); | 165 | QCOMPARE(effectsWindowHiddenSpy.count(), 1); | ||
166 | 166 | | |||
167 | // now trigger the edge | 167 | // now trigger the edge | ||
168 | QSignalSpy effectsWindowShownSpy(effects, &EffectsHandler::windowShown); | 168 | QSignalSpy effectsWindowShownSpy(effects, &EffectsHandler::windowShown); | ||
169 | QVERIFY(effectsWindowShownSpy.isValid()); | 169 | QVERIFY(effectsWindowShownSpy.isValid()); | ||
Show All 14 Lines | |||||
184 | QFETCH(QRect, resizedWindowGeometry); | 184 | QFETCH(QRect, resizedWindowGeometry); | ||
185 | //resizewhile hidden | 185 | //resizewhile hidden | ||
186 | client->setGeometry(resizedWindowGeometry); | 186 | client->setGeometry(resizedWindowGeometry); | ||
187 | //triggerPos shouldn't be valid anymore | 187 | //triggerPos shouldn't be valid anymore | ||
188 | Cursor::setPos(triggerPos); | 188 | Cursor::setPos(triggerPos); | ||
189 | QVERIFY(client->isHiddenInternal()); | 189 | QVERIFY(client->isHiddenInternal()); | ||
190 | 190 | | |||
191 | // destroy window again | 191 | // destroy window again | ||
192 | QSignalSpy windowClosedSpy(client, &Client::windowClosed); | 192 | QSignalSpy windowClosedSpy(client, &X11Client::windowClosed); | ||
193 | QVERIFY(windowClosedSpy.isValid()); | 193 | QVERIFY(windowClosedSpy.isValid()); | ||
194 | xcb_unmap_window(c.data(), w); | 194 | xcb_unmap_window(c.data(), w); | ||
195 | xcb_destroy_window(c.data(), w); | 195 | xcb_destroy_window(c.data(), w); | ||
196 | xcb_flush(c.data()); | 196 | xcb_flush(c.data()); | ||
197 | QVERIFY(windowClosedSpy.wait()); | 197 | QVERIFY(windowClosedSpy.wait()); | ||
198 | } | 198 | } | ||
199 | 199 | | |||
200 | void ScreenEdgeClientShowTest::testScreenEdgeShowX11Touch_data() | 200 | void ScreenEdgeClientShowTest::testScreenEdgeShowX11Touch_data() | ||
Show All 38 Lines | 216 | { | |||
239 | NETWinInfo info(c.data(), w, rootWindow(), NET::WMAllProperties, NET::WM2AllProperties); | 239 | NETWinInfo info(c.data(), w, rootWindow(), NET::WMAllProperties, NET::WM2AllProperties); | ||
240 | info.setWindowType(NET::Dock); | 240 | info.setWindowType(NET::Dock); | ||
241 | xcb_map_window(c.data(), w); | 241 | xcb_map_window(c.data(), w); | ||
242 | xcb_flush(c.data()); | 242 | xcb_flush(c.data()); | ||
243 | 243 | | |||
244 | QSignalSpy windowCreatedSpy(workspace(), &Workspace::clientAdded); | 244 | QSignalSpy windowCreatedSpy(workspace(), &Workspace::clientAdded); | ||
245 | QVERIFY(windowCreatedSpy.isValid()); | 245 | QVERIFY(windowCreatedSpy.isValid()); | ||
246 | QVERIFY(windowCreatedSpy.wait()); | 246 | QVERIFY(windowCreatedSpy.wait()); | ||
247 | Client *client = windowCreatedSpy.last().first().value<Client*>(); | 247 | X11Client *client = windowCreatedSpy.last().first().value<X11Client *>(); | ||
248 | QVERIFY(client); | 248 | QVERIFY(client); | ||
249 | QVERIFY(!client->isDecorated()); | 249 | QVERIFY(!client->isDecorated()); | ||
250 | QCOMPARE(client->geometry(), windowGeometry); | 250 | QCOMPARE(client->geometry(), windowGeometry); | ||
251 | QVERIFY(!client->hasStrut()); | 251 | QVERIFY(!client->hasStrut()); | ||
252 | QVERIFY(!client->isHiddenInternal()); | 252 | QVERIFY(!client->isHiddenInternal()); | ||
253 | 253 | | |||
254 | QSignalSpy effectsWindowAdded(effects, &EffectsHandler::windowAdded); | 254 | QSignalSpy effectsWindowAdded(effects, &EffectsHandler::windowAdded); | ||
255 | QVERIFY(effectsWindowAdded.isValid()); | 255 | QVERIFY(effectsWindowAdded.isValid()); | ||
256 | QVERIFY(effectsWindowAdded.wait()); | 256 | QVERIFY(effectsWindowAdded.wait()); | ||
257 | 257 | | |||
258 | // now try to hide | 258 | // now try to hide | ||
259 | QFETCH(quint32, location); | 259 | QFETCH(quint32, location); | ||
260 | xcb_change_property(c.data(), XCB_PROP_MODE_REPLACE, w, atom, XCB_ATOM_CARDINAL, 32, 1, &location); | 260 | xcb_change_property(c.data(), XCB_PROP_MODE_REPLACE, w, atom, XCB_ATOM_CARDINAL, 32, 1, &location); | ||
261 | xcb_flush(c.data()); | 261 | xcb_flush(c.data()); | ||
262 | 262 | | |||
263 | QSignalSpy effectsWindowHiddenSpy(effects, &EffectsHandler::windowHidden); | 263 | QSignalSpy effectsWindowHiddenSpy(effects, &EffectsHandler::windowHidden); | ||
264 | QVERIFY(effectsWindowHiddenSpy.isValid()); | 264 | QVERIFY(effectsWindowHiddenSpy.isValid()); | ||
265 | QSignalSpy clientHiddenSpy(client, &Client::windowHidden); | 265 | QSignalSpy clientHiddenSpy(client, &X11Client::windowHidden); | ||
266 | QVERIFY(clientHiddenSpy.isValid()); | 266 | QVERIFY(clientHiddenSpy.isValid()); | ||
267 | QVERIFY(clientHiddenSpy.wait()); | 267 | QVERIFY(clientHiddenSpy.wait()); | ||
268 | QVERIFY(client->isHiddenInternal()); | 268 | QVERIFY(client->isHiddenInternal()); | ||
269 | QCOMPARE(effectsWindowHiddenSpy.count(), 1); | 269 | QCOMPARE(effectsWindowHiddenSpy.count(), 1); | ||
270 | 270 | | |||
271 | // now trigger the edge | 271 | // now trigger the edge | ||
272 | QSignalSpy effectsWindowShownSpy(effects, &EffectsHandler::windowShown); | 272 | QSignalSpy effectsWindowShownSpy(effects, &EffectsHandler::windowShown); | ||
273 | QVERIFY(effectsWindowShownSpy.isValid()); | 273 | QVERIFY(effectsWindowShownSpy.isValid()); | ||
274 | quint32 timestamp = 0; | 274 | quint32 timestamp = 0; | ||
275 | QFETCH(QPoint, touchDownPos); | 275 | QFETCH(QPoint, touchDownPos); | ||
276 | QFETCH(QPoint, targetPos); | 276 | QFETCH(QPoint, targetPos); | ||
277 | kwinApp()->platform()->touchDown(0, touchDownPos, timestamp++); | 277 | kwinApp()->platform()->touchDown(0, touchDownPos, timestamp++); | ||
278 | kwinApp()->platform()->touchMotion(0, targetPos, timestamp++); | 278 | kwinApp()->platform()->touchMotion(0, targetPos, timestamp++); | ||
279 | kwinApp()->platform()->touchUp(0, timestamp++); | 279 | kwinApp()->platform()->touchUp(0, timestamp++); | ||
280 | QVERIFY(effectsWindowShownSpy.wait()); | 280 | QVERIFY(effectsWindowShownSpy.wait()); | ||
281 | QVERIFY(!client->isHiddenInternal()); | 281 | QVERIFY(!client->isHiddenInternal()); | ||
282 | QCOMPARE(effectsWindowShownSpy.count(), 1); | 282 | QCOMPARE(effectsWindowShownSpy.count(), 1); | ||
283 | 283 | | |||
284 | // destroy window again | 284 | // destroy window again | ||
285 | QSignalSpy windowClosedSpy(client, &Client::windowClosed); | 285 | QSignalSpy windowClosedSpy(client, &X11Client::windowClosed); | ||
286 | QVERIFY(windowClosedSpy.isValid()); | 286 | QVERIFY(windowClosedSpy.isValid()); | ||
287 | xcb_unmap_window(c.data(), w); | 287 | xcb_unmap_window(c.data(), w); | ||
288 | xcb_destroy_window(c.data(), w); | 288 | xcb_destroy_window(c.data(), w); | ||
289 | xcb_flush(c.data()); | 289 | xcb_flush(c.data()); | ||
290 | QVERIFY(windowClosedSpy.wait()); | 290 | QVERIFY(windowClosedSpy.wait()); | ||
291 | } | 291 | } | ||
292 | 292 | | |||
293 | } | 293 | } | ||
294 | 294 | | |||
295 | WAYLANDTEST_MAIN(KWin::ScreenEdgeClientShowTest) | 295 | WAYLANDTEST_MAIN(KWin::ScreenEdgeClientShowTest) | ||
296 | #include "screenedge_client_show_test.moc" | 296 | #include "screenedge_client_show_test.moc" |