table of contents
Prima::Widget::MouseScroller(3) | User Contributed Perl Documentation | Prima::Widget::MouseScroller(3) |
NAME¶
Prima::Widget::MouseScroller - auto-repeating mouse events
DESCRIPTION¶
Implements routines for emulation of auto repeating mouse events. A code inside "MouseMove" callback can be implemented by the following scheme:
if ( mouse_pointer_inside_the_scrollable_area) { $self-> scroll_timer_stop; } else { $self-> scroll_timer_start unless $self-> scroll_timer_active; return unless $self-> scroll_timer_semaphore; $self-> scroll_timer_semaphore( 0); }
The class uses a semaphore "{mouseTransaction}", which should be set to non-zero if a widget is in mouse capture state, and set to zero or "undef" otherwise.
The class starts an internal timer, which sets a semaphore and calls "MouseMove" notification when triggered. The timer is assigned the timeouts, returned by "Prima::Application::get_scroll_rate" ( see "get_scroll_rate" in Prima::Application ).
Methods¶
- scroll_timer_active
- Returns a boolean value indicating if the internal timer is started.
- scroll_timer_semaphore [ VALUE ]
- A semaphore, set to 1 when the internal timer was triggered. It is advisable to check the semaphore state to discern a timer-generated event from the real mouse movement. If VALUE is specified, it is assigned to the semaphore.
- scroll_timer_start
- Starts the internal timer.
- scroll_timer_stop
- Stops the internal timer.
AUTHOR¶
Dmitry Karasik, <dmitry@karasik.eu.org>.
SEE ALSO¶
Prima, Prima::Widget, Prima::ScrollBar.
2024-02-01 | perl v5.38.2 |