opuntiaOS - an operating system targeting x86 and ARMv7
at master 1.7 kB view raw
1/* 2 * Copyright (C) 2020-2022 The opuntiaOS Project Authors. 3 * + Contributed by Nikita Melekhin <nimelehin@gmail.com> 4 * 5 * Use of this source code is governed by a BSD-style license that can be 6 * found in the LICENSE file. 7 */ 8 9#include <libfoundation/EventLoop.h> 10#include <libui/App.h> 11#include <libui/MenuBar.h> 12 13namespace UI { 14 15void MenuBar::add_menu(const Menu& menu) 16{ 17 Menu new_menu = menu; 18 auto& connection = App::the().connection(); 19 auto resp_message = connection.send_sync_message<MenuBarCreateMenuMessageReply>(MenuBarCreateMenuMessage(connection.key(), m_host_window_id, new_menu.title())); 20 new_menu.set_menu_id(resp_message->menu_id()); 21 22 // TODO: Speed up sending only 1 message. 23 for (auto& item : new_menu.items()) { 24 auto resp_message = connection.send_sync_message<MenuBarCreateItemMessageReply>(MenuBarCreateItemMessage(connection.key(), host_window_id(), new_menu.menu_id(), item.m_id, item.title())); 25 } 26 27 m_menus.push_back(std::move(new_menu)); 28} 29 30void MenuBar::add_menu(Menu&& menu) 31{ 32 Menu new_menu = std::move(menu); 33 auto& connection = App::the().connection(); 34 auto resp_message = connection.send_sync_message<MenuBarCreateMenuMessageReply>(MenuBarCreateMenuMessage(connection.key(), m_host_window_id, new_menu.title())); 35 new_menu.set_menu_id(resp_message->menu_id()); 36 37 // TODO: Speed up sending only 1 message. 38 for (auto& item : new_menu.items()) { 39 auto resp_message = connection.send_sync_message<MenuBarCreateItemMessageReply>(MenuBarCreateItemMessage(connection.key(), host_window_id(), new_menu.menu_id(), item.m_id, item.title())); 40 } 41 42 m_menus.push_back(std::move(new_menu)); 43} 44 45} // namespace UI