Sha256: 3030af3d630d5142788802c6f4d66ec8e318b554ac6ff0fb5f2b39e9ecabb04f
Contents?: true
Size: 1.72 KB
Versions: 1
Compression:
Stored size: 1.72 KB
Contents
class Shoes module Swt class MouseMoveListener include ::Swt::Events::MouseMoveListener def initialize app @app = app end def mouse_move(mouse_event) @app.dsl.mouse_pos = [mouse_event.x, mouse_event.y] @app.dsl.mouse_motion.each{|blk| eval_move_block blk, mouse_event} mouse_shape_control mouse_event mouse_leave_control mouse_event mouse_hover_control mouse_event end private def eval_move_block(blk, event) blk.call event.x, event.y end def mouse_shape_control(mouse_event) cursor = if cursor_over_clickable_element? mouse_event ::Swt::SWT::CURSOR_HAND else ::Swt::SWT::CURSOR_ARROW end @app.shell.setCursor Shoes.display.getSystemCursor(cursor) end def mouse_leave_control(mouse_event) @app.dsl.mouse_hover_controls.each do |element| if !mouse_on?(element, mouse_event) and element.hovered? element.mouse_left element.leave_proc.call element if element.leave_proc end end end def mouse_hover_control(mouse_event) @app.dsl.mouse_hover_controls.each do |element| if mouse_on?(element, mouse_event) and !element.hovered? element.mouse_hovered element.hover_proc.call element if element.hover_proc end end end def mouse_on?(element, mouse_event) element.in_bounds? mouse_event.x, mouse_event.y end def cursor_over_clickable_element?(mouse_event) @app.clickable_elements.any? do |element| mouse_on? element, mouse_event end end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
shoes-4.0.0.pre1 | lib/shoes/swt/mouse_move_listener.rb |