35 lines
1.1 KiB
C++
35 lines
1.1 KiB
C++
#ifndef BWIDGETS_MOUSE_HANDLER_HPP_
|
|
#define BWIDGETS_MOUSE_HANDLER_HPP_
|
|
|
|
#include <functional>
|
|
|
|
#include <basic_widgets/w/feat/focus_handler.hpp>
|
|
|
|
struct SDL_MouseButtonEvent;
|
|
struct SDL_MouseMotionEvent;
|
|
|
|
namespace bwidgets::widget
|
|
{
|
|
class MouseHandler : public virtual FocusHandler
|
|
{
|
|
protected:
|
|
const SDL_Rect* _click_area = nullptr;
|
|
bool _is_hovered = false;
|
|
bool _is_pushed = false;
|
|
|
|
virtual void _handle_mouse_button(const SDL_MouseButtonEvent&,
|
|
const SDL_Rect&) = 0;
|
|
virtual void _handle_mouse_motion(const SDL_MouseMotionEvent&,
|
|
const SDL_Rect&) = 0;
|
|
|
|
public:
|
|
std::function<void (const SDL_MouseButtonEvent&)> click_handler = nullptr;
|
|
|
|
virtual void handle_mouse(const SDL_MouseButtonEvent&,
|
|
const SDL_Rect&) final;
|
|
virtual void handle_mouse(const SDL_MouseMotionEvent&,
|
|
const SDL_Rect&) final;
|
|
};
|
|
}
|
|
|
|
#endif
|