Mir
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
mir::shell::BasicWindowManager< WindowManagementPolicy, SessionInfo, SurfaceInfo > Class Template Reference

A policy based window manager. This takes care of the management of any meta implementation held for the sessions and surfaces. More...

#include <basic_window_manager.h>

Inheritance diagram for mir::shell::BasicWindowManager< WindowManagementPolicy, SessionInfo, SurfaceInfo >:
[legend]

Public Member Functions

template<typename... PolicyArgs>
 BasicWindowManager (FocusController *focus_controller, PolicyArgs &&...policy_args)
 
- Public Member Functions inherited from mir::shell::WindowManager
virtual ~WindowManager ()=default
 
 WindowManager ()=default
 
 WindowManager (WindowManager const &)=delete
 
WindowManageroperator= (WindowManager const &)=delete
 

Protected Member Functions

void add_session (std::shared_ptr< scene::Session > const &session) override
 
void remove_session (std::shared_ptr< scene::Session > const &session) override
 
frontend::SurfaceId add_surface (std::shared_ptr< scene::Session > const &session, scene::SurfaceCreationParameters const &params, std::function< frontend::SurfaceId(std::shared_ptr< scene::Session > const &session, scene::SurfaceCreationParameters const &params)> const &build) override
 
void modify_surface (std::shared_ptr< scene::Session > const &session, std::shared_ptr< scene::Surface > const &surface, shell::SurfaceSpecification const &modifications) override
 
void remove_surface (std::shared_ptr< scene::Session > const &session, std::weak_ptr< scene::Surface > const &surface) override
 
void add_display (geometry::Rectangle const &area) override
 
void remove_display (geometry::Rectangle const &area) override
 
bool handle_keyboard_event (MirKeyboardEvent const *event) override
 
bool handle_touch_event (MirTouchEvent const *event) override
 
bool handle_pointer_event (MirPointerEvent const *event) override
 
int set_surface_attribute (std::shared_ptr< scene::Session > const &, std::shared_ptr< scene::Surface > const &surface, MirSurfaceAttrib attrib, int value) override
 
auto find_session (std::function< bool(SessionInfo const &info)> const &predicate) -> std::shared_ptr< scene::Session > override
 
auto info_for (std::weak_ptr< scene::Session > const &session) const -> SessionInfo &override
 
auto info_for (std::weak_ptr< scene::Surface > const &surface) const -> SurfaceInfo &override
 
auto focused_session () const -> std::shared_ptr< scene::Session > override
 
auto focused_surface () const -> std::shared_ptr< scene::Surface > override
 
void focus_next_session () override
 
void set_focus_to (std::shared_ptr< scene::Session > const &focus, std::shared_ptr< scene::Surface > const &surface) override
 
auto surface_at (geometry::Point cursor) const -> std::shared_ptr< scene::Surface > override
 
void raise (SurfaceSet const &surfaces) override
 
auto active_display () -> geometry::Rectangle const override
 

Protected Attributes

FocusController *const focus_controller
 
WindowManagementPolicy policy
 
std::mutex mutex
 
SessionTo< SessionInfo >::type session_info
 
SurfaceTo< SurfaceInfo >::type surface_info
 
geometry::Rectangles displays
 
geometry::Point cursor
 

Detailed Description

template<typename WindowManagementPolicy, typename SessionInfo, typename SurfaceInfo>
class mir::shell::BasicWindowManager< WindowManagementPolicy, SessionInfo, SurfaceInfo >

A policy based window manager. This takes care of the management of any meta implementation held for the sessions and surfaces.

Template Parameters
WindowManagementPolicythe constructor must take a pointer to BasicWindowManagerTools<> as its first parameter. (Any additional parameters can be forwarded by BasicWindowManager::BasicWindowManager.) In addition WindowManagementPolicy must implement the following methods:
  • void handle_session_info_updated(SessionInfoMap& session_info, Rectangles const& displays);
  • void handle_displays_updated(SessionInfoMap& session_info, Rectangles const& displays);
  • auto handle_place_new_surface(std::shared_ptr<ms::Session> const& session, ms::SurfaceCreationParameters const& request_parameters) -> ms::SurfaceCreationParameters;
  • void handle_new_surface(std::shared_ptr<ms::Session> const& session, std::shared_ptr<ms::Surface> const& surface);
  • void handle_delete_surface(std::shared_ptr<ms::Session> const& /*session*/, std::weak_ptr<ms::Surface> const& /*surface*/);
  • int handle_set_state(std::shared_ptr<ms::Surface> const& surface, MirSurfaceState value);
  • bool handle_keyboard_event(MirKeyboardEvent const* event);
  • bool handle_touch_event(MirTouchEvent const* event);
  • bool handle_pointer_event(MirPointerEvent const* event);
