1#include <wayland-server-protocol-extra.hpp>
3using namespace wayland;
4using namespace wayland::detail;
5using namespace wayland::server;
6using namespace wayland::server::detail;
8const wl_interface* presentation_interface_destroy_request_server[0] = {
11const wl_interface* presentation_interface_feedback_request_server[2] = {
13 &presentation_feedback_interface,
16const wl_interface* presentation_interface_clock_id_event_server[1] = {
20const wl_message presentation_interface_requests_server[2] = {
24 presentation_interface_destroy_request_server,
29 presentation_interface_feedback_request_server,
33const wl_message presentation_interface_events_server[1] = {
37 presentation_interface_clock_id_event_server,
41const wl_interface wayland::server::detail::presentation_interface =
46 presentation_interface_requests_server,
48 presentation_interface_events_server,
51const wl_interface* presentation_feedback_interface_sync_output_event_server[1] = {
55const wl_interface* presentation_feedback_interface_presented_event_server[7] = {
65const wl_interface* presentation_feedback_interface_discarded_event_server[0] = {
68const wl_message presentation_feedback_interface_requests_server[0] = {
71const wl_message presentation_feedback_interface_events_server[3] = {
75 presentation_feedback_interface_sync_output_event_server,
80 presentation_feedback_interface_presented_event_server,
85 presentation_feedback_interface_discarded_event_server,
89const wl_interface wayland::server::detail::presentation_feedback_interface =
91 "wp_presentation_feedback",
94 presentation_feedback_interface_requests_server,
96 presentation_feedback_interface_events_server,
99const wl_interface* viewporter_interface_destroy_request_server[0] = {
102const wl_interface* viewporter_interface_get_viewport_request_server[2] = {
107const wl_message viewporter_interface_requests_server[2] = {
111 viewporter_interface_destroy_request_server,
116 viewporter_interface_get_viewport_request_server,
120const wl_message viewporter_interface_events_server[0] = {
123const wl_interface wayland::server::detail::viewporter_interface =
128 viewporter_interface_requests_server,
130 viewporter_interface_events_server,
133const wl_interface* viewport_interface_destroy_request_server[0] = {
136const wl_interface* viewport_interface_set_source_request_server[4] = {
143const wl_interface* viewport_interface_set_destination_request_server[2] = {
148const wl_message viewport_interface_requests_server[3] = {
152 viewport_interface_destroy_request_server,
157 viewport_interface_set_source_request_server,
162 viewport_interface_set_destination_request_server,
166const wl_message viewport_interface_events_server[0] = {
169const wl_interface wayland::server::detail::viewport_interface =
174 viewport_interface_requests_server,
176 viewport_interface_events_server,
179const wl_interface* xdg_wm_base_interface_destroy_request_server[0] = {
182const wl_interface* xdg_wm_base_interface_create_positioner_request_server[1] = {
183 &xdg_positioner_interface,
186const wl_interface* xdg_wm_base_interface_get_xdg_surface_request_server[2] = {
187 &xdg_surface_interface,
191const wl_interface* xdg_wm_base_interface_pong_request_server[1] = {
195const wl_interface* xdg_wm_base_interface_ping_event_server[1] = {
199const wl_message xdg_wm_base_interface_requests_server[4] = {
203 xdg_wm_base_interface_destroy_request_server,
208 xdg_wm_base_interface_create_positioner_request_server,
213 xdg_wm_base_interface_get_xdg_surface_request_server,
218 xdg_wm_base_interface_pong_request_server,
222const wl_message xdg_wm_base_interface_events_server[1] = {
226 xdg_wm_base_interface_ping_event_server,
230const wl_interface wayland::server::detail::xdg_wm_base_interface =
235 xdg_wm_base_interface_requests_server,
237 xdg_wm_base_interface_events_server,
240const wl_interface* xdg_positioner_interface_destroy_request_server[0] = {
243const wl_interface* xdg_positioner_interface_set_size_request_server[2] = {
248const wl_interface* xdg_positioner_interface_set_anchor_rect_request_server[4] = {
255const wl_interface* xdg_positioner_interface_set_anchor_request_server[1] = {
259const wl_interface* xdg_positioner_interface_set_gravity_request_server[1] = {
263const wl_interface* xdg_positioner_interface_set_constraint_adjustment_request_server[1] = {
267const wl_interface* xdg_positioner_interface_set_offset_request_server[2] = {
272const wl_interface* xdg_positioner_interface_set_reactive_request_server[0] = {
275const wl_interface* xdg_positioner_interface_set_parent_size_request_server[2] = {
280const wl_interface* xdg_positioner_interface_set_parent_configure_request_server[1] = {
284const wl_message xdg_positioner_interface_requests_server[10] = {
288 xdg_positioner_interface_destroy_request_server,
293 xdg_positioner_interface_set_size_request_server,
298 xdg_positioner_interface_set_anchor_rect_request_server,
303 xdg_positioner_interface_set_anchor_request_server,
308 xdg_positioner_interface_set_gravity_request_server,
311 "set_constraint_adjustment",
313 xdg_positioner_interface_set_constraint_adjustment_request_server,
318 xdg_positioner_interface_set_offset_request_server,
323 xdg_positioner_interface_set_reactive_request_server,
328 xdg_positioner_interface_set_parent_size_request_server,
331 "set_parent_configure",
333 xdg_positioner_interface_set_parent_configure_request_server,
337const wl_message xdg_positioner_interface_events_server[0] = {
340const wl_interface wayland::server::detail::xdg_positioner_interface =
345 xdg_positioner_interface_requests_server,
347 xdg_positioner_interface_events_server,
350const wl_interface* xdg_surface_interface_destroy_request_server[0] = {
353const wl_interface* xdg_surface_interface_get_toplevel_request_server[1] = {
354 &xdg_toplevel_interface,
357const wl_interface* xdg_surface_interface_get_popup_request_server[3] = {
358 &xdg_popup_interface,
359 &xdg_surface_interface,
360 &xdg_positioner_interface,
363const wl_interface* xdg_surface_interface_set_window_geometry_request_server[4] = {
370const wl_interface* xdg_surface_interface_ack_configure_request_server[1] = {
374const wl_interface* xdg_surface_interface_configure_event_server[1] = {
378const wl_message xdg_surface_interface_requests_server[5] = {
382 xdg_surface_interface_destroy_request_server,
387 xdg_surface_interface_get_toplevel_request_server,
392 xdg_surface_interface_get_popup_request_server,
395 "set_window_geometry",
397 xdg_surface_interface_set_window_geometry_request_server,
402 xdg_surface_interface_ack_configure_request_server,
406const wl_message xdg_surface_interface_events_server[1] = {
410 xdg_surface_interface_configure_event_server,
414const wl_interface wayland::server::detail::xdg_surface_interface =
419 xdg_surface_interface_requests_server,
421 xdg_surface_interface_events_server,
424const wl_interface* xdg_toplevel_interface_destroy_request_server[0] = {
427const wl_interface* xdg_toplevel_interface_set_parent_request_server[1] = {
428 &xdg_toplevel_interface,
431const wl_interface* xdg_toplevel_interface_set_title_request_server[1] = {
435const wl_interface* xdg_toplevel_interface_set_app_id_request_server[1] = {
439const wl_interface* xdg_toplevel_interface_show_window_menu_request_server[4] = {
446const wl_interface* xdg_toplevel_interface_move_request_server[2] = {
451const wl_interface* xdg_toplevel_interface_resize_request_server[3] = {
457const wl_interface* xdg_toplevel_interface_set_max_size_request_server[2] = {
462const wl_interface* xdg_toplevel_interface_set_min_size_request_server[2] = {
467const wl_interface* xdg_toplevel_interface_set_maximized_request_server[0] = {
470const wl_interface* xdg_toplevel_interface_unset_maximized_request_server[0] = {
473const wl_interface* xdg_toplevel_interface_set_fullscreen_request_server[1] = {
477const wl_interface* xdg_toplevel_interface_unset_fullscreen_request_server[0] = {
480const wl_interface* xdg_toplevel_interface_set_minimized_request_server[0] = {
483const wl_interface* xdg_toplevel_interface_configure_event_server[3] = {
489const wl_interface* xdg_toplevel_interface_close_event_server[0] = {
492const wl_interface* xdg_toplevel_interface_configure_bounds_event_server[2] = {
497const wl_message xdg_toplevel_interface_requests_server[14] = {
501 xdg_toplevel_interface_destroy_request_server,
506 xdg_toplevel_interface_set_parent_request_server,
511 xdg_toplevel_interface_set_title_request_server,
516 xdg_toplevel_interface_set_app_id_request_server,
521 xdg_toplevel_interface_show_window_menu_request_server,
526 xdg_toplevel_interface_move_request_server,
531 xdg_toplevel_interface_resize_request_server,
536 xdg_toplevel_interface_set_max_size_request_server,
541 xdg_toplevel_interface_set_min_size_request_server,
546 xdg_toplevel_interface_set_maximized_request_server,
551 xdg_toplevel_interface_unset_maximized_request_server,
556 xdg_toplevel_interface_set_fullscreen_request_server,
561 xdg_toplevel_interface_unset_fullscreen_request_server,
566 xdg_toplevel_interface_set_minimized_request_server,
570const wl_message xdg_toplevel_interface_events_server[3] = {
574 xdg_toplevel_interface_configure_event_server,
579 xdg_toplevel_interface_close_event_server,
584 xdg_toplevel_interface_configure_bounds_event_server,
588const wl_interface wayland::server::detail::xdg_toplevel_interface =
593 xdg_toplevel_interface_requests_server,
595 xdg_toplevel_interface_events_server,
598const wl_interface* xdg_popup_interface_destroy_request_server[0] = {
601const wl_interface* xdg_popup_interface_grab_request_server[2] = {
606const wl_interface* xdg_popup_interface_reposition_request_server[2] = {
607 &xdg_positioner_interface,
611const wl_interface* xdg_popup_interface_configure_event_server[4] = {
618const wl_interface* xdg_popup_interface_popup_done_event_server[0] = {
621const wl_interface* xdg_popup_interface_repositioned_event_server[1] = {
625const wl_message xdg_popup_interface_requests_server[3] = {
629 xdg_popup_interface_destroy_request_server,
634 xdg_popup_interface_grab_request_server,
639 xdg_popup_interface_reposition_request_server,
643const wl_message xdg_popup_interface_events_server[3] = {
647 xdg_popup_interface_configure_event_server,
652 xdg_popup_interface_popup_done_event_server,
657 xdg_popup_interface_repositioned_event_server,
661const wl_interface wayland::server::detail::xdg_popup_interface =
666 xdg_popup_interface_requests_server,
668 xdg_popup_interface_events_server,
671presentation_t::presentation_t(
const client_t& client, uint32_t
id,
int version)
672 : resource_t(client, &server::detail::presentation_interface, id, version)
674 set_events(std::shared_ptr<resource_t::events_base_t>(
new events_t), dispatcher);
677presentation_t::presentation_t(
const resource_t &resource)
678 : resource_t(resource)
680 set_events(std::shared_ptr<resource_t::events_base_t>(
new events_t), dispatcher);
683const std::string presentation_t::interface_name =
"wp_presentation";
685presentation_t::operator wp_presentation*()
const
687 return reinterpret_cast<wp_presentation*
> (c_ptr());
692 return std::static_pointer_cast<events_t>(get_events())->destroy;
698 return std::static_pointer_cast<events_t>(get_events())->feedback;
704 send_event(post, 0, clk_id);
709 post_error(
static_cast<uint32_t
>(presentation_error::invalid_timestamp), msg);
714 post_error(
static_cast<uint32_t
>(presentation_error::invalid_flag), msg);
717int presentation_t::dispatcher(
int opcode,
const std::vector<any>& args,
const std::shared_ptr<resource_t::events_base_t>& e)
719 std::shared_ptr<events_t> events = std::static_pointer_cast<events_t>(e);
723 if(events->destroy) events->destroy();
733presentation_feedback_t::presentation_feedback_t(
const client_t& client, uint32_t
id,
int version)
734 : resource_t(client, &server::detail::presentation_feedback_interface, id, version)
736 set_events(std::shared_ptr<resource_t::events_base_t>(
new events_t), dispatcher);
739presentation_feedback_t::presentation_feedback_t(
const resource_t &resource)
740 : resource_t(resource)
742 set_events(std::shared_ptr<resource_t::events_base_t>(
new events_t), dispatcher);
745const std::string presentation_feedback_t::interface_name =
"wp_presentation_feedback";
747presentation_feedback_t::operator wp_presentation_feedback*()
const
749 return reinterpret_cast<wp_presentation_feedback*
> (c_ptr());
754 send_event(post, 0, output.proxy_has_object() ?
reinterpret_cast<wl_object*
>(output.c_ptr()) :
nullptr);
759 send_event(post, 1, tv_sec_hi, tv_sec_lo, tv_nsec, refresh, seq_hi, seq_lo,
static_cast<uint32_t
>(flags));
767int presentation_feedback_t::dispatcher(
int opcode,
const std::vector<any>& args,
const std::shared_ptr<resource_t::events_base_t>& e)
771const bitfield<4, 1> presentation_feedback_kind::vsync{0x1};
772const bitfield<4, 1> presentation_feedback_kind::hw_clock{0x2};
773const bitfield<4, 1> presentation_feedback_kind::hw_completion{0x4};
774const bitfield<4, 1> presentation_feedback_kind::zero_copy{0x8};
777viewporter_t::viewporter_t(
const client_t& client, uint32_t
id,
int version)
778 : resource_t(client, &server::detail::viewporter_interface, id, version)
780 set_events(std::shared_ptr<resource_t::events_base_t>(
new events_t), dispatcher);
783viewporter_t::viewporter_t(
const resource_t &resource)
784 : resource_t(resource)
786 set_events(std::shared_ptr<resource_t::events_base_t>(
new events_t), dispatcher);
789const std::string viewporter_t::interface_name =
"wp_viewporter";
791viewporter_t::operator wp_viewporter*()
const
793 return reinterpret_cast<wp_viewporter*
> (c_ptr());
798 return std::static_pointer_cast<events_t>(get_events())->destroy;
804 return std::static_pointer_cast<events_t>(get_events())->get_viewport;
810 post_error(
static_cast<uint32_t
>(viewporter_error::viewport_exists), msg);
813int viewporter_t::dispatcher(
int opcode,
const std::vector<any>& args,
const std::shared_ptr<resource_t::events_base_t>& e)
815 std::shared_ptr<events_t> events = std::static_pointer_cast<events_t>(e);
819 if(events->destroy) events->destroy();
822 if(events->get_viewport) events->get_viewport(
viewport_t(args[0].get<resource_t>()),
surface_t(args[1].get<resource_t>()));
829viewport_t::viewport_t(
const client_t& client, uint32_t
id,
int version)
830 : resource_t(client, &server::detail::viewport_interface, id, version)
832 set_events(std::shared_ptr<resource_t::events_base_t>(
new events_t), dispatcher);
835viewport_t::viewport_t(
const resource_t &resource)
836 : resource_t(resource)
838 set_events(std::shared_ptr<resource_t::events_base_t>(
new events_t), dispatcher);
841const std::string viewport_t::interface_name =
"wp_viewport";
843viewport_t::operator wp_viewport*()
const
845 return reinterpret_cast<wp_viewport*
> (c_ptr());
850 return std::static_pointer_cast<events_t>(get_events())->destroy;
856 return std::static_pointer_cast<events_t>(get_events())->set_source;
862 return std::static_pointer_cast<events_t>(get_events())->set_destination;
868 post_error(
static_cast<uint32_t
>(viewport_error::bad_value), msg);
873 post_error(
static_cast<uint32_t
>(viewport_error::bad_size), msg);
878 post_error(
static_cast<uint32_t
>(viewport_error::out_of_buffer), msg);
883 post_error(
static_cast<uint32_t
>(viewport_error::no_surface), msg);
886int viewport_t::dispatcher(
int opcode,
const std::vector<any>& args,
const std::shared_ptr<resource_t::events_base_t>& e)
888 std::shared_ptr<events_t> events = std::static_pointer_cast<events_t>(e);
892 if(events->destroy) events->destroy();
895 if(events->set_source) events->set_source(args[0].get<double>(), args[1].get<double>(), args[2].get<double>(), args[3].get<double>());
898 if(events->set_destination) events->set_destination(args[0].get<int32_t>(), args[1].get<int32_t>());
905xdg_wm_base_t::xdg_wm_base_t(
const client_t& client, uint32_t
id,
int version)
906 : resource_t(client, &server::detail::xdg_wm_base_interface, id, version)
908 set_events(std::shared_ptr<resource_t::events_base_t>(
new events_t), dispatcher);
911xdg_wm_base_t::xdg_wm_base_t(
const resource_t &resource)
912 : resource_t(resource)
914 set_events(std::shared_ptr<resource_t::events_base_t>(
new events_t), dispatcher);
917const std::string xdg_wm_base_t::interface_name =
"xdg_wm_base";
919xdg_wm_base_t::operator xdg_wm_base*()
const
921 return reinterpret_cast<xdg_wm_base*
> (c_ptr());
926 return std::static_pointer_cast<events_t>(get_events())->destroy;
932 return std::static_pointer_cast<events_t>(get_events())->create_positioner;
938 return std::static_pointer_cast<events_t>(get_events())->get_xdg_surface;
944 return std::static_pointer_cast<events_t>(get_events())->pong;
950 send_event(post, 0, serial);
955 post_error(
static_cast<uint32_t
>(xdg_wm_base_error::role), msg);
960 post_error(
static_cast<uint32_t
>(xdg_wm_base_error::defunct_surfaces), msg);
965 post_error(
static_cast<uint32_t
>(xdg_wm_base_error::not_the_topmost_popup), msg);
970 post_error(
static_cast<uint32_t
>(xdg_wm_base_error::invalid_popup_parent), msg);
975 post_error(
static_cast<uint32_t
>(xdg_wm_base_error::invalid_surface_state), msg);
980 post_error(
static_cast<uint32_t
>(xdg_wm_base_error::invalid_positioner), msg);
983int xdg_wm_base_t::dispatcher(
int opcode,
const std::vector<any>& args,
const std::shared_ptr<resource_t::events_base_t>& e)
985 std::shared_ptr<events_t> events = std::static_pointer_cast<events_t>(e);
989 if(events->destroy) events->destroy();
992 if(events->create_positioner) events->create_positioner(
xdg_positioner_t(args[0].get<resource_t>()));
995 if(events->get_xdg_surface) events->get_xdg_surface(
xdg_surface_t(args[0].get<resource_t>()),
surface_t(args[1].get<resource_t>()));
998 if(events->pong) events->pong(args[0].get<uint32_t>());
1005xdg_positioner_t::xdg_positioner_t(
const client_t& client, uint32_t
id,
int version)
1006 : resource_t(client, &server::detail::xdg_positioner_interface, id, version)
1008 set_events(std::shared_ptr<resource_t::events_base_t>(
new events_t), dispatcher);
1011xdg_positioner_t::xdg_positioner_t(
const resource_t &resource)
1012 : resource_t(resource)
1014 set_events(std::shared_ptr<resource_t::events_base_t>(
new events_t), dispatcher);
1017const std::string xdg_positioner_t::interface_name =
"xdg_positioner";
1019xdg_positioner_t::operator xdg_positioner*()
const
1021 return reinterpret_cast<xdg_positioner*
> (c_ptr());
1026 return std::static_pointer_cast<events_t>(get_events())->destroy;
1032 return std::static_pointer_cast<events_t>(get_events())->set_size;
1038 return std::static_pointer_cast<events_t>(get_events())->set_anchor_rect;
1044 return std::static_pointer_cast<events_t>(get_events())->set_anchor;
1050 return std::static_pointer_cast<events_t>(get_events())->set_gravity;
1056 return std::static_pointer_cast<events_t>(get_events())->set_constraint_adjustment;
1062 return std::static_pointer_cast<events_t>(get_events())->set_offset;
1068 return std::static_pointer_cast<events_t>(get_events())->set_reactive;
1074 return std::static_pointer_cast<events_t>(get_events())->set_parent_size;
1080 return std::static_pointer_cast<events_t>(get_events())->set_parent_configure;
1086 post_error(
static_cast<uint32_t
>(xdg_positioner_error::invalid_input), msg);
1089int xdg_positioner_t::dispatcher(
int opcode,
const std::vector<any>& args,
const std::shared_ptr<resource_t::events_base_t>& e)
1091 std::shared_ptr<events_t> events = std::static_pointer_cast<events_t>(e);
1095 if(events->destroy) events->destroy();
1098 if(events->set_size) events->set_size(args[0].get<int32_t>(), args[1].get<int32_t>());
1101 if(events->set_anchor_rect) events->set_anchor_rect(args[0].get<int32_t>(), args[1].get<int32_t>(), args[2].get<int32_t>(), args[3].get<int32_t>());
1104 if(events->set_anchor) events->set_anchor(xdg_positioner_anchor(args[0].get<uint32_t>()));
1107 if(events->set_gravity) events->set_gravity(xdg_positioner_gravity(args[0].get<uint32_t>()));
1113 if(events->set_offset) events->set_offset(args[0].get<int32_t>(), args[1].get<int32_t>());
1116 if(events->set_reactive) events->set_reactive();
1119 if(events->set_parent_size) events->set_parent_size(args[0].get<int32_t>(), args[1].get<int32_t>());
1122 if(events->set_parent_configure) events->set_parent_configure(args[0].get<uint32_t>());
1130const bitfield<2147483649, 8> xdg_positioner_constraint_adjustment::none{0};
1131const bitfield<2147483649, 8> xdg_positioner_constraint_adjustment::slide_x{1};
1132const bitfield<2147483649, 8> xdg_positioner_constraint_adjustment::slide_y{2};
1133const bitfield<2147483649, 8> xdg_positioner_constraint_adjustment::flip_x{4};
1134const bitfield<2147483649, 8> xdg_positioner_constraint_adjustment::flip_y{8};
1135const bitfield<2147483649, 8> xdg_positioner_constraint_adjustment::resize_x{16};
1136const bitfield<2147483649, 8> xdg_positioner_constraint_adjustment::resize_y{32};
1139xdg_surface_t::xdg_surface_t(
const client_t& client, uint32_t
id,
int version)
1140 : resource_t(client, &server::detail::xdg_surface_interface, id, version)
1142 set_events(std::shared_ptr<resource_t::events_base_t>(
new events_t), dispatcher);
1145xdg_surface_t::xdg_surface_t(
const resource_t &resource)
1146 : resource_t(resource)
1148 set_events(std::shared_ptr<resource_t::events_base_t>(
new events_t), dispatcher);
1151const std::string xdg_surface_t::interface_name =
"xdg_surface";
1153xdg_surface_t::operator xdg_surface*()
const
1155 return reinterpret_cast<xdg_surface*
> (c_ptr());
1160 return std::static_pointer_cast<events_t>(get_events())->destroy;
1166 return std::static_pointer_cast<events_t>(get_events())->get_toplevel;
1172 return std::static_pointer_cast<events_t>(get_events())->get_popup;
1178 return std::static_pointer_cast<events_t>(get_events())->set_window_geometry;
1184 return std::static_pointer_cast<events_t>(get_events())->ack_configure;
1190 send_event(post, 0, serial);
1195 post_error(
static_cast<uint32_t
>(xdg_surface_error::not_constructed), msg);
1200 post_error(
static_cast<uint32_t
>(xdg_surface_error::already_constructed), msg);
1205 post_error(
static_cast<uint32_t
>(xdg_surface_error::unconfigured_buffer), msg);
1208int xdg_surface_t::dispatcher(
int opcode,
const std::vector<any>& args,
const std::shared_ptr<resource_t::events_base_t>& e)
1210 std::shared_ptr<events_t> events = std::static_pointer_cast<events_t>(e);
1214 if(events->destroy) events->destroy();
1217 if(events->get_toplevel) events->get_toplevel(
xdg_toplevel_t(args[0].get<resource_t>()));
1223 if(events->set_window_geometry) events->set_window_geometry(args[0].get<int32_t>(), args[1].get<int32_t>(), args[2].get<int32_t>(), args[3].get<int32_t>());
1226 if(events->ack_configure) events->ack_configure(args[0].get<uint32_t>());
1233xdg_toplevel_t::xdg_toplevel_t(
const client_t& client, uint32_t
id,
int version)
1234 : resource_t(client, &server::detail::xdg_toplevel_interface, id, version)
1236 set_events(std::shared_ptr<resource_t::events_base_t>(
new events_t), dispatcher);
1239xdg_toplevel_t::xdg_toplevel_t(
const resource_t &resource)
1240 : resource_t(resource)
1242 set_events(std::shared_ptr<resource_t::events_base_t>(
new events_t), dispatcher);
1245const std::string xdg_toplevel_t::interface_name =
"xdg_toplevel";
1247xdg_toplevel_t::operator xdg_toplevel*()
const
1249 return reinterpret_cast<xdg_toplevel*
> (c_ptr());
1254 return std::static_pointer_cast<events_t>(get_events())->destroy;
1260 return std::static_pointer_cast<events_t>(get_events())->set_parent;
1266 return std::static_pointer_cast<events_t>(get_events())->set_title;
1272 return std::static_pointer_cast<events_t>(get_events())->set_app_id;
1278 return std::static_pointer_cast<events_t>(get_events())->show_window_menu;
1284 return std::static_pointer_cast<events_t>(get_events())->move;
1290 return std::static_pointer_cast<events_t>(get_events())->resize;
1296 return std::static_pointer_cast<events_t>(get_events())->set_max_size;
1302 return std::static_pointer_cast<events_t>(get_events())->set_min_size;
1308 return std::static_pointer_cast<events_t>(get_events())->set_maximized;
1314 return std::static_pointer_cast<events_t>(get_events())->unset_maximized;
1320 return std::static_pointer_cast<events_t>(get_events())->set_fullscreen;
1326 return std::static_pointer_cast<events_t>(get_events())->unset_fullscreen;
1332 return std::static_pointer_cast<events_t>(get_events())->set_minimized;
1338 send_event(post, 0, width, height, states);
1343 send_event(post, 1);
1348 send_event(post, 2, width, height);
1358 post_error(
static_cast<uint32_t
>(xdg_toplevel_error::invalid_resize_edge), msg);
1361int xdg_toplevel_t::dispatcher(
int opcode,
const std::vector<any>& args,
const std::shared_ptr<resource_t::events_base_t>& e)
1363 std::shared_ptr<events_t> events = std::static_pointer_cast<events_t>(e);
1367 if(events->destroy) events->destroy();
1370 if(events->set_parent) events->set_parent(
xdg_toplevel_t(args[0].get<resource_t>()));
1373 if(events->set_title) events->set_title(args[0].get<std::string>());
1376 if(events->set_app_id) events->set_app_id(args[0].get<std::string>());
1379 if(events->show_window_menu) events->show_window_menu(
seat_t(args[0].get<resource_t>()), args[1].get<uint32_t>(), args[2].get<int32_t>(), args[3].get<int32_t>());
1382 if(events->move) events->move(
seat_t(args[0].get<resource_t>()), args[1].get<uint32_t>());
1385 if(events->resize) events->resize(
seat_t(args[0].get<resource_t>()), args[1].get<uint32_t>(),
xdg_toplevel_resize_edge(args[2].get<uint32_t>()));
1388 if(events->set_max_size) events->set_max_size(args[0].get<int32_t>(), args[1].get<int32_t>());
1391 if(events->set_min_size) events->set_min_size(args[0].get<int32_t>(), args[1].get<int32_t>());
1394 if(events->set_maximized) events->set_maximized();
1397 if(events->unset_maximized) events->unset_maximized();
1400 if(events->set_fullscreen) events->set_fullscreen(
output_t(args[0].get<resource_t>()));
1403 if(events->unset_fullscreen) events->unset_fullscreen();
1406 if(events->set_minimized) events->set_minimized();
1412const bitfield<2147483649, 11> xdg_toplevel_resize_edge::none{0};
1413const bitfield<2147483649, 11> xdg_toplevel_resize_edge::top{1};
1414const bitfield<2147483649, 11> xdg_toplevel_resize_edge::bottom{2};
1415const bitfield<2147483649, 11> xdg_toplevel_resize_edge::left{4};
1416const bitfield<2147483649, 11> xdg_toplevel_resize_edge::top_left{5};
1417const bitfield<2147483649, 11> xdg_toplevel_resize_edge::bottom_left{6};
1418const bitfield<2147483649, 11> xdg_toplevel_resize_edge::right{8};
1419const bitfield<2147483649, 11> xdg_toplevel_resize_edge::top_right{9};
1420const bitfield<2147483649, 11> xdg_toplevel_resize_edge::bottom_right{10};
1424xdg_popup_t::xdg_popup_t(
const client_t& client, uint32_t
id,
int version)
1425 : resource_t(client, &server::detail::xdg_popup_interface, id, version)
1427 set_events(std::shared_ptr<resource_t::events_base_t>(
new events_t), dispatcher);
1430xdg_popup_t::xdg_popup_t(
const resource_t &resource)
1431 : resource_t(resource)
1433 set_events(std::shared_ptr<resource_t::events_base_t>(
new events_t), dispatcher);
1436const std::string xdg_popup_t::interface_name =
"xdg_popup";
1438xdg_popup_t::operator xdg_popup*()
const
1440 return reinterpret_cast<xdg_popup*
> (c_ptr());
1445 return std::static_pointer_cast<events_t>(get_events())->destroy;
1451 return std::static_pointer_cast<events_t>(get_events())->grab;
1457 return std::static_pointer_cast<events_t>(get_events())->reposition;
1463 send_event(post, 0, x, y, width, height);
1468 send_event(post, 1);
1473 send_event(post, 2, token);
1483 post_error(
static_cast<uint32_t
>(xdg_popup_error::invalid_grab), msg);
1486int xdg_popup_t::dispatcher(
int opcode,
const std::vector<any>& args,
const std::shared_ptr<resource_t::events_base_t>& e)
1488 std::shared_ptr<events_t> events = std::static_pointer_cast<events_t>(e);
1492 if(events->destroy) events->destroy();
1495 if(events->grab) events->grab(
seat_t(args[0].get<resource_t>()), args[1].get<uint32_t>());
1498 if(events->reposition) events->reposition(
xdg_positioner_t(args[0].get<resource_t>()), args[1].get<uint32_t>());
presentation time feedback event
void discarded(bool post=true)
the content update was not displayed
void presented(uint32_t tv_sec_hi, uint32_t tv_sec_lo, uint32_t tv_nsec, uint32_t refresh, uint32_t seq_hi, uint32_t seq_lo, presentation_feedback_kind const &flags, bool post=true)
the content update was displayed
void sync_output(output_t const &output, bool post=true)
presentation synchronized to this output
void post_invalid_timestamp(std::string const &msg)
Post error: invalid value in tv_nsec.
std::function< void(surface_t, presentation_feedback_t)> & on_feedback()
request presentation feedback information
std::function< void()> & on_destroy()
unbind from the presentation interface
void post_invalid_flag(std::string const &msg)
Post error: invalid flag.
void clock_id(uint32_t clk_id, bool post=true)
clock ID for timestamps
crop and scale interface to a wl_surface
void post_bad_size(std::string const &msg)
Post error: destination size is not integer.
std::function< void(int32_t, int32_t)> & on_set_destination()
set the surface size for scaling
void post_no_surface(std::string const &msg)
Post error: the wl_surface was destroyed.
std::function< void()> & on_destroy()
remove scaling and cropping from the surface
void post_bad_value(std::string const &msg)
Post error: negative or zero values in width or height.
void post_out_of_buffer(std::string const &msg)
Post error: source rectangle extends outside of the content area.
std::function< void(double, double, double, double)> & on_set_source()
set the source rectangle for cropping
std::function< void(viewport_t, surface_t)> & on_get_viewport()
extend surface interface for crop and scale
std::function< void()> & on_destroy()
unbind from the cropping and scaling interface
void post_viewport_exists(std::string const &msg)
Post error: the surface already has a viewport object associated.
short-lived, popup surfaces for menus
std::function< void(seat_t, uint32_t)> & on_grab()
make the popup take an explicit grab
bool can_repositioned() const
Check whether the repositioned function is available with the currently bound version of the protocol...
void configure(int32_t x, int32_t y, int32_t width, int32_t height, bool post=true)
configure the popup surface
std::function< void(xdg_positioner_t, uint32_t)> & on_reposition()
recalculate the popup's location
void popup_done(bool post=true)
popup interaction is done
void post_invalid_grab(std::string const &msg)
Post error: tried to grab after being mapped.
void repositioned(uint32_t token, bool post=true)
signal the completion of a repositioned request
static constexpr std::uint32_t repositioned_since_version
Minimum protocol version required for the repositioned function.
std::function< void()> & on_destroy()
remove xdg_popup interface
std::function< void(xdg_positioner_gravity)> & on_set_gravity()
set child surface gravity
void post_invalid_input(std::string const &msg)
Post error: invalid input provided.
std::function< void(int32_t, int32_t)> & on_set_size()
set the size of the to-be positioned rectangle
std::function< void(xdg_positioner_anchor)> & on_set_anchor()
set anchor rectangle anchor
std::function< void()> & on_destroy()
destroy the xdg_positioner object
std::function< void(xdg_positioner_constraint_adjustment)> & on_set_constraint_adjustment()
set the adjustment to be done when constrained
std::function< void(int32_t, int32_t)> & on_set_offset()
set surface position offset
std::function< void(int32_t, int32_t)> & on_set_parent_size()
std::function< void()> & on_set_reactive()
continuously reconstrain the surface
std::function< void(uint32_t)> & on_set_parent_configure()
set parent configure this is a response to
std::function< void(int32_t, int32_t, int32_t, int32_t)> & on_set_anchor_rect()
set the anchor rectangle within the parent surface
desktop user interface surface base interface
std::function< void()> & on_destroy()
destroy the xdg_surface
void post_not_constructed(std::string const &msg)
Post error:
void post_already_constructed(std::string const &msg)
Post error:
std::function< void(xdg_toplevel_t)> & on_get_toplevel()
assign the xdg_toplevel surface role
void post_unconfigured_buffer(std::string const &msg)
Post error:
void configure(uint32_t serial, bool post=true)
suggest a surface change
std::function< void(int32_t, int32_t, int32_t, int32_t)> & on_set_window_geometry()
set the new window geometry
std::function< void(uint32_t)> & on_ack_configure()
ack a configure event
std::function< void(xdg_popup_t, xdg_surface_t, xdg_positioner_t)> & on_get_popup()
assign the xdg_popup surface role
std::function< void(int32_t, int32_t)> & on_set_min_size()
set the minimum size
std::function< void(seat_t, uint32_t, int32_t, int32_t)> & on_show_window_menu()
show the window menu
std::function< void()> & on_unset_maximized()
unmaximize the window
static constexpr std::uint32_t configure_bounds_since_version
Minimum protocol version required for the configure_bounds function.
std::function< void()> & on_unset_fullscreen()
unset the window as fullscreen
bool can_configure_bounds() const
Check whether the configure_bounds function is available with the currently bound version of the prot...
std::function< void(xdg_toplevel_t)> & on_set_parent()
set the parent of this surface
std::function< void(std::string)> & on_set_app_id()
set application ID
std::function< void(int32_t, int32_t)> & on_set_max_size()
set the maximum size
void close(bool post=true)
surface wants to be closed
void post_invalid_resize_edge(std::string const &msg)
Post error: provided value is not a valid variant of the resize_edge enum.
std::function< void(std::string)> & on_set_title()
set surface title
std::function< void(seat_t, uint32_t)> & on_move()
start an interactive move
std::function< void()> & on_set_maximized()
maximize the window
std::function< void(seat_t, uint32_t, xdg_toplevel_resize_edge)> & on_resize()
start an interactive resize
std::function< void(output_t)> & on_set_fullscreen()
set the window as fullscreen on an output
std::function< void()> & on_set_minimized()
set the window as minimized
void configure_bounds(int32_t width, int32_t height, bool post=true)
recommended window geometry bounds
void configure(int32_t width, int32_t height, array_t const &states, bool post=true)
suggest a surface change
std::function< void()> & on_destroy()
destroy the xdg_toplevel
std::function< void()> & on_destroy()
destroy xdg_wm_base
std::function< void(uint32_t)> & on_pong()
respond to a ping event
void post_invalid_surface_state(std::string const &msg)
Post error: the client provided an invalid surface state.
void post_invalid_popup_parent(std::string const &msg)
Post error: the client specified an invalid popup parent surface.
void post_role(std::string const &msg)
Post error: given wl_surface has another role.
void post_defunct_surfaces(std::string const &msg)
Post error: xdg_wm_base was destroyed before children.
void ping(uint32_t serial, bool post=true)
check if the client is alive
std::function< void(xdg_positioner_t)> & on_create_positioner()
create a positioner object
void post_invalid_positioner(std::string const &msg)
Post error: the client provided an invalid positioner.
std::function< void(xdg_surface_t, surface_t)> & on_get_xdg_surface()
create a shell surface from a surface
void post_not_the_topmost_popup(std::string const &msg)
Post error: the client tried to map or destroy a non-topmost popup.
bitmask of flags in presented event