1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-20 14:05:08 +00:00

WindowServer: Make message receivers be weak pointers.

This commit is contained in:
Andreas Kling 2019-02-26 00:54:10 +01:00
parent 95cfa49f1b
commit d77f8ba413
5 changed files with 28 additions and 27 deletions

View file

@ -74,7 +74,7 @@ void WSScreen::on_receive_mouse_data(int dx, int dy, bool left_button, bool righ
buttons |= (unsigned)MouseButton::Right;
if (m_cursor_location != prev_location) {
auto message = make<WSMouseEvent>(WSMessage::MouseMove, m_cursor_location, buttons);
WSMessageLoop::the().post_message(&WSWindowManager::the(), move(message));
WSMessageLoop::the().post_message(WSWindowManager::the(), move(message));
}
bool prev_left_button = m_left_mouse_button_pressed;
bool prev_right_button = m_right_mouse_button_pressed;
@ -82,11 +82,11 @@ void WSScreen::on_receive_mouse_data(int dx, int dy, bool left_button, bool righ
m_right_mouse_button_pressed = right_button;
if (prev_left_button != left_button) {
auto message = make<WSMouseEvent>(left_button ? WSMessage::MouseDown : WSMessage::MouseUp, m_cursor_location, buttons, MouseButton::Left);
WSMessageLoop::the().post_message(&WSWindowManager::the(), move(message));
WSMessageLoop::the().post_message(WSWindowManager::the(), move(message));
}
if (prev_right_button != right_button) {
auto message = make<WSMouseEvent>(right_button ? WSMessage::MouseDown : WSMessage::MouseUp, m_cursor_location, buttons, MouseButton::Right);
WSMessageLoop::the().post_message(&WSWindowManager::the(), move(message));
WSMessageLoop::the().post_message(WSWindowManager::the(), move(message));
}
if (m_cursor_location != prev_location || prev_left_button != left_button)
WSWindowManager::the().invalidate_cursor();
@ -98,7 +98,7 @@ void WSScreen::on_receive_keyboard_data(KeyEvent kernel_event)
message->m_shift = kernel_event.shift();
message->m_ctrl = kernel_event.ctrl();
message->m_alt = kernel_event.alt();
WSMessageLoop::the().post_message(&WSWindowManager::the(), move(message));
WSMessageLoop::the().post_message(WSWindowManager::the(), move(message));
}
void WSScreen::set_y_offset(int offset)