lib/glimmer/swt/custom/shape.rb in glimmer-dsl-swt-4.18.7.3 vs lib/glimmer/swt/custom/shape.rb in glimmer-dsl-swt-4.18.7.4
- old
+ new
@@ -92,12 +92,14 @@
end.uniq.compact.to_a
end
def arg_options(args, extract: false)
arg_options_method = extract ? :pop : :last
- options = args.send(arg_options_method) if args.last.is_a?(Hash)
- options.nil? ? {} : options.symbolize_keys
+ options = args.send(arg_options_method).symbolize_keys if args.last.is_a?(Hash)
+ # normalize :filled option as an alias to :fill
+# options[:fill] = options.delete(:filled) if options&.keys&.include?(:filled)
+ options.nil? ? {} : options
end
def method_name(keyword, method_arg_options)
keyword = keyword.to_s
method_arg_options = method_arg_options.select {|key, value| %w[fill gradient round].include?(key.to_s)}
@@ -398,11 +400,11 @@
end
def amend_method_name_options_based_on_properties!
@original_method_name = @method_name
return if @name == 'point'
- if @name != 'text' && @name != 'string' && has_some_background? && !has_some_foreground?
+ if (@name != 'text' && @name != 'string' && has_some_background? && !has_some_foreground?) || (@name == 'path' && has_some_background?)
@options[:fill] = true
elsif !has_some_background? && has_some_foreground?
@options[:fill] = false
elsif @name == 'rectangle' && has_some_background? && has_some_foreground?
@options[:fill] = true
@@ -472,10 +474,12 @@
self.send(ruby_attribute_setter_name, *args)
else
# TODO consider this optimization of preconverting args (removing conversion from other methods) to reject equal args
args = apply_property_arg_conversions(ruby_attribute_getter_name, args)
return if @properties[ruby_attribute_getter_name] == args
+ new_property = !@properties.keys.include?(ruby_attribute_getter_name)
@properties[ruby_attribute_getter_name] = args
+ amend_method_name_options_based_on_properties! if @content_added && new_property
property_change = true
end
if @content_added && perform_redraw && !drawable.is_disposed
redrawn = false
unless property_change