SessionInfomust be default constructable.
SurfaceInfomust be constructable from (std::shared_ptr<ms::Session>, std::shared_ptr<ms::Surface>, ms::SurfaceCreationParameters const& params)

Constructor & Destructor Documentation

template<typename WindowManagementPolicy , typename SessionInfo , typename SurfaceInfo >
template<typename... PolicyArgs>
mir::shell::BasicWindowManager< WindowManagementPolicy, SessionInfo, SurfaceInfo >::BasicWindowManager ( FocusController focus_controller,
PolicyArgs &&...  policy_args 
)
inline

Member Function Documentation

template<typename WindowManagementPolicy , typename SessionInfo , typename SurfaceInfo >
auto mir::shell::BasicWindowManager< WindowManagementPolicy, SessionInfo, SurfaceInfo >::active_display ( ) -> geometry::Rectangle const
inlineoverrideprotectedvirtual
template<typename WindowManagementPolicy , typename SessionInfo , typename SurfaceInfo >
void mir::shell::BasicWindowManager< WindowManagementPolicy, SessionInfo, SurfaceInfo >::add_display ( geometry::Rectangle const &  area)
inlineoverrideprotectedvirtual
template<typename WindowManagementPolicy , typename SessionInfo , typename SurfaceInfo >
void mir::shell::BasicWindowManager< WindowManagementPolicy, SessionInfo, SurfaceInfo >::add_session ( std::shared_ptr< scene::Session > const &  session)
inlineoverrideprotectedvirtual
template<typename WindowManagementPolicy , typename SessionInfo , typename SurfaceInfo >
frontend::SurfaceId mir::shell::BasicWindowManager< WindowManagementPolicy, SessionInfo, SurfaceInfo >::add_surface ( std::shared_ptr< scene::Session > const &  session,
scene::SurfaceCreationParameters const &  params,
std::function< frontend::SurfaceId(std::shared_ptr< scene::Session > const &session, scene::SurfaceCreationParameters const &params)> const &  build 
)
inlineoverrideprotectedvirtual
template<typename WindowManagementPolicy , typename SessionInfo , typename SurfaceInfo >
auto mir::shell::BasicWindowManager< WindowManagementPolicy, SessionInfo, SurfaceInfo >::find_session ( std::function< bool(SessionInfo const &info)> const &  predicate) -> std::shared_ptr<scene::Session>
inlineoverrideprotectedvirtual
template<typename WindowManagementPolicy , typename SessionInfo , typename SurfaceInfo >
void mir::shell::BasicWindowManager< WindowManagementPolicy, SessionInfo, SurfaceInfo >::focus_next_session ( )
inlineoverrideprotectedvirtual
template<typename WindowManagementPolicy , typename SessionInfo , typename SurfaceInfo >
auto mir::shell::BasicWindowManager< WindowManagementPolicy, SessionInfo, SurfaceInfo >::focused_session ( ) const -> std::shared_ptr<scene::Session>
inlineoverrideprotectedvirtual
template<typename WindowManagementPolicy , typename SessionInfo , typename SurfaceInfo >
auto mir::shell::BasicWindowManager< WindowManagementPolicy, SessionInfo, SurfaceInfo >::focused_surface ( ) const -> std::shared_ptr<scene::Surface>
inlineoverrideprotectedvirtual
template<typename WindowManagementPolicy , typename SessionInfo , typename SurfaceInfo >
bool mir::shell::BasicWindowManager< WindowManagementPolicy, SessionInfo, SurfaceInfo >::handle_keyboard_event ( MirKeyboardEvent const *  event)
inlineoverrideprotectedvirtual
template<typename WindowManagementPolicy , typename SessionInfo , typename SurfaceInfo >
bool mir::shell::BasicWindowManager< WindowManagementPolicy, SessionInfo, SurfaceInfo >::handle_pointer_event ( MirPointerEvent const *  event)
inlineoverrideprotectedvirtual
template<typename WindowManagementPolicy , typename SessionInfo , typename SurfaceInfo >
bool mir::shell::BasicWindowManager< WindowManagementPolicy, SessionInfo, SurfaceInfo >::handle_touch_event ( MirTouchEvent const *  event)
inlineoverrideprotectedvirtual
template<typename WindowManagementPolicy , typename SessionInfo , typename SurfaceInfo >
auto mir::shell::BasicWindowManager< WindowManagementPolicy, SessionInfo, SurfaceInfo >::info_for ( std::weak_ptr< scene::Session > const &  session) const -> SessionInfo&
inlineoverrideprotectedvirtual
template<typename WindowManagementPolicy , typename SessionInfo , typename SurfaceInfo >
auto mir::shell::BasicWindowManager< WindowManagementPolicy, SessionInfo, SurfaceInfo >::info_for ( std::weak_ptr< scene::Surface > const &  surface) const -> SurfaceInfo&
inlineoverrideprotectedvirtual
template<typename WindowManagementPolicy , typename SessionInfo , typename SurfaceInfo >
void mir::shell::BasicWindowManager< WindowManagementPolicy, SessionInfo, SurfaceInfo >::modify_surface ( std::shared_ptr< scene::Session > const &  session,
std::shared_ptr< scene::Surface > const &  surface,
shell::SurfaceSpecification const &  modifications 
)
inlineoverrideprotectedvirtual
template<typename WindowManagementPolicy , typename SessionInfo , typename SurfaceInfo >
void mir::shell::BasicWindowManager< WindowManagementPolicy, SessionInfo, SurfaceInfo >::raise ( SurfaceSet const &  surfaces)
inlineoverrideprotectedvirtual
template<typename WindowManagementPolicy , typename SessionInfo , typename SurfaceInfo >
void mir::shell::BasicWindowManager< WindowManagementPolicy, SessionInfo, SurfaceInfo >::remove_display ( geometry::Rectangle const &  area)
inlineoverrideprotectedvirtual
template<typename WindowManagementPolicy , typename SessionInfo , typename SurfaceInfo >
void mir::shell::BasicWindowManager< WindowManagementPolicy, SessionInfo, SurfaceInfo >::remove_session ( std::shared_ptr< scene::Session > const &  session)
inlineoverrideprotectedvirtual
template<typename WindowManagementPolicy , typename SessionInfo , typename SurfaceInfo >
void mir::shell::BasicWindowManager< WindowManagementPolicy, SessionInfo, SurfaceInfo >::remove_surface ( std::shared_ptr< scene::Session > const &  session,
std::weak_ptr< scene::Surface > const &  surface 
)
inlineoverrideprotectedvirtual
template<typename WindowManagementPolicy , typename SessionInfo , typename SurfaceInfo >
void mir::shell::BasicWindowManager< WindowManagementPolicy, SessionInfo, SurfaceInfo >::set_focus_to ( std::shared_ptr< scene::Session > const &  focus,
std::shared_ptr< scene::Surface > const &  surface 
)
inlineoverrideprotectedvirtual
template<typename WindowManagementPolicy , typename SessionInfo , typename SurfaceInfo >
int mir::shell::BasicWindowManager< WindowManagementPolicy, SessionInfo, SurfaceInfo >::set_surface_attribute ( std::shared_ptr< scene::Session > const &  ,
std::shared_ptr< scene::Surface > const &  surface,
MirSurfaceAttrib  attrib,
int  value 
)
inlineoverrideprotectedvirtual
template<typename WindowManagementPolicy , typename SessionInfo , typename SurfaceInfo >
auto mir::shell::BasicWindowManager< WindowManagementPolicy, SessionInfo, SurfaceInfo >::surface_at ( geometry::Point  cursor) const -> std::shared_ptr<scene::Surface>
inlineoverrideprotectedvirtual

