Merge lp:~alan-griffiths/miral/deconflate-output-from-display into lp:miral

Proposed by Alan Griffiths
Status: Merged
Approved by: Alan Griffiths
Approved revision: 573
Merged at revision: 571
Proposed branch: lp:~alan-griffiths/miral/deconflate-output-from-display
Merge into: lp:miral
Diff against target: 494 lines (+69/-63)
12 files modified
debian/libmiral2.symbols (+1/-0)
include/miral/window_manager_tools.h (+2/-2)
miral-shell/floating_window_manager.cpp (+5/-5)
miral-shell/tiling_window_manager.cpp (+4/-4)
miral-shell/tiling_window_manager.h (+1/-1)
miral/basic_window_manager.cpp (+43/-43)
miral/basic_window_manager.h (+2/-2)
miral/symbols.map (+1/-0)
miral/window_management_trace.cpp (+2/-2)
miral/window_management_trace.h (+1/-1)
miral/window_manager_tools.cpp (+6/-2)
miral/window_manager_tools_implementation.h (+1/-1)
To merge this branch: bzr merge lp:~alan-griffiths/miral/deconflate-output-from-display
Reviewer Review Type Date Requested Status
Gerry Boland (community) Approve
Mir CI Bot continuous-integration Approve
Review via email: mp+328221@code.launchpad.net

Commit message

Correct some conflation of the display and the outputs it includes

To post a comment you must log in.
Revision history for this message
Mir CI Bot (mir-ci-bot) wrote :

PASSED: Continuous integration, rev:573
https://mir-jenkins.ubuntu.com/job/miral-ci/58/
Executed test runs:
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-miral/90
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-0-fetch/5009
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=artful/4998
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=xenial/4998
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=zesty/4998
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-miral/arch=amd64,release=artful/94
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-miral/arch=amd64,release=artful/94/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-miral/arch=amd64,release=xenial/94
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-miral/arch=amd64,release=xenial/94/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-miral/arch=amd64,release=zesty/94
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-miral/arch=amd64,release=zesty/94/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-miral/arch=i386,release=artful/94
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-miral/arch=i386,release=artful/94/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-miral/arch=i386,release=xenial/94
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-miral/arch=i386,release=xenial/94/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-miral/arch=i386,release=zesty/94
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-miral/arch=i386,release=zesty/94/artifact/output/*zip*/output.zip

Click here to trigger a rebuild:
https://mir-jenkins.ubuntu.com/job/miral-ci/58/rebuild

review: Approve (continuous-integration)
Revision history for this message
Gerry Boland (gerboland) wrote :

