diff options
Diffstat (limited to 'lib/efl')
| -rw-r--r-- | lib/efl/elementary.rb | 19 | ||||
| -rw-r--r-- | lib/efl/ffi.rb | 1 | 
2 files changed, 8 insertions, 12 deletions
diff --git a/lib/efl/elementary.rb b/lib/efl/elementary.rb index ba263a8..cf06717 100644 --- a/lib/efl/elementary.rb +++ b/lib/efl/elementary.rb @@ -19,26 +19,21 @@ module Efl              end          end          # -        class ElmWin < Efl::Evas::EvasObject -            attr_reader :evas_object +        class ElmWin +            include Efl::Helper +            @func_prefixes = [ 'elm_win_', 'elm_' ].freeze              def initialize parent, title, type=:elm_win_basic                  @evas_object = Evas::EvasObject.new Efl::API.elm_win_add parent, title, type -                yield self if block_given? +                @ptr = @evas_object.ptr +                yield self,@evas_object if block_given?              end              def add e -                eo = Evas::EvasObject.new Efl::API.send "elm_#{e}_add", @evas_object.ptr +                eo = Evas::EvasObject.new Efl::API.send "elm_#{e}_add", @ptr                  yield eo if block_given?                  eo              end              def smart_callback_add event_str, cb, data=FFI::MemoryPointer::NULL -                Efl::API.evas_object_smart_callback_add @evas_object.ptr, event_str, cb, data -            end -            def method_missing m, *args, &block -                [ 'elm_win_', 'elm_' ].each do |s| -                    sym = s+m.to_s -                    return Efl::API.send( sym, @evas_object.ptr, *args, &block ) if Efl::API.respond_to? sym -                end -                Efl::API.send m +                Efl::API.evas_object_smart_callback_add @ptr, event_str, cb, data              end          end          # diff --git a/lib/efl/ffi.rb b/lib/efl/ffi.rb index 38bf16b..9425fd3 100644 --- a/lib/efl/ffi.rb +++ b/lib/efl/ffi.rb @@ -41,6 +41,7 @@ module Efl          def self.included m              m.class_eval "def ptr; @ptr; end"              m.class_eval "def self.func_prefixes; @func_prefixes; end" +            m.class_eval "def self.inherited sub; sub.class_eval 'def self.func_prefixes; superclass.func_prefixes; end'; end"          end          def method_missing m, *args, &block              self.class.func_prefixes.each do |p|  | 
