1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 05:48:12 +00:00

WindowServer: Make MenuBar unaware of Process.

This commit is contained in:
Andreas Kling 2019-02-14 10:49:59 +01:00
parent 7723c06f27
commit 2733a788eb
4 changed files with 7 additions and 11 deletions

View file

@ -90,7 +90,7 @@ void WSClientConnection::on_message(WSMessage& message)
void WSClientConnection::handle_request(WSAPICreateMenubarRequest& request) void WSClientConnection::handle_request(WSAPICreateMenubarRequest& request)
{ {
int menubar_id = m_next_menubar_id++; int menubar_id = m_next_menubar_id++;
auto menubar = make<WSMenuBar>(menubar_id, *WSMessageLoop::process_from_client_id(request.client_id())); auto menubar = make<WSMenuBar>(request.client_id(), menubar_id);
m_menubars.set(menubar_id, move(menubar)); m_menubars.set(menubar_id, move(menubar));
GUI_ServerMessage response; GUI_ServerMessage response;
response.type = GUI_ServerMessage::Type::DidCreateMenubar; response.type = GUI_ServerMessage::Type::DidCreateMenubar;

View file

@ -1,11 +1,10 @@
#include "WSMenuBar.h" #include "WSMenuBar.h"
#include "WSMenu.h" #include "WSMenu.h"
#include "WSMenuItem.h" #include "WSMenuItem.h"
#include <Kernel/Process.h>
WSMenuBar::WSMenuBar(int menubar_id, Process& process) WSMenuBar::WSMenuBar(int client_id, int menubar_id)
: m_menubar_id(menubar_id) : m_client_id(client_id)
, m_process(process.make_weak_ptr()) , m_menubar_id(menubar_id)
{ {
} }

View file

@ -5,15 +5,13 @@
#include <AK/Weakable.h> #include <AK/Weakable.h>
#include <AK/WeakPtr.h> #include <AK/WeakPtr.h>
class Process;
class WSMenuBar : public Weakable<WSMenuBar> { class WSMenuBar : public Weakable<WSMenuBar> {
public: public:
WSMenuBar(int menubar_id, Process&); WSMenuBar(int client_id, int menubar_id);
~WSMenuBar(); ~WSMenuBar();
int client_id() const { return m_client_id; }
int menubar_id() const { return m_menubar_id; } int menubar_id() const { return m_menubar_id; }
const Process* process() const { return m_process.ptr(); }
void add_menu(WSMenu* menu) { m_menus.append(menu); } void add_menu(WSMenu* menu) { m_menus.append(menu); }
template<typename Callback> template<typename Callback>
@ -26,7 +24,7 @@ public:
} }
private: private:
int m_client_id { 0 };
int m_menubar_id { 0 }; int m_menubar_id { 0 };
WeakPtr<Process> m_process;
Vector<WSMenu*> m_menus; Vector<WSMenu*> m_menus;
}; };

View file

@ -65,7 +65,6 @@ public:
int api$menu_add_separator(int menu_id); int api$menu_add_separator(int menu_id);
int api$menu_add_item(int menu_id, unsigned identifier, String&& text); int api$menu_add_item(int menu_id, unsigned identifier, String&& text);
void destroy_all_menus(Process&);
private: private:
WSWindowManager(); WSWindowManager();