@@ -1645,16 +1645,12 @@ namespace lvh::detail {
16451645 */
16461646 OperationStatus submit_button (const MouseEvent &event) {
16471647 const auto bit = hid_mouse_button_bit (event.button );
1648- if (!bit) {
1648+ if (!bit. has_value () ) {
16491649 return OperationStatus::success ();
16501650 }
16511651
1652- const auto mask = static_cast <std::uint8_t >(1U << *bit);
1653- if (event.pressed ) {
1654- buttons_ = static_cast <std::uint8_t >(buttons_ | mask);
1655- } else {
1656- buttons_ = static_cast <std::uint8_t >(buttons_ & ~mask);
1657- }
1652+ const auto mask = std::byte {1 } << *bit;
1653+ buttons_ = event.pressed ? (buttons_ | mask) : (buttons_ & ~mask);
16581654
16591655 return emit (0 , 0 , 0 , 0 );
16601656 }
@@ -1670,7 +1666,7 @@ namespace lvh::detail {
16701666 */
16711667 OperationStatus emit (std::int16_t x, std::int16_t y, std::int8_t wheel, std::int8_t pan) {
16721668 std::vector<std::uint8_t > report (mouse_input_report_size, 0U );
1673- report[0 ] = buttons_;
1669+ report[0 ] = std::to_integer<std:: uint8_t >( buttons_) ;
16741670 report[1 ] = static_cast <std::uint8_t >(static_cast <std::uint16_t >(x) & 0xFFU );
16751671 report[2 ] = static_cast <std::uint8_t >((static_cast <std::uint16_t >(x) >> 8U ) & 0xFFU );
16761672 report[3 ] = static_cast <std::uint8_t >(static_cast <std::uint16_t >(y) & 0xFFU );
@@ -1683,7 +1679,7 @@ namespace lvh::detail {
16831679 std::shared_ptr<WindowsBackendContext> context_;
16841680 std::shared_ptr<WindowsGamepadState> state_;
16851681 WindowsMouse fallback_;
1686- std::uint8_t buttons_ = 0U ;
1682+ std::byte buttons_ {} ;
16871683 int vertical_scroll_remainder_ = 0 ;
16881684 int horizontal_scroll_remainder_ = 0 ;
16891685 bool open_ = true ;
0 commit comments