WindowServer: Add WindowType::Desktop

This new window type can be used to implement a desktop file manager
for example. :^)
This commit is contained in:
Andreas Kling 2020-04-18 21:10:16 +02:00
parent 88908be350
commit 3d31f2e44b
Notes: sideshowbarker 2024-07-19 07:30:08 +09:00
4 changed files with 12 additions and 2 deletions

View file

@ -39,6 +39,7 @@ enum class WindowType {
Menubar,
MenuApplet,
Notification,
Desktop,
};
}

View file

@ -446,6 +446,10 @@ OwnPtr<Messages::WindowServer::CreateWindowResponse> ClientConnection::handle(co
window->set_title(message.title());
if (!message.fullscreen())
window->set_rect(message.rect());
if (window->type() == WindowType::Desktop) {
window->set_rect(Screen::the().rect());
window->recalculate_rect();
}
window->set_show_titlebar(message.show_titlebar());
window->set_opacity(message.opacity());
window->set_size_increment(message.size_increment());

View file

@ -309,6 +309,8 @@ IterationDecision WindowManager::for_each_visible_window_of_type_from_back_to_fr
template<typename Callback>
IterationDecision WindowManager::for_each_visible_window_from_back_to_front(Callback callback)
{
if (for_each_visible_window_of_type_from_back_to_front(WindowType::Desktop, callback) == IterationDecision::Break)
return IterationDecision::Break;
if (for_each_visible_window_of_type_from_back_to_front(WindowType::Normal, callback) == IterationDecision::Break)
return IterationDecision::Break;
if (for_each_visible_window_of_type_from_back_to_front(WindowType::Taskbar, callback) == IterationDecision::Break)
@ -356,13 +358,15 @@ IterationDecision WindowManager::for_each_visible_window_from_front_to_back(Call
return IterationDecision::Break;
if (for_each_visible_window_of_type_from_front_to_back(WindowType::Menubar, callback) == IterationDecision::Break)
return IterationDecision::Break;
if (for_each_visible_window_of_type_from_back_to_front(WindowType::Notification, callback) == IterationDecision::Break)
if (for_each_visible_window_of_type_from_front_to_back(WindowType::Notification, callback) == IterationDecision::Break)
return IterationDecision::Break;
if (for_each_visible_window_of_type_from_front_to_back(WindowType::Tooltip, callback) == IterationDecision::Break)
return IterationDecision::Break;
if (for_each_visible_window_of_type_from_front_to_back(WindowType::Taskbar, callback) == IterationDecision::Break)
return IterationDecision::Break;
return for_each_visible_window_of_type_from_front_to_back(WindowType::Normal, callback);
if (for_each_visible_window_of_type_from_front_to_back(WindowType::Normal, callback) == IterationDecision::Break)
return IterationDecision::Break;
return for_each_visible_window_of_type_from_front_to_back(WindowType::Desktop, callback);
}
template<typename Callback>

View file

@ -37,4 +37,5 @@ enum class WindowType {
Menubar,
MenuApplet,
Notification,
Desktop,
};