19 #ifndef MIR_EXAMPLE_BASIC_WINDOW_MANAGER_H_ 20 #define MIR_EXAMPLE_BASIC_WINDOW_MANAGER_H_ 49 virtual auto find_session(std::function<
bool(SessionInfo
const& info)>
const& predicate)
50 -> std::shared_ptr<scene::Session> = 0;
52 virtual auto info_for(std::weak_ptr<scene::Session>
const& session)
const -> SessionInfo& = 0;
54 virtual auto info_for(std::weak_ptr<scene::Surface>
const& surface)
const -> SurfaceInfo& = 0;
63 std::shared_ptr<scene::Session>
const& focus,
64 std::shared_ptr<scene::Surface>
const& surface) = 0;
70 virtual void forget(std::weak_ptr<scene::Surface>
const& surface) = 0;
72 virtual void raise_tree(std::shared_ptr<scene::Surface>
const& root) = 0;
90 virtual auto handle_place_new_surface(
91 std::shared_ptr<scene::Session>
const& session,
95 virtual void handle_new_surface(std::shared_ptr<scene::Session>
const& session, std::shared_ptr<scene::Surface>
const& surface) = 0;
97 virtual void handle_modify_surface(
98 std::shared_ptr<scene::Session>
const& session,
99 std::shared_ptr<scene::Surface>
const& surface,
102 virtual void handle_delete_surface(std::shared_ptr<scene::Session>
const& session, std::weak_ptr<scene::Surface>
const& surface) = 0;
104 virtual int handle_set_state(std::shared_ptr<scene::Surface>
const& surface,
MirWindowState value) = 0;
106 virtual void generate_decorations_for(
107 std::shared_ptr<scene::Session>
const& session, std::shared_ptr<scene::Surface>
const& surface,
113 virtual bool handle_touch_event(
MirTouchEvent const* event) = 0;
117 virtual void handle_raise_surface(
118 std::shared_ptr<scene::Session>
const& session,
119 std::shared_ptr<scene::Surface>
const& surface) = 0;
135 std::unique_ptr<WindowManagementPolicy> policy);
141 void add_session(std::shared_ptr<scene::Session>
const& session)
override;
143 void remove_session(std::shared_ptr<scene::Session>
const& session)
override;
146 std::shared_ptr<scene::Session>
const& session,
152 std::shared_ptr<scene::Session>
const& session,
153 std::shared_ptr<scene::Surface>
const& surface,
157 std::shared_ptr<scene::Session>
const& session,
158 std::weak_ptr<scene::Surface>
const& surface)
override;
160 void forget(std::weak_ptr<scene::Surface>
const& surface)
override;
168 bool handle_touch_event(
MirTouchEvent const* event)
override;
172 void handle_raise_surface(
173 std::shared_ptr<scene::Session>
const& session,
174 std::shared_ptr<scene::Surface>
const& surface,
175 uint64_t timestamp)
override;
177 int set_surface_attribute(
178 std::shared_ptr<scene::Session>
const& ,
179 std::shared_ptr<scene::Surface>
const& surface,
183 auto find_session(std::function<
bool(SessionInfo
const& info)>
const& predicate)
184 -> std::shared_ptr<scene::Session>
override;
186 auto info_for(std::weak_ptr<scene::Session>
const& session)
const -> SessionInfo&
override;
188 auto info_for(std::weak_ptr<scene::Surface>
const& surface)
const -> SurfaceInfo&
override;
197 std::shared_ptr<scene::Session>
const& focus,
198 std::shared_ptr<scene::Surface>
const& surface)
override;
204 void raise_tree(std::shared_ptr<scene::Surface>
const& root)
override;
208 std::unique_ptr<WindowManagementPolicy>
const policy;
215 uint64_t last_input_event_timestamp{0};
225 template<
typename WMPolicy>
230 template <
typename... PolicyArgs>
233 PolicyArgs&&... policy_args) :
236 build_policy(
std::forward<PolicyArgs>(policy_args)...))
241 template <
typename... PolicyArgs>
242 auto build_policy(PolicyArgs&&... policy_args)
243 -> std::unique_ptr<WMPolicy>
245 return std::unique_ptr<WMPolicy>(
246 new WMPolicy(
this, std::forward<PolicyArgs>(policy_args)...));
Definition: as_render_target.h:27
std::map< std::weak_ptr< scene::Surface >, SurfaceInfo, std::owner_less< std::weak_ptr< scene::Surface > >> SurfaceInfoMap
Definition: server_example_basic_window_manager.h:46
interface to provide window management logic
Definition: window_manager.h:37
A collection of rectangles (with possible duplicates).
Definition: rectangles.h:34
std::map< std::weak_ptr< scene::Session >, SessionInfo, std::owner_less< std::weak_ptr< scene::Session > >> SessionInfoMap
Definition: server_example_basic_window_manager.h:47
WindowManagerBuilder(shell::FocusController *focus_controller, PolicyArgs &&... policy_args)
Definition: server_example_basic_window_manager.h:231
Definition: server_example_basic_window_manager.h:80
A policy based window manager. This exists to initialize BasicWindowManager and the WMPolicy (in an a...
Definition: server_example_basic_window_manager.h:226
Definition: focus_controller.h:38
std::set< std::weak_ptr< scene::Surface >, std::owner_less< std::weak_ptr< scene::Surface > >> SurfaceSet
Definition: focus_controller.h:32
typename WindowManagerTools::SessionInfoMap SessionInfoMap
Definition: server_example_basic_window_manager.h:83
typename WindowManagerTools::SurfaceInfoMap SurfaceInfoMap
Definition: server_example_basic_window_manager.h:84
Definition: surface_creation_parameters.h:41
Definition: rectangle.h:33
Definition: server_example_window_management_info.h:94
Specification of surface properties requested by client.
Definition: surface_specification.h:57
A policy based window manager. This takes care of the management of any meta implementation held for ...
Definition: server_example_basic_window_manager.h:129
Definition: server_example_window_management_info.h:33