WindowServer: Start implementing a menu system.

I'm going with a global top-of-the-screen menu instead of per-window menus.
The basic idea is that menus will live in the WindowServer and clients can
create menus via WindowServer requests.
This commit is contained in:
Andreas Kling 2019-02-11 09:47:10 +01:00
commit 443b043b49
Notes: sideshowbarker 2024-07-19 15:47:44 +09:00
14 changed files with 487 additions and 6 deletions

24
WindowServer/WSMenuBar.h Normal file
View file

@ -0,0 +1,24 @@
#pragma once
#include "WSMenu.h"
#include <AK/Vector.h>
class WSMenuBar {
public:
WSMenuBar();
~WSMenuBar();
void add_menu(OwnPtr<WSMenu>&& menu) { m_menus.append(move(menu)); }
template<typename Callback>
void for_each_menu(Callback callback)
{
for (auto& menu : m_menus) {
if (!callback(*menu))
return;
}
}
private:
Vector<OwnPtr<WSMenu>> m_menus;
};