19 #ifndef MIR_SHELL_ABSTRACT_SHELL_H_ 20 #define MIR_SHELL_ABSTRACT_SHELL_H_ 44 std::shared_ptr<InputTargeter>
const& input_targeter,
45 std::shared_ptr<SurfaceStack>
const& surface_stack,
46 std::shared_ptr<scene::SessionCoordinator>
const& session_coordinator,
47 std::shared_ptr<scene::PromptSessionManager>
const& prompt_session_manager,
48 std::shared_ptr<ShellReport>
const& report,
50 std::shared_ptr<input::Seat>
const& seat);
54 std::shared_ptr<scene::Session> open_session(
57 std::shared_ptr<frontend::EventSink>
const& sink)
override;
59 void close_session(std::shared_ptr<scene::Session>
const& session)
override;
62 std::shared_ptr<scene::Session>
const& session,
64 std::shared_ptr<frontend::EventSink>
const& sink)
override;
66 void modify_surface(std::shared_ptr<scene::Session>
const& session, std::shared_ptr<scene::Surface>
const& surface,
SurfaceSpecification const& modifications)
override;
68 void destroy_surface(std::shared_ptr<scene::Session>
const& session,
frontend::SurfaceId surface)
override;
70 int set_surface_attribute(
71 std::shared_ptr<scene::Session>
const& session,
72 std::shared_ptr<scene::Surface>
const& surface,
76 int get_surface_attribute(
77 std::shared_ptr<scene::Surface>
const& surface,
81 std::shared_ptr<scene::Session>
const& session,
82 std::shared_ptr<scene::Surface>
const& surface,
83 uint64_t timestamp)
override;
85 std::shared_ptr<scene::PromptSession> start_prompt_session_for(
86 std::shared_ptr<scene::Session>
const& session,
89 void add_prompt_provider_for(
90 std::shared_ptr<scene::PromptSession>
const& prompt_session,
91 std::shared_ptr<scene::Session>
const& session)
override;
93 void stop_prompt_session(std::shared_ptr<scene::PromptSession>
const& prompt_session)
override;
103 void focus_next_session()
override;
105 std::shared_ptr<scene::Session> focused_session()
const override;
109 std::shared_ptr<scene::Session>
const& focus_session,
110 std::shared_ptr<scene::Surface>
const& focus_surface)
override;
113 std::shared_ptr<scene::Surface> focused_surface()
const override;
115 auto surface_at(
geometry::Point cursor)
const -> std::shared_ptr<scene::Surface>
override;
117 void raise(
SurfaceSet const& surfaces)
override;
123 bool handle(
MirEvent const& event)
override;
125 void update_focused_surface_confined_region();
133 std::shared_ptr<input::Seat>
const seat;
136 std::shared_ptr<ShellReport>
const report;
138 std::mutex
mutable focus_mutex;
139 std::weak_ptr<scene::Surface> focus_surface;
140 std::weak_ptr<scene::Session> focus_session;
141 std::shared_ptr<scene::SurfaceObserver> focus_surface_observer;
143 void set_focus_to_locked(
144 std::unique_lock<std::mutex>
const& lock,
145 std::shared_ptr<scene::Session>
const& focus_session,
146 std::shared_ptr<scene::Surface>
const& focus_surface);
Definition: as_render_target.h:27
std::set< std::weak_ptr< scene::Surface >, std::owner_less< std::weak_ptr< scene::Surface >>> SurfaceSet
Definition: focus_controller.h:32
std::shared_ptr< input::Seat > const seat
Definition: abstract_shell.h:133
std::shared_ptr< scene::SessionCoordinator > const session_coordinator
Definition: abstract_shell.h:130
std::shared_ptr< InputTargeter > const input_targeter
Definition: abstract_shell.h:128
Definition: focus_controller.h:38
Definition: surface_creation_parameters.h:41
Definition: rectangle.h:33
std::shared_ptr< scene::PromptSessionManager > const prompt_session_manager
Definition: abstract_shell.h:131
char const * name
Definition: client_types.h:171
Definition: prompt_session_creation_parameters.h:29
Specification of surface properties requested by client.
Definition: surface_specification.h:57
std::shared_ptr< SurfaceStack > const surface_stack
Definition: abstract_shell.h:129
std::shared_ptr< WindowManager > const window_manager
Definition: abstract_shell.h:132
Minimal Shell implementation with none of the necessary window management logic.
Definition: abstract_shell.h:40
std::function< std::shared_ptr< WindowManager >(FocusController *focus_controller)> WindowManagerBuilder
WindowManagers are built while initializing an AbstractShell, so a builder functor is needed...
Definition: window_manager_builder.h:34