1 #include <cppurses/system/events/move_event.hpp> 2 3 #include <cppurses/painter/detail/screen_descriptor.hpp> 4 #include <cppurses/painter/detail/screen_mask.hpp> 5 #include <cppurses/painter/detail/screen_state.hpp> 6 #include <cppurses/system/event.hpp> 7 #include <cppurses/widget/point.hpp> 8 #include <cppurses/widget/widget.hpp> 9 10 namespace cppurses { 11 send() const12bool Move_event::send() const { 13 if (receiver_.x() != new_position_.x || receiver_.y() != new_position_.y) { 14 receiver_.screen_state().optimize.moved = true; 15 // Create and set move_mask in receiver_.screen_state() 16 receiver_.screen_state().optimize.move_mask = 17 detail::Screen_mask(receiver_, detail::Screen_mask::Outer); 18 receiver_.screen_state() 19 .tiles.clear(); // TODO remove this once opt impl. 20 const Point old_position{receiver_.x(), receiver_.y()}; 21 receiver_.set_x(new_position_.x); 22 receiver_.set_y(new_position_.y); 23 return receiver_.move_event(new_position_, old_position); 24 } 25 return true; 26 } 27 filter_send(Widget & filter) const28bool Move_event::filter_send(Widget& filter) const { 29 if (receiver_.x() != new_position_.x || receiver_.y() != new_position_.y) { 30 const Point old_position{receiver_.x(), receiver_.y()}; 31 return filter.move_event_filter(receiver_, new_position_, old_position); 32 } 33 return true; 34 } 35 36 } // namespace cppurses 37