class UIng::Area::Handler

Overview

Drawing and input callbacks with closure support. Area retains the Handler and its Procs; native UserData points back to it. Keep captured native resources unfreed while callbacks use them. Direct LibUI callers must retain the Handler themselves.

handler = Area::Handler.new do draw { |area, params| puts "Drawing..." } key_event { |area, event| true } # Return true if handled end

Included Modules

Defined in:

uing/area/handler.cr

Constant Summary

SCROLL_CALLBACK = ->(ah : ::Pointer(LibUI::AreaHandler), area : ::Pointer(LibUI::Area), event : ::Pointer(LibUI::AreaScrollEvent)) : LibC::Int do begin handler = ::Box(Handler).unbox(ah.value.user_data) callback = handler.scroll_event_callback || (return 0) area_wrapper = ((ControlRegistry.lookup(area)).as?(Area)) || (Area.new(area, borrowed: true)) callback.call(area_wrapper, Area::ScrollEvent.new(event)) ? 1 : 0 rescue e UIng.handle_callback_error(e, "Area scroll_event") 0 end end

Constructors

Instance Method Summary

Macros inherited from module UIng::BlockConstructor

block_constructor block_constructor

Constructor Detail

def self.new(*args, &) #

[View source]
def self.new(*args, **kwargs, &) #

[View source]
def self.new #

ameba:disable Metrics/CyclomaticComplexity


[View source]

Instance Method Detail

def clear_drag_broken : Nil #

[View source]
def clear_draw : Nil #

[View source]
def clear_key_event : Nil #

[View source]
def clear_mouse_crossed : Nil #

[View source]
def clear_mouse_event : Nil #

[View source]
def clear_scroll_event : Nil #

[View source]
def drag_broken(&block : Area -> Nil) #

[View source]
def drag_broken(callback : Nil) : Nil #

[View source]
def draw(&block : Area, Area::Draw::Params -> Nil) #

[View source]
def draw(callback : Nil) : Nil #

[View source]
def key_event(&block : Area, Area::KeyEvent -> Bool) #

[View source]
def key_event(callback : Nil) : Nil #

[View source]
def mouse_crossed(&block : Area, Bool -> Nil) #

[View source]
def mouse_crossed(callback : Nil) : Nil #

[View source]
def mouse_event(&block : Area, Area::MouseEvent -> Nil) #

[View source]
def mouse_event(callback : Nil) : Nil #

[View source]
def scroll_event(&block : Area, Area::ScrollEvent -> Bool) #

Receives wheel and trackpad movement. Return true to consume it, or false to allow a scrolling Area to scroll normally.


[View source]
def scroll_event(callback : Nil) : Nil #

[View source]
def to_unsafe #

[View source]