LGTM

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'debian/libmiral2.symbols'
2--- debian/libmiral2.symbols 2017-07-26 10:52:45 +0000
3+++ debian/libmiral2.symbols 2017-07-28 13:57:06 +0000
4@@ -395,3 +395,4 @@
5 (c++)"typeinfo for miral::WindowManagementPolicyAddendum2@MIRAL_1.4.0" 1.4.0
6 MIRAL_1.5.0@MIRAL_1.5.0 1.5.0
7 (c++)"typeinfo for miral::WindowManagementPolicyAddendum3@MIRAL_1.5.0" 1.5.0
8+ (c++)"miral::WindowManagerTools::active_output()@MIRAL_1.5.0" 1.5.0
9\ No newline at end of file
10
11=== modified file 'include/miral/window_manager_tools.h'
12--- include/miral/window_manager_tools.h 2017-03-23 11:25:25 +0000
13+++ include/miral/window_manager_tools.h 2017-07-28 13:57:06 +0000
14@@ -160,8 +160,8 @@
15 /// Find the topmost window at the cursor
16 auto window_at(mir::geometry::Point cursor) const -> Window;
17
18- /// Find the active display area
19- auto active_display() -> mir::geometry::Rectangle const;
20+ /// Find the active output area
21+ auto active_output() -> mir::geometry::Rectangle const;
22
23 /// Raise window and all its children
24 void raise_tree(Window const& root);
25
26=== modified file 'miral-shell/floating_window_manager.cpp'
27--- miral-shell/floating_window_manager.cpp 2017-07-28 13:43:24 +0000
28+++ miral-shell/floating_window_manager.cpp 2017-07-28 13:57:06 +0000
29@@ -468,7 +468,7 @@
30 {
31 if (auto active_window = tools.active_window())
32 {
33- auto active_display = tools.active_display();
34+ auto active_output = tools.active_output();
35 auto& window_info = tools.info_for(active_window);
36 WindowSpecification modifications;
37
38@@ -477,13 +477,13 @@
39 case KEY_LEFT:
40 modifications.state() = mir_window_state_vertmaximized;
41 tools.place_and_size_for_state(modifications, window_info);
42- modifications.top_left() = active_display.top_left + title_bar_height;
43+ modifications.top_left() = active_output.top_left + title_bar_height;
44 break;
45
46 case KEY_RIGHT:
47 modifications.state() = mir_window_state_vertmaximized;
48 tools.place_and_size_for_state(modifications, window_info);
49- modifications.top_left() = active_display.top_right() -
50+ modifications.top_left() = active_output.top_right() -
51 as_displacement({active_window.size().width, 0}) + title_bar_height;
52 break;
53
54@@ -491,14 +491,14 @@
55 modifications.state() = mir_window_state_horizmaximized;
56 tools.place_and_size_for_state(modifications, window_info);
57
58- modifications.top_left() = active_display.top_left + title_bar_height;
59+ modifications.top_left() = active_output.top_left + title_bar_height;
60 break;
61
62 case KEY_DOWN:
63 modifications.state() = mir_window_state_horizmaximized;
64 tools.place_and_size_for_state(modifications, window_info);
65
66- modifications.top_left() = active_display.bottom_right() - as_displacement(
67+ modifications.top_left() = active_output.bottom_right() - as_displacement(
68 modifications.size().is_set() ? modifications.size().value() : active_window.size());
69 break;
70
71
72=== modified file 'miral-shell/tiling_window_manager.cpp'
73--- miral-shell/tiling_window_manager.cpp 2017-07-24 15:30:22 +0000
74+++ miral-shell/tiling_window_manager.cpp 2017-07-28 13:57:06 +0000
75@@ -457,13 +457,13 @@
76 { return spinner.session() != info.application() && tile_for(info).contains(position);});
77 }
78
79-void TilingWindowManagerPolicy::update_tiles(Rectangles const& displays)
80+void TilingWindowManagerPolicy::update_tiles(Rectangles const& outputs)
81 {
82 auto const tile_count = tiles.count();
83
84- if (tile_count < 1 || displays.size() < 1) return;
85+ if (tile_count < 1 || outputs.size() < 1) return;
86
87- auto const bounding_rect = displays.bounding_rectangle();
88+ auto const bounding_rect = outputs.bounding_rectangle();
89
90 auto const total_width = bounding_rect.size.width.as_int();
91 auto const total_height = bounding_rect.size.height.as_int();
92@@ -674,7 +674,7 @@
93 {
94 if (dirty_displays)
95 {
96- // Need to acquire lock before accessing displays & dirty_tiles
97+ // Need to acquire lock before accessing outputs & dirty_tiles
98 tools.invoke_under_lock([this]
99 {
100 displays = live_displays;
101
102=== modified file 'miral-shell/tiling_window_manager.h'
103--- miral-shell/tiling_window_manager.h 2017-03-06 09:26:44 +0000
104+++ miral-shell/tiling_window_manager.h 2017-07-28 13:57:06 +0000
105@@ -95,7 +95,7 @@
106
107 miral::Application application_under(Point position);
108
109- void update_tiles(Rectangles const& displays);
110+ void update_tiles(Rectangles const& outputs);
111 void update_surfaces(miral::ApplicationInfo& info, Rectangle const& old_tile, Rectangle const& new_tile);
112
113 auto transform_set_state(MirWindowState value) -> MirWindowState;
114
115=== modified file 'miral/basic_window_manager.cpp'
116--- miral/basic_window_manager.cpp 2017-07-28 08:54:30 +0000
117+++ miral/basic_window_manager.cpp 2017-07-28 13:57:06 +0000
118@@ -727,7 +727,7 @@
119 return surface_at ? info_for(surface_at).window() : Window{};
120 }
121
122-auto miral::BasicWindowManager::active_display()
123+auto miral::BasicWindowManager::active_output()
124 -> geometry::Rectangle const
125 {
126 geometry::Rectangle result;
127@@ -739,13 +739,13 @@
128 auto const surface_rect = surface->input_bounds();
129 int max_overlap_area = -1;
130
131- for (auto const& display : displays)
132+ for (auto const& output : outputs)
133 {
134- auto const intersection = surface_rect.intersection_with(display).size;
135+ auto const intersection = surface_rect.intersection_with(output).size;
136 if (intersection.width.as_int()*intersection.height.as_int() > max_overlap_area)
137 {
138 max_overlap_area = intersection.width.as_int()*intersection.height.as_int();
139- result = display;
140+ result = output;
141 }
142 }
143 return result;
144@@ -757,20 +757,20 @@
145 // available.
146
147 // 3. Otherwise, the display that contains the pointer, if there is one.
148- for (auto const& display : displays)
149+ for (auto const& output : outputs)
150 {
151- if (display.contains(cursor))
152+ if (output.contains(cursor))
153 {
154 // Ignore the (unspecified) possiblity of overlapping displays
155- return display;
156+ return output;
157 }
158 }
159
160 // 4. Otherwise, the primary display, if there is one (for example, the laptop display).
161
162 // 5. Otherwise, the first display.
163- if (displays.size())
164- result = *displays.begin();
165+ if (outputs.size())
166+ result = *outputs.begin();
167
168 return result;
169 }
170@@ -1042,7 +1042,7 @@
171 return;
172 }
173
174- auto const display_area = displays.bounding_rectangle();
175+ auto const display_area = outputs.bounding_rectangle();
176 auto const window = window_info.window();
177
178 auto restore_rect = window_info.restore_rect();
179@@ -1450,7 +1450,7 @@
180 if (!parameters.state().is_set())
181 parameters.state() = mir_window_state_restored;
182
183- auto const active_display_area = active_display();
184+ auto const active_output_area = active_output();
185 auto const height = parameters.size().value().height.as_int();
186
187 bool positioned = false;
188@@ -1525,35 +1525,35 @@
189
190 if (!positioned)
191 {
192- auto centred = active_display_area.top_left
193- + 0.5*(as_displacement(active_display_area.size) - as_displacement(parameters.size().value()))
194- - DeltaY{(active_display_area.size.height.as_int()-height)/6};
195+ auto centred = active_output_area.top_left
196+ + 0.5*(as_displacement(active_output_area.size) - as_displacement(parameters.size().value()))
197+ - DeltaY{(active_output_area.size.height.as_int()-height)/6};
198
199 switch (parameters.state().value())
200 {
201 case mir_window_state_fullscreen:
202 case mir_window_state_maximized:
203- parameters.top_left() = active_display_area.top_left;
204- parameters.size() = active_display_area.size;
205+ parameters.top_left() = active_output_area.top_left;
206+ parameters.size() = active_output_area.size;
207 break;
208
209 case mir_window_state_vertmaximized:
210- centred.y = active_display_area.top_left.y;
211+ centred.y = active_output_area.top_left.y;
212 parameters.top_left() = centred;
213- parameters.size() = Size{parameters.size().value().width, active_display_area.size.height};
214+ parameters.size() = Size{parameters.size().value().width, active_output_area.size.height};
215 break;
216
217 case mir_window_state_horizmaximized:
218- centred.x = active_display_area.top_left.x;
219+ centred.x = active_output_area.top_left.x;
220 parameters.top_left() = centred;
221- parameters.size() = Size{active_display_area.size.width, parameters.size().value().height};
222+ parameters.size() = Size{active_output_area.size.width, parameters.size().value().height};
223 break;
224
225 default:
226 parameters.top_left() = centred;
227 }
228
229- auto const display_area = displays.bounding_rectangle();
230+ auto const display_area = outputs.bounding_rectangle();
231
232 if (parameters.top_left().value().y < display_area.top_left.y)
233 parameters.top_left() = Point{parameters.top_left().value().x, display_area.top_left.y};
234@@ -1750,7 +1750,7 @@
235 -> mir::optional_value<Rectangle>
236 {
237 auto const hints = parameters.placement_hints().value();
238- auto const active_display_area = active_display();
239+ auto const active_output_area = active_output();
240 auto const win_gravity = parameters.window_placement_gravity().value();
241
242 if (parameters.size().is_set())
243@@ -1775,7 +1775,7 @@
244 auto result = constrain_to(parent, anchor_for(aux_rect, rect_gravity) + offset) +
245 offset_for(size, win_gravity);
246
247- if (active_display_area.contains(Rectangle{result, size}))
248+ if (active_output_area.contains(Rectangle{result, size}))
249 return Rectangle{result, size};
250
251 if (!default_result.is_set())
252@@ -1787,7 +1787,7 @@
253 auto result = constrain_to(parent, anchor_for(aux_rect, flip_x(rect_gravity)) + flip_x(offset)) +
254 offset_for(size, flip_x(win_gravity));
255
256- if (active_display_area.contains(Rectangle{result, size}))
257+ if (active_output_area.contains(Rectangle{result, size}))
258 return Rectangle{result, size};
259 }
260
261@@ -1796,7 +1796,7 @@
262 auto result = constrain_to(parent, anchor_for(aux_rect, flip_y(rect_gravity)) + flip_y(offset)) +
263 offset_for(size, flip_y(win_gravity));
264
265- if (active_display_area.contains(Rectangle{result, size}))
266+ if (active_output_area.contains(Rectangle{result, size}))
267 return Rectangle{result, size};
268 }
269
270@@ -1805,7 +1805,7 @@
271 auto result = constrain_to(parent, anchor_for(aux_rect, flip_x(flip_y(rect_gravity))) + flip_x(flip_y(offset))) +
272 offset_for(size, flip_x(flip_y(win_gravity)));
273
274- if (active_display_area.contains(Rectangle{result, size}))
275+ if (active_output_area.contains(Rectangle{result, size}))
276 return Rectangle{result, size};
277 }
278 }
279@@ -1817,8 +1817,8 @@
280
281 if (hints & mir_placement_hints_slide_x)
282 {
283- auto const left_overhang = result.x - active_display_area.top_left.x;
284- auto const right_overhang = (result + as_displacement(size)).x - active_display_area.top_right().x;
285+ auto const left_overhang = result.x - active_output_area.top_left.x;
286+ auto const right_overhang = (result + as_displacement(size)).x - active_output_area.top_right().x;
287
288 if (left_overhang < DeltaX{0})
289 result -= left_overhang;
290@@ -1828,8 +1828,8 @@
291
292 if (hints & mir_placement_hints_slide_y)
293 {
294- auto const top_overhang = result.y - active_display_area.top_left.y;
295- auto const bot_overhang = (result + as_displacement(size)).y - active_display_area.bottom_left().y;
296+ auto const top_overhang = result.y - active_output_area.top_left.y;
297+ auto const bot_overhang = (result + as_displacement(size)).y - active_output_area.bottom_left().y;
298
299 if (top_overhang < DeltaY{0})
300 result -= top_overhang;
301@@ -1837,7 +1837,7 @@
302 result -= bot_overhang;
303 }
304
305- if (active_display_area.contains(Rectangle{result, size}))
306+ if (active_output_area.contains(Rectangle{result, size}))
307 return Rectangle{result, size};
308 }
309
310@@ -1848,8 +1848,8 @@
311
312 if (hints & mir_placement_hints_resize_x)
313 {
314- auto const left_overhang = result.x - active_display_area.top_left.x;
315- auto const right_overhang = (result + as_displacement(size)).x - active_display_area.top_right().x;
316+ auto const left_overhang = result.x - active_output_area.top_left.x;
317+ auto const right_overhang = (result + as_displacement(size)).x - active_output_area.top_right().x;
318
319 if (left_overhang < DeltaX{0})
320 {
321@@ -1865,8 +1865,8 @@
322
323 if (hints & mir_placement_hints_resize_y)
324 {
325- auto const top_overhang = result.y - active_display_area.top_left.y;
326- auto const bot_overhang = (result + as_displacement(size)).y - active_display_area.bottom_left().y;
327+ auto const top_overhang = result.y - active_output_area.top_left.y;
328+ auto const bot_overhang = (result + as_displacement(size)).y - active_output_area.bottom_left().y;
329
330 if (top_overhang < DeltaY{0})
331 {
332@@ -1880,7 +1880,7 @@
333 }
334 }
335
336- if (active_display_area.contains(Rectangle{result, size}))
337+ if (active_output_area.contains(Rectangle{result, size}))
338 return Rectangle{result, size};
339 }
340
341@@ -2149,7 +2149,7 @@
342 void miral::BasicWindowManager::add_display_for_testing(mir::geometry::Rectangle const& area)
343 {
344 Locker lock{this};
345- displays.add(area);
346+ outputs.add(area);
347
348 update_windows_for_outputs();
349 }
350@@ -2157,7 +2157,7 @@
351 void miral::BasicWindowManager::advise_output_create(miral::Output const& output)
352 {
353 Locker lock{this};
354- displays.add(output.extents());
355+ outputs.add(output.extents());
356
357 update_windows_for_outputs();
358 }
359@@ -2165,8 +2165,8 @@
360 void miral::BasicWindowManager::advise_output_update(miral::Output const& updated, miral::Output const& original)
361 {
362 Locker lock{this};
363- displays.remove(original.extents());
364- displays.add(updated.extents());
365+ outputs.remove(original.extents());
366+ outputs.add(updated.extents());
367
368 update_windows_for_outputs();
369 }
370@@ -2174,7 +2174,7 @@
371 void miral::BasicWindowManager::advise_output_delete(miral::Output const& output)
372 {
373 Locker lock{this};
374- displays.remove(output.extents());
375+ outputs.remove(output.extents());
376
377 update_windows_for_outputs();
378 }
379@@ -2192,10 +2192,10 @@
380 }
381 }
382
383- if (displays.size() == 0)
384+ if (outputs.size() == 0)
385 return;
386
387- auto const display_area = displays.bounding_rectangle();
388+ auto const display_area = outputs.bounding_rectangle();
389
390 for (auto const& window : maximized_surfaces)
391 {
392
393=== modified file 'miral/basic_window_manager.h'
394--- miral/basic_window_manager.h 2017-07-28 08:54:30 +0000
395+++ miral/basic_window_manager.h 2017-07-28 13:57:06 +0000
396@@ -176,7 +176,7 @@
397
398 auto window_at(mir::geometry::Point cursor) const -> Window override;
399
400- auto active_display() -> mir::geometry::Rectangle const override;
401+ auto active_output() -> mir::geometry::Rectangle const override;
402
403 void raise_tree(Window const& root) override;
404 void start_drag_and_drop(WindowInfo& window_info, std::vector<uint8_t> const& handle) override;
405@@ -216,7 +216,7 @@
406 std::mutex mutex;
407 SessionInfoMap app_info;
408 SurfaceInfoMap window_info;
409- mir::geometry::Rectangles displays;
410+ mir::geometry::Rectangles outputs;
411 mir::geometry::Point cursor;
412 uint64_t last_input_event_timestamp{0};
413 #if MIR_SERVER_VERSION >= MIR_VERSION_NUMBER(0, 27, 0)
414
415=== modified file 'miral/symbols.map'
416--- miral/symbols.map 2017-07-26 10:44:19 +0000
417+++ miral/symbols.map 2017-07-28 13:57:06 +0000
418@@ -429,6 +429,7 @@
419 miral::WindowManagementPolicyAddendum3::?WindowManagementPolicyAddendum3*;
420 miral::WindowManagementPolicyAddendum3::WindowManagementPolicyAddendum3*;
421 miral::WindowManagementPolicyAddendum3::operator*;
422+ miral::WindowManagerTools::active_output*;
423 non-virtual?thunk?to?miral::WindowManagementPolicyAddendum3::?WindowManagementPolicyAddendum3*;
424 typeinfo?for?miral::WindowManagementPolicyAddendum3;
425 vtable?for?miral::WindowManagementPolicyAddendum3;
426
427=== modified file 'miral/window_management_trace.cpp'
428--- miral/window_management_trace.cpp 2017-03-21 17:55:31 +0000
429+++ miral/window_management_trace.cpp 2017-07-28 13:57:06 +0000
430@@ -448,10 +448,10 @@
431 }
432 MIRAL_TRACE_EXCEPTION
433
434-auto miral::WindowManagementTrace::active_display() -> mir::geometry::Rectangle const
435+auto miral::WindowManagementTrace::active_output() -> mir::geometry::Rectangle const
436 try {
437 log_input();
438- auto result = wrapped.active_display();
439+ auto result = wrapped.active_output();
440 std::stringstream out;
441 out << result;
442 mir::log_info("%s -> ", __func__, out.str().c_str());
443
444=== modified file 'miral/window_management_trace.h'
445--- miral/window_management_trace.h 2017-03-21 17:55:31 +0000
446+++ miral/window_management_trace.h 2017-07-28 13:57:06 +0000
447@@ -54,7 +54,7 @@
448 virtual auto active_window() const -> Window override;
449 virtual auto select_active_window(Window const& hint) -> Window override;
450 virtual auto window_at(mir::geometry::Point cursor) const -> Window override;
451- virtual auto active_display() -> mir::geometry::Rectangle const override;
452+ virtual auto active_output() -> mir::geometry::Rectangle const override;
453 virtual auto info_for_window_id(std::string const& id) const -> WindowInfo& override;
454 virtual auto id_for_window(Window const& window) const -> std::string override;
455 virtual void place_and_size_for_state(WindowSpecification& modifications, WindowInfo const& window_info) const override;
456
457=== modified file 'miral/window_manager_tools.cpp'
458--- miral/window_manager_tools.cpp 2017-03-21 17:55:31 +0000
459+++ miral/window_manager_tools.cpp 2017-07-28 13:57:06 +0000
460@@ -18,6 +18,7 @@
461
462 #include "miral/window_manager_tools.h"
463 #include "window_manager_tools_implementation.h"
464+#include "both_versions.h"
465
466 miral::WindowManagerTools::WindowManagerTools(WindowManagerToolsImplementation* tools) :
467 tools{tools}
468@@ -77,8 +78,11 @@
469 auto miral::WindowManagerTools::window_at(mir::geometry::Point cursor) const -> Window
470 { return tools->window_at(cursor); }
471
472-auto miral::WindowManagerTools::active_display() -> mir::geometry::Rectangle const
473-{ return tools->active_display(); }
474+MIRAL_FAKE_OLD_SYMBOL(
475+ _ZN5miral18WindowManagerTools14active_displayEv,
476+ _ZN5miral18WindowManagerTools13active_outputEv)
477+auto miral::WindowManagerTools::active_output() -> mir::geometry::Rectangle const
478+{ return tools->active_output(); }
479
480 void miral::WindowManagerTools::raise_tree(Window const& root)
481 { tools->raise_tree(root); }
482
483=== modified file 'miral/window_manager_tools_implementation.h'
484--- miral/window_manager_tools_implementation.h 2017-03-21 17:55:31 +0000
485+++ miral/window_manager_tools_implementation.h 2017-07-28 13:57:06 +0000
486@@ -65,7 +65,7 @@
487 virtual void focus_next_within_application() = 0;
488 virtual void focus_prev_within_application() = 0;
489 virtual auto window_at(mir::geometry::Point cursor) const -> Window = 0;
490- virtual auto active_display() -> mir::geometry::Rectangle const = 0;
491+ virtual auto active_output() -> mir::geometry::Rectangle const = 0;
492 virtual void raise_tree(Window const& root) = 0;
493 virtual void start_drag_and_drop(WindowInfo& window_info, std::vector<uint8_t> const& handle) = 0;
494 virtual void end_drag_and_drop() = 0;

Subscribers

People subscribed via source and target branches