|
@@ -822,8 +822,6 @@ void WSWindowManager::handle_client_request(WSAPIClientRequest& request)
|
|
auto jt = m_menus.find(menu_id);
|
|
auto jt = m_menus.find(menu_id);
|
|
if (it == m_menubars.end() || jt == m_menus.end()) {
|
|
if (it == m_menubars.end() || jt == m_menus.end()) {
|
|
ASSERT_NOT_REACHED();
|
|
ASSERT_NOT_REACHED();
|
|
-
|
|
|
|
- return;
|
|
|
|
}
|
|
}
|
|
auto& menubar = *(*it).value;
|
|
auto& menubar = *(*it).value;
|
|
auto& menu = *(*jt).value;
|
|
auto& menu = *(*jt).value;
|
|
@@ -835,6 +833,37 @@ void WSWindowManager::handle_client_request(WSAPIClientRequest& request)
|
|
WSMessageLoop::the().post_message_to_client(request.client_id(), response);
|
|
WSMessageLoop::the().post_message_to_client(request.client_id(), response);
|
|
break;
|
|
break;
|
|
}
|
|
}
|
|
|
|
+ case WSMessage::APIAddMenuItemRequest: {
|
|
|
|
+ int menu_id = static_cast<WSAPIAddMenuItemRequest&>(request).menu_id();
|
|
|
|
+ unsigned identifier = static_cast<WSAPIAddMenuItemRequest&>(request).identifier();
|
|
|
|
+ String text = static_cast<WSAPIAddMenuItemRequest&>(request).text();
|
|
|
|
+ auto it = m_menus.find(menu_id);
|
|
|
|
+ if (it == m_menus.end()) {
|
|
|
|
+ ASSERT_NOT_REACHED();
|
|
|
|
+ }
|
|
|
|
+ auto& menu = *(*it).value;
|
|
|
|
+ menu.add_item(make<WSMenuItem>(identifier, move(text)));
|
|
|
|
+ GUI_ServerMessage response;
|
|
|
|
+ response.type = GUI_ServerMessage::Type::DidAddMenuItem;
|
|
|
|
+ response.menu.menu_id = menu_id;
|
|
|
|
+ response.menu.identifier = identifier;
|
|
|
|
+ WSMessageLoop::the().post_message_to_client(request.client_id(), response);
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ case WSMessage::APIAddMenuSeparatorRequest: {
|
|
|
|
+ int menu_id = static_cast<WSAPIAddMenuSeparatorRequest&>(request).menu_id();
|
|
|
|
+ auto it = m_menus.find(menu_id);
|
|
|
|
+ if (it == m_menus.end()) {
|
|
|
|
+ ASSERT_NOT_REACHED();
|
|
|
|
+ }
|
|
|
|
+ auto& menu = *(*it).value;
|
|
|
|
+ menu.add_item(make<WSMenuItem>(WSMenuItem::Separator));
|
|
|
|
+ GUI_ServerMessage response;
|
|
|
|
+ response.type = GUI_ServerMessage::Type::DidAddMenuSeparator;
|
|
|
|
+ response.menu.menu_id = menu_id;
|
|
|
|
+ WSMessageLoop::the().post_message_to_client(request.client_id(), response);
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
default:
|
|
default:
|
|
break;
|
|
break;
|
|
}
|
|
}
|
|
@@ -950,28 +979,6 @@ void WSWindowManager::close_menu(WSMenu& menu)
|
|
close_current_menu();
|
|
close_current_menu();
|
|
}
|
|
}
|
|
|
|
|
|
-int WSWindowManager::api$menu_add_separator(int menu_id)
|
|
|
|
-{
|
|
|
|
- LOCKER(m_lock);
|
|
|
|
- auto it = m_menus.find(menu_id);
|
|
|
|
- if (it == m_menus.end())
|
|
|
|
- return -EBADMENU;
|
|
|
|
- auto& menu = *(*it).value;
|
|
|
|
- menu.add_item(make<WSMenuItem>(WSMenuItem::Separator));
|
|
|
|
- return 0;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-int WSWindowManager::api$menu_add_item(int menu_id, unsigned identifier, String&& text)
|
|
|
|
-{
|
|
|
|
- LOCKER(m_lock);
|
|
|
|
- auto it = m_menus.find(menu_id);
|
|
|
|
- if (it == m_menus.end())
|
|
|
|
- return -EBADMENU;
|
|
|
|
- auto& menu = *(*it).value;
|
|
|
|
- menu.add_item(make<WSMenuItem>(identifier, move(text)));
|
|
|
|
- return 0;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
int WSWindowManager::active_client_id() const
|
|
int WSWindowManager::active_client_id() const
|
|
{
|
|
{
|
|
if (m_active_window)
|
|
if (m_active_window)
|