1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-24 22:17:42 +00:00

Taskbar: More bringup work. We now see a basic window list.

This commit is contained in:
Andreas Kling 2019-04-04 01:44:35 +02:00
parent ea801a99dc
commit 96104b5524
20 changed files with 339 additions and 12 deletions

View file

@ -28,6 +28,9 @@ WSWindow::WSWindow(WSClientConnection& client, WSWindowType window_type, int win
, m_window_id(window_id)
, m_icon(default_window_icon())
{
// FIXME: This should not be hard-coded here.
if (m_type == WSWindowType::Taskbar)
m_listens_to_wm_events = true;
WSWindowManager::the().add_window(*this);
}
@ -138,6 +141,36 @@ void WSWindow::on_message(const WSMessage& message)
server_message.window.old_rect = static_cast<const WSResizeEvent&>(message).old_rect();
server_message.window.rect = static_cast<const WSResizeEvent&>(message).rect();
break;
case WSMessage::WM_WindowAdded: {
auto& added_event = static_cast<const WSWMWindowAddedEvent&>(message);
server_message.type = WSAPI_ServerMessage::Type::WM_WindowAdded;
server_message.wm.client_id = added_event.client_id();
server_message.wm.window_id = added_event.window_id();
ASSERT(added_event.title().length() < sizeof(server_message.text));
memcpy(server_message.text, added_event.title().characters(), added_event.title().length());
server_message.text_length = added_event.title().length();
server_message.wm.rect = added_event.rect();
break;
}
case WSMessage::WM_WindowRemoved: {
auto& removed_event = static_cast<const WSWMWindowRemovedEvent&>(message);
server_message.type = WSAPI_ServerMessage::Type::WM_WindowRemoved;
server_message.wm.client_id = removed_event.client_id();
server_message.wm.window_id = removed_event.window_id();
break;
}
case WSMessage::WM_WindowStateChanged: {
auto& changed_event = static_cast<const WSWMWindowStateChangedEvent&>(message);
server_message.type = WSAPI_ServerMessage::Type::WM_WindowStateChanged;
server_message.wm.client_id = changed_event.client_id();
server_message.wm.window_id = changed_event.window_id();
ASSERT(changed_event.title().length() < sizeof(server_message.text));
memcpy(server_message.text, changed_event.title().characters(), changed_event.title().length());
server_message.text_length = changed_event.title().length();
server_message.wm.rect = changed_event.rect();
break;
}
default:
break;
}