19 #ifndef MIR_EXAMPLE_CANONICAL_WINDOW_MANAGER_H_
20 #define MIR_EXAMPLE_CANONICAL_WINDOW_MANAGER_H_
33 namespace shell {
class DisplayLayout; }
44 std::shared_ptr<scene::Session>
const&
session,
45 std::shared_ptr<scene::Surface>
const& surface,
56 std::shared_ptr<scene::Surface>
const& surface,
59 const bool left_resize,
60 const bool top_resize,
67 std::weak_ptr<scene::Surface>
parent;
68 std::vector<std::weak_ptr<scene::Surface>>
children;
81 void init_titlebar(std::shared_ptr<scene::Surface>
const& surface);
88 std::shared_ptr<PaintingImpl> painting_impl;
108 std::shared_ptr<shell::DisplayLayout>
const& display_layout);
119 std::shared_ptr<scene::Session>
const& session,
123 void handle_new_surface(std::shared_ptr<scene::Session>
const& session, std::shared_ptr<scene::Surface>
const& surface);
126 std::shared_ptr<scene::Session>
const& session,
127 std::shared_ptr<scene::Surface>
const& surface,
130 void handle_delete_surface(std::shared_ptr<scene::Session>
const& session, std::weak_ptr<scene::Surface>
const& surface);
143 std::shared_ptr<scene::Session>
const& session,
144 std::shared_ptr<scene::Surface>
const& surface,
149 static const int modifier_mask =
160 void select_active_surface(std::shared_ptr<scene::Surface>
const& surface);
161 auto active_surface() const ->
std::shared_ptr<scene::Surface>;
163 bool resize(
std::shared_ptr<scene::Surface> const& surface, geometry::Point cursor, geometry::Point old_cursor, geometry::Rectangle bounds);
164 bool drag(
std::shared_ptr<scene::Surface> surface, geometry::Point to, geometry::Point from, geometry::Rectangle bounds);
165 void move_tree(
std::shared_ptr<scene::Surface> const& root, geometry::Displacement movement) const;
166 void raise_tree(
std::shared_ptr<scene::Surface> const& root) const;
168 std::shared_ptr<
mir::scene::Surface> const& surface,
169 std::shared_ptr<
mir::scene::Surface> const& titlebar,
170 geometry::Point const& new_pos,
171 geometry::Size const& new_size) const;
174 std::shared_ptr<shell::DisplayLayout> const display_layout;
176 geometry::Rectangle display_area;
177 geometry::Point old_cursor{};
178 std::weak_ptr<scene::Surface> active_surface_;
void click(geometry::Point cursor)
Definition: server_example_canonical_window_manager.cpp:206
All things Mir.
Definition: atomic_callback.h:25
std::vector< std::weak_ptr< scene::Surface > > children
Definition: server_example_canonical_window_manager.h:68
CanonicalWindowManagerPolicyCopy(Tools *const tools, std::shared_ptr< shell::DisplayLayout > const &display_layout)
Definition: server_example_canonical_window_manager.cpp:198
Definition: server_example_canonical_window_manager.h:99
Definition: server_example_canonical_window_manager.h:36
CanonicalSurfaceInfoCopy(std::shared_ptr< scene::Session > const &session, std::shared_ptr< scene::Surface > const &surface, scene::SurfaceCreationParameters const ¶ms)
Definition: server_example_canonical_window_manager.cpp:73
void handle_displays_updated(CanonicalSessionInfoMap &session_info, geometry::Rectangles const &displays)
Definition: server_example_canonical_window_manager.cpp:218
bool handle_keyboard_event(MirKeyboardEvent const *event)
Definition: server_example_canonical_window_manager.cpp:720
void paint_titlebar(int intensity)
Definition: server_example_canonical_window_manager.cpp:406
void handle_modify_surface(std::shared_ptr< scene::Session > const &session, std::shared_ptr< scene::Surface > const &surface, shell::SurfaceSpecification const &modifications)
Definition: server_example_canonical_window_manager.cpp:477
std::map< std::weak_ptr< scene::Surface >, Info, std::owner_less< std::weak_ptr< scene::Surface >>> type
Definition: server_example_basic_window_manager.h:44
void init_titlebar(std::shared_ptr< scene::Surface > const &surface)
Definition: server_example_canonical_window_manager.cpp:401
void drag(geometry::Point cursor)
Definition: server_example_canonical_window_manager.cpp:713
A collection of rectangles (with possible duplicates).
Definition: rectangles.h:34
mir::optional_value< shell::SurfaceAspectRatio > min_aspect
Definition: server_example_canonical_window_manager.h:78
void resize(geometry::Point cursor)
Definition: server_example_canonical_window_manager.cpp:223
auto handle_place_new_surface(std::shared_ptr< scene::Session > const &session, scene::SurfaceCreationParameters const &request_parameters) -> scene::SurfaceCreationParameters
Definition: server_example_canonical_window_manager.cpp:230
bool must_not_have_parent() const
Definition: server_example_canonical_window_manager.cpp:171
geometry::Width min_width
Definition: server_example_canonical_window_manager.h:72
std::map< std::weak_ptr< scene::Session >, Info, std::owner_less< std::weak_ptr< scene::Session >>> type
Definition: server_example_basic_window_manager.h:50
void handle_session_info_updated(CanonicalSessionInfoMap &session_info, geometry::Rectangles const &displays)
Definition: server_example_canonical_window_manager.cpp:214
bool handle_pointer_event(MirPointerEvent const *event)
Definition: server_example_canonical_window_manager.cpp:837
void constrain_resize(std::shared_ptr< scene::Surface > const &surface, geometry::Point &requested_pos, geometry::Size &requested_size, const bool left_resize, const bool top_resize, geometry::Rectangle const &bounds) const
Definition: server_example_canonical_window_manager.cpp:1004
mir::optional_value< geometry::DeltaY > height_inc
Definition: server_example_canonical_window_manager.h:77
typename SessionTo< CanonicalSessionInfoCopy >::type CanonicalSessionInfoMap
Definition: server_example_canonical_window_manager.h:103
bool can_be_active() const
Definition: server_example_canonical_window_manager.cpp:93
geometry::Height max_height
Definition: server_example_canonical_window_manager.h:75
bool is_visible() const
Definition: server_example_canonical_window_manager.cpp:184
bool can_morph_to(MirSurfaceType new_type) const
Definition: server_example_canonical_window_manager.cpp:129
std::weak_ptr< scene::Surface > parent
Definition: server_example_canonical_window_manager.h:67
int handle_set_state(std::shared_ptr< scene::Surface > const &surface, MirSurfaceState value)
Definition: server_example_canonical_window_manager.cpp:612
void generate_decorations_for(std::shared_ptr< scene::Session > const &session, std::shared_ptr< scene::Surface > const &surface, CanonicalSurfaceInfoMap &surface_map, std::function< frontend::SurfaceId(std::shared_ptr< scene::Session > const &session, scene::SurfaceCreationParameters const ¶ms)> const &build)
Definition: server_example_canonical_window_manager.cpp:421
Definition: server_example_canonical_window_manager.h:41
std::weak_ptr< scene::Session > session
Definition: server_example_canonical_window_manager.h:66
frontend::SurfaceId titlebar_id
Definition: server_example_canonical_window_manager.h:70
typename SurfaceTo< CanonicalSurfaceInfoCopy >::type CanonicalSurfaceInfoMap
Definition: server_example_canonical_window_manager.h:104
bool is_titlebar
Definition: server_example_canonical_window_manager.h:71
MirSurfaceType type
Definition: server_example_canonical_window_manager.h:63
int surfaces
Definition: server_example_canonical_window_manager.h:38
mir::optional_value< shell::SurfaceAspectRatio > max_aspect
Definition: server_example_canonical_window_manager.h:79
mir::optional_value< geometry::DeltaX > width_inc
Definition: server_example_canonical_window_manager.h:76
Definition: surface_creation_parameters.h:42
geometry::Height min_height
Definition: server_example_canonical_window_manager.h:73
Definition: rectangle.h:33
geometry::Width max_width
Definition: server_example_canonical_window_manager.h:74
void handle_delete_surface(std::shared_ptr< scene::Session > const &session, std::weak_ptr< scene::Surface > const &surface)
Definition: server_example_canonical_window_manager.cpp:580
Specification of surface properties requested by client.
Definition: surface_specification.h:50
void handle_new_surface(std::shared_ptr< scene::Session > const &session, std::shared_ptr< scene::Surface > const &surface)
Definition: server_example_canonical_window_manager.cpp:454
bool must_have_parent() const
Definition: server_example_canonical_window_manager.cpp:114
geometry::Rectangle restore_rect
Definition: server_example_canonical_window_manager.h:65
std::shared_ptr< scene::Surface > titlebar
Definition: server_example_canonical_window_manager.h:69
bool handle_touch_event(MirTouchEvent const *event)
Definition: server_example_canonical_window_manager.cpp:794
MirSurfaceState state
Definition: server_example_canonical_window_manager.h:64