19 #ifndef MIR_SHELL_BASIC_WINDOW_MANAGER_H_ 20 #define MIR_SHELL_BASIC_WINDOW_MANAGER_H_ 43 virtual auto find_session(std::function<
bool(SessionInfo
const& info)>
const& predicate)
44 -> std::shared_ptr<scene::Session> = 0;
46 virtual auto info_for(std::weak_ptr<scene::Session>
const& session)
const -> SessionInfo& = 0;
48 virtual auto info_for(std::weak_ptr<scene::Surface>
const& surface)
const -> SurfaceInfo& = 0;
57 std::shared_ptr<scene::Session>
const& focus,
58 std::shared_ptr<scene::Surface>
const& surface) = 0;
64 virtual void forget(std::weak_ptr<scene::Surface>
const& surface) = 0;
66 virtual void raise_tree(std::shared_ptr<scene::Surface>
const& root) = 0;
84 virtual auto handle_place_new_surface(
85 std::shared_ptr<scene::Session>
const& session,
89 virtual void handle_new_surface(std::shared_ptr<scene::Session>
const& session, std::shared_ptr<scene::Surface>
const& surface) = 0;
91 virtual void handle_modify_surface(
92 std::shared_ptr<scene::Session>
const& session,
93 std::shared_ptr<scene::Surface>
const& surface,
96 virtual void handle_delete_surface(std::shared_ptr<scene::Session>
const& session, std::weak_ptr<scene::Surface>
const& surface) = 0;
98 virtual int handle_set_state(std::shared_ptr<scene::Surface>
const& surface,
MirSurfaceState value) = 0;
102 virtual bool handle_touch_event(
MirTouchEvent const* event) = 0;
106 virtual void handle_raise_surface(
107 std::shared_ptr<scene::Session>
const& session,
108 std::shared_ptr<scene::Surface>
const& surface) = 0;
124 std::unique_ptr<WindowManagementPolicy> policy);
130 void add_session(std::shared_ptr<scene::Session>
const& session)
override;
132 void remove_session(std::shared_ptr<scene::Session>
const& session)
override;
135 std::shared_ptr<scene::Session>
const& session,
141 std::shared_ptr<scene::Session>
const& session,
142 std::shared_ptr<scene::Surface>
const& surface,
146 std::shared_ptr<scene::Session>
const& session,
147 std::weak_ptr<scene::Surface>
const& surface)
override;
149 void forget(std::weak_ptr<scene::Surface>
const& surface)
override;
157 bool handle_touch_event(
MirTouchEvent const* event)
override;
161 void handle_raise_surface(
162 std::shared_ptr<scene::Session>
const& session,
163 std::shared_ptr<scene::Surface>
const& surface,
164 uint64_t timestamp)
override;
166 int set_surface_attribute(
167 std::shared_ptr<scene::Session>
const& ,
168 std::shared_ptr<scene::Surface>
const& surface,
172 auto find_session(std::function<
bool(SessionInfo
const& info)>
const& predicate)
173 -> std::shared_ptr<scene::Session>
override;
175 auto info_for(std::weak_ptr<scene::Session>
const& session)
const -> SessionInfo&
override;
177 auto info_for(std::weak_ptr<scene::Surface>
const& surface)
const -> SurfaceInfo&
override;
186 std::shared_ptr<scene::Session>
const& focus,
187 std::shared_ptr<scene::Surface>
const& surface)
override;
193 void raise_tree(std::shared_ptr<scene::Surface>
const& root)
override;
197 std::unique_ptr<WindowManagementPolicy>
const policy;
204 uint64_t last_input_event_timestamp{0};
214 template<
typename WMPolicy>
219 template <
typename... PolicyArgs>
222 PolicyArgs&&... policy_args) :
225 build_policy(
std::forward<PolicyArgs>(policy_args)...))
230 template <
typename... PolicyArgs>
231 auto build_policy(PolicyArgs&&... policy_args)
232 -> std::unique_ptr<WMPolicy>
234 return std::unique_ptr<WMPolicy>(
235 new WMPolicy(
this, std::forward<PolicyArgs>(policy_args)...));
All things Mir.
Definition: atomic_callback.h:25
typename WindowManagerTools::SessionInfoMap SessionInfoMap
Definition: basic_window_manager.h:77
interface to provide window management logic
Definition: window_manager.h:37
A collection of rectangles (with possible duplicates).
Definition: rectangles.h:34
Definition: keyboard_event.h:28
Definition: motion_event.h:143
Definition: focus_controller.h:38
std::map< std::weak_ptr< scene::Session >, SessionInfo, std::owner_less< std::weak_ptr< scene::Session >>> SessionInfoMap
Definition: basic_window_manager.h:41
Definition: basic_window_manager.h:74
Definition: window_management_info.h:33
A policy based window manager. This takes care of the management of any meta implementation held for ...
Definition: basic_window_manager.h:118
A policy based window manager. This exists to initialize BasicWindowManager and the WMPolicy (in an a...
Definition: basic_window_manager.h:215
Definition: window_management_info.h:93
std::map< std::weak_ptr< scene::Surface >, SurfaceInfo, std::owner_less< std::weak_ptr< scene::Surface >>> SurfaceInfoMap
Definition: basic_window_manager.h:40
typename WindowManagerTools::SurfaceInfoMap SurfaceInfoMap
Definition: basic_window_manager.h:78
Definition: surface_creation_parameters.h:41
Definition: rectangle.h:33
Specification of surface properties requested by client.
Definition: surface_specification.h:50
WindowManagerConstructor(shell::FocusController *focus_controller, PolicyArgs &&...policy_args)
Definition: basic_window_manager.h:220
Definition: motion_event.h:147