1 #include <wayland-server-protocol-extra.hpp>
8 const wl_interface* presentation_interface_destroy_request_server[0] = {
11 const wl_interface* presentation_interface_feedback_request_server[2] = {
13 &presentation_feedback_interface,
16 const wl_interface* presentation_interface_clock_id_event_server[1] = {
20 const wl_message presentation_interface_requests_server[2] = {
24 presentation_interface_destroy_request_server,
29 presentation_interface_feedback_request_server,
33 const wl_message presentation_interface_events_server[1] = {
37 presentation_interface_clock_id_event_server,
41 const wl_interface wayland::server::detail::presentation_interface =
46 presentation_interface_requests_server,
48 presentation_interface_events_server,
51 const wl_interface* presentation_feedback_interface_sync_output_event_server[1] = {
55 const wl_interface* presentation_feedback_interface_presented_event_server[7] = {
65 const wl_interface* presentation_feedback_interface_discarded_event_server[0] = {
68 const wl_message presentation_feedback_interface_requests_server[0] = {
71 const 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,
89 const wl_interface wayland::server::detail::presentation_feedback_interface =
91 "wp_presentation_feedback",
94 presentation_feedback_interface_requests_server,
96 presentation_feedback_interface_events_server,
99 const wl_interface* viewporter_interface_destroy_request_server[0] = {
102 const wl_interface* viewporter_interface_get_viewport_request_server[2] = {
107 const wl_message viewporter_interface_requests_server[2] = {
111 viewporter_interface_destroy_request_server,
116 viewporter_interface_get_viewport_request_server,
120 const wl_message viewporter_interface_events_server[0] = {
123 const wl_interface wayland::server::detail::viewporter_interface =
128 viewporter_interface_requests_server,
130 viewporter_interface_events_server,
133 const wl_interface* viewport_interface_destroy_request_server[0] = {
136 const wl_interface* viewport_interface_set_source_request_server[4] = {
143 const wl_interface* viewport_interface_set_destination_request_server[2] = {
148 const 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,
166 const wl_message viewport_interface_events_server[0] = {
169 const wl_interface wayland::server::detail::viewport_interface =
174 viewport_interface_requests_server,
176 viewport_interface_events_server,
179 const wl_interface* xdg_wm_base_interface_destroy_request_server[0] = {
182 const wl_interface* xdg_wm_base_interface_create_positioner_request_server[1] = {
183 &xdg_positioner_interface,
186 const wl_interface* xdg_wm_base_interface_get_xdg_surface_request_server[2] = {
187 &xdg_surface_interface,
191 const wl_interface* xdg_wm_base_interface_pong_request_server[1] = {
195 const wl_interface* xdg_wm_base_interface_ping_event_server[1] = {
199 const 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,
222 const wl_message xdg_wm_base_interface_events_server[1] = {
226 xdg_wm_base_interface_ping_event_server,
230 const wl_interface wayland::server::detail::xdg_wm_base_interface =
235 xdg_wm_base_interface_requests_server,
237 xdg_wm_base_interface_events_server,
240 const wl_interface* xdg_positioner_interface_destroy_request_server[0] = {
243 const wl_interface* xdg_positioner_interface_set_size_request_server[2] = {
248 const wl_interface* xdg_positioner_interface_set_anchor_rect_request_server[4] = {
255 const wl_interface* xdg_positioner_interface_set_anchor_request_server[1] = {
259 const wl_interface* xdg_positioner_interface_set_gravity_request_server[1] = {
263 const wl_interface* xdg_positioner_interface_set_constraint_adjustment_request_server[1] = {
267 const wl_interface* xdg_positioner_interface_set_offset_request_server[2] = {
272 const wl_interface* xdg_positioner_interface_set_reactive_request_server[0] = {
275 const wl_interface* xdg_positioner_interface_set_parent_size_request_server[2] = {
280 const wl_interface* xdg_positioner_interface_set_parent_configure_request_server[1] = {
284 const 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,
337 const wl_message xdg_positioner_interface_events_server[0] = {
340 const wl_interface wayland::server::detail::xdg_positioner_interface =
345 xdg_positioner_interface_requests_server,
347 xdg_positioner_interface_events_server,
350 const wl_interface* xdg_surface_interface_destroy_request_server[0] = {
353 const wl_interface* xdg_surface_interface_get_toplevel_request_server[1] = {
354 &xdg_toplevel_interface,
357 const wl_interface* xdg_surface_interface_get_popup_request_server[3] = {
358 &xdg_popup_interface,
359 &xdg_surface_interface,
360 &xdg_positioner_interface,
363 const wl_interface* xdg_surface_interface_set_window_geometry_request_server[4] = {
370 const wl_interface* xdg_surface_interface_ack_configure_request_server[1] = {
374 const wl_interface* xdg_surface_interface_configure_event_server[1] = {
378 const 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,
406 const wl_message xdg_surface_interface_events_server[1] = {
410 xdg_surface_interface_configure_event_server,
414 const wl_interface wayland::server::detail::xdg_surface_interface =
419 xdg_surface_interface_requests_server,
421 xdg_surface_interface_events_server,
424 const wl_interface* xdg_toplevel_interface_destroy_request_server[0] = {
427 const wl_interface* xdg_toplevel_interface_set_parent_request_server[1] = {
428 &xdg_toplevel_interface,
431 const wl_interface* xdg_toplevel_interface_set_title_request_server[1] = {
435 const wl_interface* xdg_toplevel_interface_set_app_id_request_server[1] = {
439 const wl_interface* xdg_toplevel_interface_show_window_menu_request_server[4] = {
446 const wl_interface* xdg_toplevel_interface_move_request_server[2] = {
451 const wl_interface* xdg_toplevel_interface_resize_request_server[3] = {
457 const wl_interface* xdg_toplevel_interface_set_max_size_request_server[2] = {
462 const wl_interface* xdg_toplevel_interface_set_min_size_request_server[2] = {
467 const wl_interface* xdg_toplevel_interface_set_maximized_request_server[0] = {
470 const wl_interface* xdg_toplevel_interface_unset_maximized_request_server[0] = {
473 const wl_interface* xdg_toplevel_interface_set_fullscreen_request_server[1] = {
477 const wl_interface* xdg_toplevel_interface_unset_fullscreen_request_server[0] = {
480 const wl_interface* xdg_toplevel_interface_set_minimized_request_server[0] = {
483 const wl_interface* xdg_toplevel_interface_configure_event_server[3] = {
489 const wl_interface* xdg_toplevel_interface_close_event_server[0] = {
492 const wl_interface* xdg_toplevel_interface_configure_bounds_event_server[2] = {
497 const 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,
570 const 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,
588 const wl_interface wayland::server::detail::xdg_toplevel_interface =
593 xdg_toplevel_interface_requests_server,
595 xdg_toplevel_interface_events_server,
598 const wl_interface* xdg_popup_interface_destroy_request_server[0] = {
601 const wl_interface* xdg_popup_interface_grab_request_server[2] = {
606 const wl_interface* xdg_popup_interface_reposition_request_server[2] = {
607 &xdg_positioner_interface,
611 const wl_interface* xdg_popup_interface_configure_event_server[4] = {
618 const wl_interface* xdg_popup_interface_popup_done_event_server[0] = {
621 const wl_interface* xdg_popup_interface_repositioned_event_server[1] = {
625 const 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,
643 const 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,
661 const wl_interface wayland::server::detail::xdg_popup_interface =
666 xdg_popup_interface_requests_server,
668 xdg_popup_interface_events_server,
671 presentation_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);
677 presentation_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);
683 const std::string presentation_t::interface_name =
"wp_presentation";
685 presentation_t::operator wp_presentation*()
const
687 return reinterpret_cast<wp_presentation*
> (c_ptr());
690 std::function<void()> &presentation_t::on_destroy()
692 return std::static_pointer_cast<events_t>(get_events())->destroy;
696 std::function<void(surface_t, presentation_feedback_t)> &presentation_t::on_feedback()
698 return std::static_pointer_cast<events_t>(get_events())->
feedback;
702 void presentation_t::clock_id(uint32_t clk_id,
bool post)
704 send_event(post, 0, clk_id);
707 void presentation_t::post_invalid_timestamp(std::string
const& msg)
709 post_error(static_cast<uint32_t>(presentation_error::invalid_timestamp), msg);
712 void presentation_t::post_invalid_flag(std::string
const& msg)
714 post_error(static_cast<uint32_t>(presentation_error::invalid_flag), msg);
717 int 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();
733 presentation_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);
739 presentation_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);
745 const std::string presentation_feedback_t::interface_name =
"wp_presentation_feedback";
747 presentation_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));
767 int presentation_feedback_t::dispatcher(
int opcode,
const std::vector<any>& args,
const std::shared_ptr<resource_t::events_base_t>& e)
771 const bitfield<4, 1> presentation_feedback_kind::vsync{0x1};
772 const bitfield<4, 1> presentation_feedback_kind::hw_clock{0x2};
773 const bitfield<4, 1> presentation_feedback_kind::hw_completion{0x4};
774 const bitfield<4, 1> presentation_feedback_kind::zero_copy{0x8};
777 viewporter_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);
783 viewporter_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);
789 const std::string viewporter_t::interface_name =
"wp_viewporter";
791 viewporter_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);
813 int 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>()));
829 viewport_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);
835 viewport_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);
841 const std::string viewport_t::interface_name =
"wp_viewport";
843 viewport_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);
886 int 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>());
905 xdg_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);
911 xdg_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);
917 const std::string xdg_wm_base_t::interface_name =
"xdg_wm_base";
919 xdg_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);
983 int 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>());
1005 xdg_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);
1011 xdg_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);
1017 const std::string xdg_positioner_t::interface_name =
"xdg_positioner";
1019 xdg_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);
1089 int 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>());
1130 const bitfield<6, 8> xdg_positioner_constraint_adjustment::none{0};
1131 const bitfield<6, 8> xdg_positioner_constraint_adjustment::slide_x{1};
1132 const bitfield<6, 8> xdg_positioner_constraint_adjustment::slide_y{2};
1133 const bitfield<6, 8> xdg_positioner_constraint_adjustment::flip_x{4};
1134 const bitfield<6, 8> xdg_positioner_constraint_adjustment::flip_y{8};
1135 const bitfield<6, 8> xdg_positioner_constraint_adjustment::resize_x{16};
1136 const bitfield<6, 8> xdg_positioner_constraint_adjustment::resize_y{32};
1139 xdg_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);
1145 xdg_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);
1151 const std::string xdg_surface_t::interface_name =
"xdg_surface";
1153 xdg_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);
1208 int 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>());
1233 xdg_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);
1239 xdg_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);
1245 const std::string xdg_toplevel_t::interface_name =
"xdg_toplevel";
1247 xdg_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);
1361 int 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();
1412 const bitfield<4, 11> xdg_toplevel_resize_edge::none{0};
1413 const bitfield<4, 11> xdg_toplevel_resize_edge::top{1};
1414 const bitfield<4, 11> xdg_toplevel_resize_edge::bottom{2};
1415 const bitfield<4, 11> xdg_toplevel_resize_edge::left{4};
1416 const bitfield<4, 11> xdg_toplevel_resize_edge::top_left{5};
1417 const bitfield<4, 11> xdg_toplevel_resize_edge::bottom_left{6};
1418 const bitfield<4, 11> xdg_toplevel_resize_edge::right{8};
1419 const bitfield<4, 11> xdg_toplevel_resize_edge::top_right{9};
1420 const bitfield<4, 11> xdg_toplevel_resize_edge::bottom_right{10};
1424 xdg_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);
1430 xdg_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);
1436 const std::string xdg_popup_t::interface_name =
"xdg_popup";
1438 xdg_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);
1486 int 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>());
std::function< void(xdg_surface_t, surface_t)> & on_get_xdg_surface()
create a shell surface from a surface
std::function< void()> & on_set_reactive()
continuously reconstrain the surface
void post_role(std::string const &msg)
Post error: given wl_surface has another role.
static constexpr std::uint32_t configure_bounds_since_version
Minimum protocol version required for the configure_bounds function.
std::function< void(xdg_popup_t, xdg_surface_t, xdg_positioner_t)> & on_get_popup()
assign the xdg_popup surface role
void repositioned(uint32_t token, bool post=true)
signal the completion of a repositioned request
std::function< void(double, double, double, double)> & on_set_source()
set the source rectangle for cropping
std::function< void(uint32_t)> & on_pong()
respond to a ping event
void popup_done(bool post=true)
popup interaction is done
std::function< void(int32_t, int32_t)> & on_set_destination()
set the surface size for scaling
std::function< void(int32_t, int32_t)> & on_set_offset()
set surface position offset
void sync_output(output_t const &output, bool post=true)
presentation synchronized to this output
void post_invalid_surface_state(std::string const &msg)
Post error: the client provided an invalid surface state.
void configure(int32_t width, int32_t height, array_t const &states, bool post=true)
suggest a surface change
std::function< void(seat_t, uint32_t, int32_t, int32_t)> & on_show_window_menu()
show the window menu
std::function< void(int32_t, int32_t, int32_t, int32_t)> & on_set_window_geometry()
set the new window geometry
std::function< void()> & on_set_minimized()
set the window as minimized
std::function< void()> & on_destroy()
destroy the xdg_surface
std::function< void(int32_t, int32_t)> & on_set_min_size()
set the minimum size
std::function< void(seat_t, uint32_t, xdg_toplevel_resize_edge)> & on_resize()
start an interactive resize
void configure(uint32_t serial, bool post=true)
suggest a surface change
bool can_configure_bounds() const
Check whether the configure_bounds function is available with the currently bound version of the prot...
bool can_repositioned() const
Check whether the repositioned function is available with the currently bound version of the protocol...
crop and scale interface to a wl_surface
std::function< void(viewport_t, surface_t)> & on_get_viewport()
extend surface interface for crop and scale
std::function< void(xdg_positioner_gravity)> & on_set_gravity()
set child surface gravity
void configure_bounds(int32_t width, int32_t height, bool post=true)
recommended window geometry bounds
std::function< void()> & on_destroy()
destroy xdg_wm_base
std::function< void(int32_t, int32_t, int32_t, int32_t)> & on_set_anchor_rect()
set the anchor rectangle within the parent surface
std::function< void(uint32_t)> & on_ack_configure()
ack a configure event
void post_already_constructed(std::string const &msg)
Post error:
std::function< void(int32_t, int32_t)> & on_set_max_size()
set the maximum size
std::function< void(std::string)> & on_set_app_id()
set application ID
void ping(uint32_t serial, bool post=true)
check if the client is alive
std::function< void()> & on_destroy()
remove scaling and cropping from the surface
std::function< void()> & on_set_maximized()
maximize the window
void post_unconfigured_buffer(std::string const &msg)
Post error:
std::function< void(seat_t, uint32_t)> & on_move()
start an interactive move
void post_bad_size(std::string const &msg)
Post error: destination size is not integer.
std::function< void()> & on_destroy()
remove xdg_popup interface
static constexpr std::uint32_t repositioned_since_version
Minimum protocol version required for the repositioned function.
short-lived, popup surfaces for menus
std::function< void(xdg_toplevel_t)> & on_get_toplevel()
assign the xdg_toplevel surface role
void post_invalid_grab(std::string const &msg)
Post error: tried to grab after being mapped.
void close(bool post=true)
surface wants to be closed
std::function< void(xdg_positioner_anchor)> & on_set_anchor()
set anchor rectangle anchor
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
void post_not_the_topmost_popup(std::string const &msg)
Post error: the client tried to map or destroy a non-topmost popup.
std::function< void()> & on_destroy()
destroy the xdg_positioner object
std::function< void()> & on_destroy()
destroy the xdg_toplevel
std::function< void(xdg_toplevel_t)> & on_set_parent()
set the parent of this surface
void post_invalid_positioner(std::string const &msg)
Post error: the client provided an invalid positioner.
bitmask of flags in presented event
void post_not_constructed(std::string const &msg)
Post error:
desktop user interface surface base interface
void discarded(bool post=true)
the content update was not displayed
std::function< void(xdg_positioner_t, uint32_t)> & on_reposition()
recalculate the popup's location
void post_no_surface(std::string const &msg)
Post error: the wl_surface was destroyed.
std::function< void(xdg_positioner_t)> & on_create_positioner()
create a positioner object
void configure(int32_t x, int32_t y, int32_t width, int32_t height, bool post=true)
configure the popup surface
std::function< void(int32_t, int32_t)> & on_set_parent_size()
std::function< void(uint32_t)> & on_set_parent_configure()
set parent configure this is a response to
std::function< void()> & on_destroy()
unbind from the cropping and scaling interface
void post_defunct_surfaces(std::string const &msg)
Post error: xdg_wm_base was destroyed before children.
std::function< void(seat_t, uint32_t)> & on_grab()
make the popup take an explicit grab
void post_viewport_exists(std::string const &msg)
Post error: the surface already has a viewport object associated.
std::function< void(output_t)> & on_set_fullscreen()
set the window as fullscreen on an output
void post_out_of_buffer(std::string const &msg)
Post error: source rectangle extends outside of the content area.
presentation_feedback_t feedback(surface_t const &surface)
request presentation feedback information
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
presentation time feedback event
void post_invalid_popup_parent(std::string const &msg)
Post error: the client specified an invalid popup parent surface.
void post_invalid_input(std::string const &msg)
Post error: invalid input provided.
void post_bad_value(std::string const &msg)
Post error: negative or zero values in width or height.
std::function< void(xdg_positioner_constraint_adjustment)> & on_set_constraint_adjustment()
set the adjustment to be done when constrained
std::function< void()> & on_unset_maximized()
unmaximize the window
std::function< void()> & on_unset_fullscreen()
unset the window as fullscreen
std::function< void(int32_t, int32_t)> & on_set_size()
set the size of the to-be positioned rectangle