From 770222167252011fc83bb30e657c0c0b184fed67 Mon Sep 17 00:00:00 2001 From: Alexei Anoshenko <2277098+anoshenko@users.noreply.github.com> Date: Sun, 13 Jul 2025 17:22:55 +0300 Subject: [PATCH] Bug fixing --- listView.go | 5 +++++ properties.go | 15 ++++++++++++++- tableViewUtils.go | 5 +++++ viewStyle.go | 44 +++++++++++++++++++------------------------- 4 files changed, 43 insertions(+), 26 deletions(-) diff --git a/listView.go b/listView.go index 9f82aee..ebec4da 100644 --- a/listView.go +++ b/listView.go @@ -421,6 +421,11 @@ func (listView *listViewData) getAdapter() ListAdapter { return adapter } } + if obj := listView.binding(); obj != nil { + if adapter, ok := obj.(ListAdapter); ok { + return adapter + } + } return nil } diff --git a/properties.go b/properties.go index 2595a44..b3a55e2 100644 --- a/properties.go +++ b/properties.go @@ -143,7 +143,20 @@ func parseProperties(properties Properties, object DataObject) { properties.Set(PropertyName(node.Tag()), node.Object()) case ArrayNode: - properties.Set(PropertyName(node.Tag()), node.Array()) + switch node.ArraySize() { + case 0: + // do nothing + + case 1: + if v := node.ArrayElement(0); v.IsObject() { + properties.Set(PropertyName(node.Tag()), v.Object()) + } else { + properties.Set(PropertyName(node.Tag()), v.Value()) + } + + default: + properties.Set(PropertyName(node.Tag()), node.Array()) + } } } } diff --git a/tableViewUtils.go b/tableViewUtils.go index 3d1da55..e2b0b94 100644 --- a/tableViewUtils.go +++ b/tableViewUtils.go @@ -36,6 +36,11 @@ func GetTableContent(view View, subviewID ...string) TableAdapter { return adapter } } + if obj := view.binding(); obj != nil { + if adapter, ok := obj.(TableAdapter); ok { + return adapter + } + } } return nil diff --git a/viewStyle.go b/viewStyle.go index de5cec3..3010dd3 100644 --- a/viewStyle.go +++ b/viewStyle.go @@ -604,7 +604,7 @@ func propertyValueToString(tag PropertyName, value any, indent string) string { case []string: if len(value) == 0 { - return "[]" + return "" } size := 0 @@ -699,7 +699,7 @@ func propertyValueToString(tag PropertyName, value any, indent string) string { case []View: size := len(value) if size == 0 { - return "[]" + return "" } buffer := allocStringBuilder() @@ -724,35 +724,29 @@ func propertyValueToString(tag PropertyName, value any, indent string) string { case []any: size := len(value) if size == 0 { - return "[]" + return "" } - buffer := allocStringBuilder() - defer freeStringBuilder(buffer) - - if size == 1 { - return propertyValueToString(tag, value[0], indent) - } else { - buffer.WriteString("[ ") - comma := false - for _, v := range value { - text := propertyValueToString(tag, v, indent) - if text != "" { - if comma { - buffer.WriteString(", ") - } - buffer.WriteString(text) - comma = true - } + text := make([]string, 0, size) + for _, v := range value { + if txt := propertyValueToString(tag, v, indent); txt != "" { + text = append(text, txt) } - buffer.WriteString(" ]") } - return buffer.String() + + switch len(text) { + case 0: + return "" + case 1: + return text[0] + default: + return propertyValueToString(tag, text, indent) + } case []BackgroundElement: size := len(value) if size == 0 { - return "[]" + return "" } buffer := allocStringBuilder() @@ -805,7 +799,7 @@ func propertyValueToString(tag PropertyName, value any, indent string) string { case map[PropertyName]AnimationProperty: size := len(value) if size == 0 { - return "[]" + return "" } buffer := allocStringBuilder() @@ -839,7 +833,7 @@ func propertyValueToString(tag PropertyName, value any, indent string) string { case []AnimationProperty: size := len(value) if size == 0 { - return "[]" + return "" } buffer := allocStringBuilder()