aboutsummaryrefslogtreecommitdiff
path: root/include/cru/ui/window.hpp
diff options
context:
space:
mode:
author杨宇千 <crupest@outlook.com>2019-08-11 23:27:16 +0800
committer杨宇千 <crupest@outlook.com>2019-08-11 23:27:16 +0800
commit86e776eaebf7c45a269001ca7da0dfafba069d0a (patch)
tree64c0544d9839562a6fc6d08ea00682a94c5d222b /include/cru/ui/window.hpp
parent99a322a6badf5b6d95be4944e80d92fc1cb2589e (diff)
downloadcru-86e776eaebf7c45a269001ca7da0dfafba069d0a.tar.gz
cru-86e776eaebf7c45a269001ca7da0dfafba069d0a.tar.bz2
cru-86e776eaebf7c45a269001ca7da0dfafba069d0a.zip
...
Diffstat (limited to 'include/cru/ui/window.hpp')
-rw-r--r--include/cru/ui/window.hpp11
1 files changed, 11 insertions, 0 deletions
diff --git a/include/cru/ui/window.hpp b/include/cru/ui/window.hpp
index 197198d2..ee6d2176 100644
--- a/include/cru/ui/window.hpp
+++ b/include/cru/ui/window.hpp
@@ -60,6 +60,14 @@ class Window final : public ContentControl, public SelfResolvable<Window> {
// Get the control that has focus.
Control* GetFocusControl();
+ //*************** region: focus ***************
+
+ // Pass nullptr to release capture.
+ bool CaptureMouseFor(Control* control);
+
+ // Return null if not captured.
+ Control* GetMouseCaptureControl();
+
protected:
void OnChildChanged(Control* old_child, Control* new_child) override;
@@ -86,6 +94,7 @@ class Window final : public ContentControl, public SelfResolvable<Window> {
//*************** region: event dispatcher helper ***************
+ // dispatch enter is useful when mouse is captured.
void DispatchMouseHoverControlChangeEvent(Control* old_control,
Control* new_control,
const Point& point);
@@ -100,6 +109,8 @@ class Window final : public ContentControl, public SelfResolvable<Window> {
Control* focus_control_; // "focus_control_" can't be nullptr
+ Control* mouse_captured_control_;
+
bool need_layout_ = false;
};
} // namespace cru::ui