Class: XlibObj::Window::EventHandler

Inherits:
Object
  • Object
show all
Defined in:
lib/window/event_handler.rb

Class Method Summary collapse

Instance Method Summary collapse

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

#destroyObject



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