diff options
| author | Stijn Buys <ingar@osirion.org> | 2015-01-06 18:51:37 +0000 | 
|---|---|---|
| committer | Stijn Buys <ingar@osirion.org> | 2015-01-06 18:51:37 +0000 | 
| commit | 72ee43e9470c6fdbc6ed7ff92b85dfa5062c5762 (patch) | |
| tree | 6474fa59066d5212dcd40e3d76652dce35565280 /src/ui/widget.cc | |
| parent | 57d958d40af061e83aa99ca12e375e5345836ecd (diff) | |
Added separate event handlers for mouse button clicks and mouse wheel  movement.
Diffstat (limited to 'src/ui/widget.cc')
| -rw-r--r-- | src/ui/widget.cc | 56 | 
1 files changed, 52 insertions, 4 deletions
diff --git a/src/ui/widget.cc b/src/ui/widget.cc index e931147..982b792 100644 --- a/src/ui/widget.cc +++ b/src/ui/widget.cc @@ -438,7 +438,8 @@ bool Widget::event_key(const bool pressed, const int key, const unsigned int mod  {  	bool handled = false; -	if (enabled()) { +	if (enabled()) +	{  		if (pressed) {  			handled = on_keypress(key, modifier);  		} else { @@ -452,19 +453,51 @@ bool Widget::event_key(const bool pressed, const int key, const unsigned int mod  	return handled;  } -bool Widget::event_mouse(const math::Vector2f &cursor) +void Widget::event_mouse(const math::Vector2f & cursor)  {  	if (disabled()) -		return false; +		return;  	math::Vector2f local_cursor = to_local_coords(cursor); -	bool handled = false;  	if (root()->mouse_focus() != this) {  		on_mouseover(local_cursor);  	}  	on_mousemove(local_cursor); +} + +bool Widget::event_mouse_button(const bool pressed, const unsigned int button) +{	 +	bool handled = false; + +	if (enabled()) +	{ +		if (pressed) { +			handled = on_mousepress(button); +		} else { +			handled = on_mouserelease(button); +		} +	} +	 +	if (!handled && parent()) +		handled = parent()->event_mouse_button(pressed, button); + +	return handled; +} + +bool Widget::event_mouse_wheel(const math::Vector2f & direction) +{	 +	bool handled = false; + +	if (enabled()) +	{ +		handled = on_mousewheel(direction); +	} +	 +	if (!handled && parent()) +		handled = parent()->event_mouse_wheel(direction); +  	return handled;  } @@ -512,6 +545,21 @@ void Widget::on_mousemove(const math::Vector2f &cursor)  	return;  } +bool Widget::on_mousepress(const unsigned int button) +{ +	return false; +} + +bool Widget::on_mouserelease(const unsigned int button) +{ +	return false; +} + +bool Widget::on_mousewheel(const math::Vector2f & direction) +{ +	return false; +} +  bool Widget::on_keypress(const int key, const unsigned int modifier)  {  	return false;  | 
