19 #ifndef MIR_SHELL_ABSTRACT_SHELL_H_ 20 #define MIR_SHELL_ABSTRACT_SHELL_H_ 43 std::shared_ptr<InputTargeter>
const& input_targeter,
44 std::shared_ptr<SurfaceStack>
const& surface_stack,
45 std::shared_ptr<scene::SessionCoordinator>
const& session_coordinator,
46 std::shared_ptr<scene::PromptSessionManager>
const& prompt_session_manager,
47 std::shared_ptr<ShellReport>
const& report,
49 std::shared_ptr<input::Seat>
const& seat);
53 std::shared_ptr<scene::Session> open_session(
56 std::shared_ptr<frontend::EventSink>
const& sink)
override;
58 void close_session(std::shared_ptr<scene::Session>
const& session)
override;
61 std::shared_ptr<scene::Session>
const& session,
63 std::shared_ptr<frontend::EventSink>
const& sink)
override;
65 void modify_surface(std::shared_ptr<scene::Session>
const& session, std::shared_ptr<scene::Surface>
const& surface,
SurfaceSpecification const& modifications)
override;
67 void destroy_surface(std::shared_ptr<scene::Session>
const& session,
frontend::SurfaceId surface)
override;
69 int set_surface_attribute(
70 std::shared_ptr<scene::Session>
const& session,
71 std::shared_ptr<scene::Surface>
const& surface,
75 int get_surface_attribute(
76 std::shared_ptr<scene::Surface>
const& surface,
80 std::shared_ptr<scene::Session>
const& session,
81 std::shared_ptr<scene::Surface>
const& surface,
82 uint64_t timestamp)
override;
84 std::shared_ptr<scene::PromptSession> start_prompt_session_for(
85 std::shared_ptr<scene::Session>
const& session,
88 void add_prompt_provider_for(
89 std::shared_ptr<scene::PromptSession>
const& prompt_session,
90 std::shared_ptr<scene::Session>
const& session)
override;
92 void stop_prompt_session(std::shared_ptr<scene::PromptSession>
const& prompt_session)
override;
102 void focus_next_session()
override;
104 std::shared_ptr<scene::Session> focused_session()
const override;
108 std::shared_ptr<scene::Session>
const& focus_session,
109 std::shared_ptr<scene::Surface>
const& focus_surface)
override;
112 std::shared_ptr<scene::Surface> focused_surface()
const override;
114 auto surface_at(
geometry::Point cursor)
const -> std::shared_ptr<scene::Surface>
override;
116 void raise(
SurfaceSet const& surfaces)
override;
122 bool handle(
MirEvent const& event)
override;
130 std::shared_ptr<input::Seat>
const seat;
133 std::shared_ptr<ShellReport>
const report;
135 std::mutex
mutable focus_mutex;
136 std::weak_ptr<scene::Surface> focus_surface;
137 std::weak_ptr<scene::Session> focus_session;
139 void set_focus_to_locked(
140 std::unique_lock<std::mutex>
const& lock,
141 std::shared_ptr<scene::Session>
const& focus_session,
142 std::shared_ptr<scene::Surface>
const& focus_surface);
All things Mir.
Definition: atomic_callback.h:25
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:130
std::shared_ptr< scene::SessionCoordinator > const session_coordinator
Definition: abstract_shell.h:127
std::shared_ptr< InputTargeter > const input_targeter
Definition: abstract_shell.h:125
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:128
Definition: prompt_session_creation_parameters.h:29
Specification of surface properties requested by client.
Definition: surface_specification.h:50
std::shared_ptr< SurfaceStack > const surface_stack
Definition: abstract_shell.h:126
std::shared_ptr< WindowManager > const window_manager
Definition: abstract_shell.h:129
Minimal Shell implementation with none of the necessary window management logic.
Definition: abstract_shell.h:39
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