1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 03:07:43 +00:00

WindowServer: Replace "Pin/Unpin Window" => "Always on Top"

This commit is contained in:
Andreas Kling 2021-11-13 12:18:14 +01:00
parent d21dc1f451
commit 68dc2e62fb
6 changed files with 30 additions and 33 deletions

View file

@ -25,7 +25,7 @@ void WindowStack::add(Window& window)
m_windows.append(window);
window.set_window_stack({}, this);
move_pinned_windows_to_front();
move_always_on_top_windows_to_front();
}
void WindowStack::add_to_back(Window& window)
@ -56,30 +56,30 @@ void WindowStack::move_to_front(Window& window)
m_windows.remove(window);
m_windows.append(window);
move_pinned_windows_to_front();
move_always_on_top_windows_to_front();
if (window.is_pinned()) {
if (window.is_always_on_top()) {
m_windows.remove(window);
m_windows.append(window);
window.invalidate();
}
}
void WindowStack::move_pinned_windows_to_front()
void WindowStack::move_always_on_top_windows_to_front()
{
Window::List pinned_list;
Window::List always_on_top_list;
for (auto iterator = m_windows.begin(); iterator != m_windows.end(); ++iterator) {
auto& window = *iterator;
if (window.is_pinned()) {
if (window.is_always_on_top()) {
m_windows.remove(window);
pinned_list.append(window);
always_on_top_list.append(window);
iterator = m_windows.begin();
}
}
while (!pinned_list.is_empty()) {
auto& window = *pinned_list.begin();
pinned_list.remove(window);
while (!always_on_top_list.is_empty()) {
auto& window = *always_on_top_list.begin();
always_on_top_list.remove(window);
m_windows.append(window);
window.invalidate();
}
@ -89,7 +89,7 @@ void WindowStack::move_all_windows(WindowStack& new_window_stack, Vector<Window*
{
VERIFY(this != &new_window_stack);
move_pinned_windows_to_front();
move_always_on_top_windows_to_front();
if (move_to == MoveAllWindowsTo::Front) {
while (auto* window = m_windows.take_first()) {