diff options
author | crupest <crupest@outlook.com> | 2018-09-15 23:28:06 +0800 |
---|---|---|
committer | crupest <crupest@outlook.com> | 2018-09-15 23:28:06 +0800 |
commit | 683419f2856d348436ca64cfd4b3abbfc73cda89 (patch) | |
tree | eed6f7b324ca2a4a6b7cdf7879233eb2eacedf2c /CruUI/ui/control.h | |
parent | 8248001b2506a866b6be0e22af36f8399a595da2 (diff) | |
download | cru-683419f2856d348436ca64cfd4b3abbfc73cda89.tar.gz cru-683419f2856d348436ca64cfd4b3abbfc73cda89.tar.bz2 cru-683419f2856d348436ca64cfd4b3abbfc73cda89.zip |
...
Diffstat (limited to 'CruUI/ui/control.h')
-rw-r--r-- | CruUI/ui/control.h | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/CruUI/ui/control.h b/CruUI/ui/control.h index 126c92d9..b889fcd5 100644 --- a/CruUI/ui/control.h +++ b/CruUI/ui/control.h @@ -2,6 +2,7 @@ #include "system_headers.h" #include <optional> +#include <unordered_map> #include "base.h" #include "ui_base.h" @@ -91,7 +92,7 @@ namespace cru return window_; } - //Traverse the tree rooted the control. + //Traverse the tree rooted the control including itself. void TraverseDescendants(Action<Control*>&& predicate); //*************** region: position and size *************** @@ -177,6 +178,8 @@ namespace cru events::MouseButtonEvent mouse_down_event; //Raised when a mouse button is released in the control. events::MouseButtonEvent mouse_up_event; + //Raised when a mouse button is pressed in the control and released in the control with mouse not leaving it between two operations. + events::MouseButtonEvent mouse_click_event; events::FocusChangeEvent get_focus_event; events::FocusChangeEvent lose_focus_event; @@ -223,19 +226,21 @@ namespace cru virtual void OnMouseMove(events::MouseEventArgs& args); virtual void OnMouseDown(events::MouseButtonEventArgs& args); virtual void OnMouseUp(events::MouseButtonEventArgs& args); + virtual void OnMouseClick(events::MouseButtonEventArgs& args); virtual void OnMouseEnterCore(events::MouseEventArgs& args); virtual void OnMouseLeaveCore(events::MouseEventArgs& args); virtual void OnMouseMoveCore(events::MouseEventArgs& args); virtual void OnMouseDownCore(events::MouseButtonEventArgs& args); virtual void OnMouseUpCore(events::MouseButtonEventArgs& args); + virtual void OnMouseClickCore(events::MouseButtonEventArgs& args); void OnMouseEnterInternal(events::MouseEventArgs& args); void OnMouseLeaveInternal(events::MouseEventArgs& args); void OnMouseMoveInternal(events::MouseEventArgs& args); void OnMouseDownInternal(events::MouseButtonEventArgs& args); void OnMouseUpInternal(events::MouseButtonEventArgs& args); - + void OnMouseClickInternal(events::MouseButtonEventArgs& args); //*************** region: focus event *************** virtual void OnGetFocus(events::FocusChangeEventArgs& args); @@ -287,6 +292,8 @@ namespace cru bool is_mouse_inside_; + std::unordered_map<MouseButton, bool> is_mouse_leave_; // used for clicking determination + std::shared_ptr<BasicLayoutParams> layout_params_; Size desired_size_; }; |