1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-14 04:44:59 +00:00
serenity/Userland/Services/WindowServer/Menubar.cpp
thankyouverycool 0d4fd4e2a6 LibGfx+LibGUI+WindowServer+Apps+Demos: Replace ToolWindows
with the RenderAbove WindowMode. This mode will ensure child
windows always draw above their parents, even when focus is lost.
RenderAbove modals are automatically themed the same as the old
ToolWindows. Fixes ToolWindows rendering above ALL normal windows,
regardless of parent. We can't rely on WindowType to create these
sort of effects because of WindowManager's strict display hierarchy.
2022-08-25 13:28:50 +02:00

26 lines
922 B
C++

/*
* Copyright (c) 2018-2021, Andreas Kling <kling@serenityos.org>
* Copyright (c) 2021, sin-ack <sin-ack@protonmail.com>
*
* SPDX-License-Identifier: BSD-2-Clause
*/
#include "Menubar.h"
#include "WindowManager.h"
namespace WindowServer {
void Menubar::layout_menu(Menu& menu, Gfx::IntRect window_rect)
{
// FIXME: Maybe move this to the theming system?
static constexpr auto menubar_menu_margin = 14;
auto& wm = WindowManager::the();
auto menubar_rect = Gfx::WindowTheme::current().menubar_rect(Gfx::WindowTheme::WindowType::Normal, Gfx::WindowTheme::WindowMode::Other, window_rect, wm.palette(), 1);
int text_width = wm.font().width(Gfx::parse_ampersand_string(menu.name()));
menu.set_rect_in_window_menubar({ m_next_menu_location.x(), 0, text_width + menubar_menu_margin, menubar_rect.height() });
m_next_menu_location.translate_by(menu.rect_in_window_menubar().width(), 0);
}
}