mirror of
https://github.com/ArthurSonzogni/FTXUI.git
synced 2024-11-29 14:45:53 +08:00
c31aecf2ed
This fixes: https://github.com/ArthurSonzogni/FTXUI/issues/773 Dragging the mouse with the left button pressed now avoids activating multiple checkboxes. Add support for detecting mouse press transition. Added: ```cpp // The previous mouse event. Mouse Mouse::previous; // Return whether the mouse transitionned from: // released to pressed => IsPressed() // pressed to pressed => IsHeld() // pressed to released => IsReleased() bool Mouse::IsPressed(Button button) const; bool Mouse::IsHeld(Button button) const; bool Mouse::IsReleased(Button button) const; ``` A couple of components are now activated when the mouse is pressed, as opposed to released. Co-authored-by: ArthurSonzogni <sonzogniarthur@gmail.com>
53 lines
1.2 KiB
C++
53 lines
1.2 KiB
C++
// Copyright 2020 Arthur Sonzogni. All rights reserved.
|
|
// Use of this source code is governed by the MIT license that can be found in
|
|
// the LICENSE file.
|
|
#ifndef FTXUI_COMPONENT_MOUSE_HPP
|
|
#define FTXUI_COMPONENT_MOUSE_HPP
|
|
namespace ftxui {
|
|
|
|
/// @brief A mouse event. It contains the coordinate of the mouse, the button
|
|
/// pressed and the modifier (shift, ctrl, meta).
|
|
/// @ingroup component
|
|
struct Mouse {
|
|
enum Button {
|
|
Left = 0,
|
|
Middle = 1,
|
|
Right = 2,
|
|
None = 3,
|
|
WheelUp = 4,
|
|
WheelDown = 5,
|
|
};
|
|
|
|
enum Motion {
|
|
Released = 0,
|
|
Pressed = 1,
|
|
};
|
|
|
|
// Utility function to check the variations of the mouse state.
|
|
bool IsPressed(Button btn = Left) const; // Released => Pressed.
|
|
bool IsHeld(Button btn = Left) const; // Pressed => Pressed.
|
|
bool IsReleased(Button btn = Left) const; // Pressed => Released.
|
|
|
|
// Button
|
|
Button button = Button::None;
|
|
|
|
// Motion
|
|
Motion motion = Motion::Pressed;
|
|
|
|
// Modifiers:
|
|
bool shift = false;
|
|
bool meta = false;
|
|
bool control = false;
|
|
|
|
// Coordinates:
|
|
int x = 0;
|
|
int y = 0;
|
|
|
|
// Previous mouse event, if any.
|
|
Mouse* previous = nullptr;
|
|
};
|
|
|
|
} // namespace ftxui
|
|
|
|
#endif /* end of include guard: FTXUI_COMPONENT_MOUSE_HPP */
|