LibGUI/WindowServer: Implement window showing/hiding

This commit is contained in:
2025-06-25 14:16:56 +03:00
parent bbb490b24f
commit 83069e433f
5 changed files with 85 additions and 84 deletions

View File

@@ -295,6 +295,10 @@ namespace LibGUI
m_resize_window_event_callback();
break;
}
case PacketType::WindowShownEvent:
if (m_window_shown_event_callback)
m_window_shown_event_callback(TRY_OR_BREAK(EventPacket::WindowShownEvent::deserialize(packet_data.span())).event);
break;
case PacketType::KeyEvent:
if (m_key_event_callback)
m_key_event_callback(TRY_OR_BREAK(EventPacket::KeyEvent::deserialize(packet_data.span())).event);

View File

@@ -172,6 +172,7 @@ namespace LibGUI
DestroyWindowEvent,
CloseWindowEvent,
ResizeWindowEvent,
WindowShownEvent,
KeyEvent,
MouseButtonEvent,
MouseMoveEvent,
@@ -189,6 +190,7 @@ namespace LibGUI
bool rounded_corners;
bool alpha_channel;
bool resizable;
bool shown;
};
DEFINE_PACKET(
@@ -271,6 +273,14 @@ namespace LibGUI
long, smo_key
);
DEFINE_PACKET_EXTRA(
WindowShownEvent,
struct event_t {
bool shown;
},
event_t, event
);
DEFINE_PACKET_EXTRA(
KeyEvent,
using event_t = LibInput::KeyEvent,

View File

@@ -24,6 +24,7 @@ namespace LibGUI
.rounded_corners = true,
.alpha_channel = false,
.resizable = false,
.shown = true,
};
public:
@@ -66,6 +67,7 @@ namespace LibGUI
void set_mouse_button_event_callback(BAN::Function<void(EventPacket::MouseButtonEvent::event_t)> callback) { m_mouse_button_event_callback = callback; }
void set_mouse_move_event_callback(BAN::Function<void(EventPacket::MouseMoveEvent::event_t)> callback) { m_mouse_move_event_callback = callback; }
void set_mouse_scroll_event_callback(BAN::Function<void(EventPacket::MouseScrollEvent::event_t)> callback) { m_mouse_scroll_event_callback = callback; }
void set_window_shown_event_callback(BAN::Function<void(EventPacket::WindowShownEvent::event_t)> callback) { m_window_shown_event_callback = callback; }
int server_fd() const { return m_server_fd; }
@@ -96,6 +98,7 @@ namespace LibGUI
BAN::Function<void()> m_socket_error_callback;
BAN::Function<void()> m_close_window_event_callback;
BAN::Function<void()> m_resize_window_event_callback;
BAN::Function<void(EventPacket::WindowShownEvent::event_t)> m_window_shown_event_callback;
BAN::Function<void(EventPacket::KeyEvent::event_t)> m_key_event_callback;
BAN::Function<void(EventPacket::MouseButtonEvent::event_t)> m_mouse_button_event_callback;
BAN::Function<void(EventPacket::MouseMoveEvent::event_t)> m_mouse_move_event_callback;