Mir
Public Member Functions | List of all members
miral::WindowManagerTools Class Reference

Window management functions for querying and updating MirAL's model. More...

#include <window_manager_tools.h>

Public Member Functions

 WindowManagerTools (WindowManagerToolsImplementation *tools)
 
 WindowManagerTools (WindowManagerTools const &)
 
WindowManagerToolsoperator= (WindowManagerTools const &)
 
 ~WindowManagerTools ()
 
void invoke_under_lock (std::function< void()> const &callback)
 Multi-thread support Allows threads that don't hold a lock on the model to acquire one and call the "Update Model" member functions. More...
 
Query & Update Model

These functions assume that the BasicWindowManager data structures can be accessed freely.

I.e. they should only be used by a thread that has called the WindowManagementPolicy methods (where any necessary locks are held) or via a invoke_under_lock() callback.

auto count_applications () const -> unsigned int
 count the applications More...
 
void for_each_application (std::function< void(ApplicationInfo &info)> const &functor)
 execute functor for each application More...
 
auto find_application (std::function< bool(ApplicationInfo const &info)> const &predicate) -> Application
 find an application meeting the predicate More...
 
auto info_for (std::weak_ptr< mir::scene::Session > const &session) const -> ApplicationInfo &
 retrieve metadata for an application More...
 
auto info_for (std::weak_ptr< mir::scene::Surface > const &surface) const -> WindowInfo &
 retrieve metadata for a window More...
 
auto info_for (Window const &window) const -> WindowInfo &
 retrieve metadata for a window More...
 
auto info_for_window_id (std::string const &id) const -> WindowInfo &
 retrieve metadata for a persistent surface id More...
 
auto id_for_window (Window const &window) const -> std::string
 retrieve the persistent surface id for a window More...
 
void ask_client_to_close (Window const &window)
 Send close request to the window. More...
 
void force_close (Window const &window)
 Close the window by force. More...
 
auto active_window () const -> Window
 retrieve the active window More...
 
auto select_active_window (Window const &hint) -> Window
 select a new active window based on the hint More...
 
void drag_active_window (mir::geometry::Displacement movement)
 move the active window More...
 
void drag_window (Window const &window, mir::geometry::Displacement movement)
 move the window More...
 
void focus_next_application ()
 make the next application active More...
 
void focus_prev_application ()
 make the previous application active More...
 
void focus_next_within_application ()
 make the next surface active within the active application More...
 
void focus_prev_within_application ()
 make the prev surface active within the active application More...
 
auto window_at (mir::geometry::Point cursor) const -> Window
 Find the topmost window at the cursor. More...
 
auto active_output () -> mir::geometry::Rectangle const
 Find the active output area. More...
 
void raise_tree (Window const &root)
 Raise window and all its children. More...
 
void start_drag_and_drop (WindowInfo &window_info, std::vector< uint8_t > const &handle)
 Start drag and drop. More...
 
void end_drag_and_drop ()
 End drag and drop. More...
 
void modify_window (WindowInfo &window_info, WindowSpecification const &modifications)
 Apply modifications to a window. More...
 
void modify_window (Window const &window, WindowSpecification const &modifications)
 Apply modifications to a window. More...
 
void place_and_size_for_state (WindowSpecification &modifications, WindowInfo const &window_info) const
 Set a default size and position to reflect state change. More...
 
auto create_workspace () -> std::shared_ptr< Workspace >
 Create a workspace. More...
 
void add_tree_to_workspace (Window const &window, std::shared_ptr< Workspace > const &workspace)
 Add the tree containing window to a workspace. More...
 
void remove_tree_from_workspace (Window const &window, std::shared_ptr< Workspace > const &workspace)
 Remove the tree containing window from a workspace. More...
 
void move_workspace_content_to_workspace (std::shared_ptr< Workspace > const &to_workspace, std::shared_ptr< Workspace > const &from_workspace)
 Moves all the content from one workspace to another. More...
 
void for_each_workspace_containing (Window const &window, std::function< void(std::shared_ptr< Workspace > const &workspace)> const &callback)
 invoke callback with each workspace containing window More...
 
void for_each_window_in_workspace (std::shared_ptr< Workspace > const &workspace, std::function< void(Window const &window)> const &callback)
 invoke callback with each window contained in workspace More...
 

Detailed Description

Window management functions for querying and updating MirAL's model.

Constructor & Destructor Documentation

◆ WindowManagerTools() [1/2]

miral::WindowManagerTools::WindowManagerTools ( WindowManagerToolsImplementation *  tools)
explicit

◆ WindowManagerTools() [2/2]

miral::WindowManagerTools::WindowManagerTools ( WindowManagerTools const &  )

◆ ~WindowManagerTools()

miral::WindowManagerTools::~WindowManagerTools ( )

Member Function Documentation

◆ active_output()

auto miral::WindowManagerTools::active_output ( ) -> mir::geometry::Rectangle const

Find the active output area.

◆ active_window()

auto miral::WindowManagerTools::active_window ( ) const -> Window

retrieve the active window

◆ add_tree_to_workspace()

void miral::WindowManagerTools::add_tree_to_workspace ( Window const &  window,
std::shared_ptr< Workspace > const &  workspace 
)

Add the tree containing window to a workspace.

Parameters
windowthe window
workspacethe workspace;

◆ ask_client_to_close()

void miral::WindowManagerTools::ask_client_to_close ( Window const &  window)

Send close request to the window.

◆ count_applications()

auto miral::WindowManagerTools::count_applications ( ) const -> unsigned int

count the applications

Returns
number of applications

◆ create_workspace()

auto miral::WindowManagerTools::create_workspace ( ) -> std::shared_ptr< Workspace >

Create a workspace.

Remarks
the tools hold only a weak_ptr<> to the workspace - there is no need for an explicit "destroy".
Returns
a shared_ptr owning the workspace

◆ drag_active_window()

void miral::WindowManagerTools::drag_active_window ( mir::geometry::Displacement  movement)

move the active window

◆ drag_window()

void miral::WindowManagerTools::drag_window ( Window const &  window,
mir::geometry::Displacement  movement 
)

move the window

◆ end_drag_and_drop()

void miral::WindowManagerTools::end_drag_and_drop ( )

End drag and drop.

◆ find_application()

auto miral::WindowManagerTools::find_application ( std::function< bool(ApplicationInfo const &info)> const &  predicate) -> Application

find an application meeting the predicate

Parameters
predicatethe predicate
Returns
the application

◆ focus_next_application()

void miral::WindowManagerTools::focus_next_application ( )

make the next application active

◆ focus_next_within_application()

void miral::WindowManagerTools::focus_next_within_application ( )

make the next surface active within the active application

◆ focus_prev_application()

void miral::WindowManagerTools::focus_prev_application ( )

make the previous application active

Remarks
Since MirAL 2.5

◆ focus_prev_within_application()

void miral::WindowManagerTools::focus_prev_within_application ( )

make the prev surface active within the active application

◆ for_each_application()

void miral::WindowManagerTools::for_each_application ( std::function< void(ApplicationInfo &info)> const &  functor)

execute functor for each application

Parameters
functorthe functor

◆ for_each_window_in_workspace()

void miral::WindowManagerTools::for_each_window_in_workspace ( std::shared_ptr< Workspace > const &  workspace,