Class: XlibObj::Window::EventHandler
- Inherits:
-
Object
- Object
- XlibObj::Window::EventHandler
- Defined in:
- lib/window/event_handler.rb
Class Method Summary collapse
Instance Method Summary collapse
- #destroy ⇒ Object
- #handle(event) ⇒ Object
-
#initialize(display, window_id) ⇒ EventHandler
constructor
A new instance of EventHandler.
- #off(mask, type, handler = nil) ⇒ Object
- #on(mask, event, &handler) ⇒ Object
Constructor Details
#initialize(display, window_id) ⇒ EventHandler
Returns a new instance of EventHandler.
24 25 26 27 28 29 30 |
# File 'lib/window/event_handler.rb', line 24 def initialize(display, window_id) @display = display @window_id = window_id @event_handlers = {} @event_mask = 0 @rr_event_mask = 0 end |
Class Method Details
.remove(display, window_id) ⇒ Object
19 20 21 |
# File 'lib/window/event_handler.rb', line 19 def remove(display, window_id) @handlers[display].delete(window_id) if @handlers and @handlers[display] end |
.singleton(display, window_id) ⇒ Object
13 14 15 16 17 |
# File 'lib/window/event_handler.rb', line 13 def singleton(display, window_id) @handlers ||= {} @handlers[display] ||= {} @handlers[display][window_id] ||= new(display, window_id) end |
Instance Method Details
#destroy ⇒ Object
53 54 55 |
# File 'lib/window/event_handler.rb', line 53 def destroy self.class.remove(@display, @window_id) end |
#handle(event) ⇒ Object
42 43 44 45 46 47 48 49 50 51 |
# File 'lib/window/event_handler.rb', line 42 def handle(event) if @event_handlers[event.name] @event_handlers[event.name].each do |_, handlers| handlers.each{ |handler| handler.call(event) } end true else false end end |
#off(mask, type, handler = nil) ⇒ Object
37 38 39 40 |
# File 'lib/window/event_handler.rb', line 37 def off(mask, type, handler = nil) remove_event_handler(mask, type, handler) remove_event_mask(mask) end |
#on(mask, event, &handler) ⇒ Object
32 33 34 35 |
# File 'lib/window/event_handler.rb', line 32 def on(mask, event, &handler) add_event_mask(mask) add_event_handler(mask, event, &handler) end |