Member Data Documentation

template<typename WindowManagementPolicy , typename SessionInfo , typename SurfaceInfo >
geometry::Point mir::shell::BasicWindowManager< WindowManagementPolicy, SessionInfo, SurfaceInfo >::cursor
protected
template<typename WindowManagementPolicy , typename SessionInfo , typename SurfaceInfo >
geometry::Rectangles mir::shell::BasicWindowManager< WindowManagementPolicy, SessionInfo, SurfaceInfo >::displays
protected
template<typename WindowManagementPolicy , typename SessionInfo , typename SurfaceInfo >
FocusController* const mir::shell::BasicWindowManager< WindowManagementPolicy, SessionInfo, SurfaceInfo >::focus_controller
protected
template<typename WindowManagementPolicy , typename SessionInfo , typename SurfaceInfo >
std::mutex mir::shell::BasicWindowManager< WindowManagementPolicy, SessionInfo, SurfaceInfo >::mutex
protected
template<typename WindowManagementPolicy , typename SessionInfo , typename SurfaceInfo >
WindowManagementPolicy mir::shell::BasicWindowManager< WindowManagementPolicy, SessionInfo, SurfaceInfo >::policy
protected
template<typename WindowManagementPolicy , typename SessionInfo , typename SurfaceInfo >
SessionTo<SessionInfo>::type mir::shell::BasicWindowManager< WindowManagementPolicy, SessionInfo, SurfaceInfo >::session_info
protected
template<typename WindowManagementPolicy , typename SessionInfo , typename SurfaceInfo >
SurfaceTo<SurfaceInfo>::type mir::shell::BasicWindowManager< WindowManagementPolicy, SessionInfo, SurfaceInfo >::surface_info
protected

The documentation for this class was generated from the following file:

Copyright © 2012-2015 Canonical Ltd.
Generated on Thu Oct 8 16:20:16 UTC 2015