Compare commits

..

1 Commits

Author SHA1 Message Date
Alexei Anoshenko 8fae202d75 Bug fixing 2025-07-23 18:52:00 +03:00
2 changed files with 20 additions and 3 deletions

19
view.go
View File

@ -311,7 +311,7 @@ func (view *viewData) getFunc(tag PropertyName) any {
case FocusEvent, LostFocusEvent: case FocusEvent, LostFocusEvent:
if listeners := getNoArgEventRawListeners[View](view, nil, tag); len(listeners) > 0 { if listeners := getNoArgEventRawListeners[View](view, nil, tag); len(listeners) > 0 {
return listeners
} }
case KeyDownEvent, KeyUpEvent: case KeyDownEvent, KeyUpEvent:
@ -354,6 +354,15 @@ func (view *viewData) getFunc(tag PropertyName) any {
return listeners return listeners
} }
case changeListeners:
if len(view.changeListener) > 0 {
result := map[PropertyName]any{}
for tag, listener := range view.changeListener {
result[tag] = listener.rawListener()
}
return result
}
default: default:
return viewStyleGet(view, tag) return viewStyleGet(view, tag)
} }
@ -1328,6 +1337,11 @@ func (view *viewData) handleCommand(self View, command PropertyName, data DataOb
func (view *viewData) SetChangeListener(tag PropertyName, listener any) bool { func (view *viewData) SetChangeListener(tag PropertyName, listener any) bool {
if listener == nil { if listener == nil {
delete(view.changeListener, tag) delete(view.changeListener, tag)
if len(view.changeListener) > 0 {
view.setRaw(changeListeners, view.changeListener)
} else {
view.setRaw(changeListeners, nil)
}
} else { } else {
switch listener := listener.(type) { switch listener := listener.(type) {
case func(): case func():
@ -1343,6 +1357,9 @@ func (view *viewData) SetChangeListener(tag PropertyName, listener any) bool {
view.changeListener[tag] = newOneArgListenerVE(listener) view.changeListener[tag] = newOneArgListenerVE(listener)
case string: case string:
if listener == "" {
return view.SetChangeListener(tag, nil)
}
view.changeListener[tag] = newOneArgListenerBinding[View, PropertyName](listener) view.changeListener[tag] = newOneArgListenerBinding[View, PropertyName](listener)
default: default:

View File

@ -935,7 +935,7 @@ func propertyValueToString(tag PropertyName, value any, indent string) string {
case []popupListener: case []popupListener:
return getPopupListenerBinding(value) return getPopupListenerBinding(value)
case map[PropertyName]oneArgListener[View, PropertyName]: case map[PropertyName]any:
if len(value) == 0 { if len(value) == 0 {
return "" return ""
} }
@ -946,7 +946,7 @@ func propertyValueToString(tag PropertyName, value any, indent string) string {
indent2 := indent + "\t" indent2 := indent + "\t"
buffer.WriteString("_{\n") buffer.WriteString("_{\n")
for key, listener := range value { for key, listener := range value {
if text, ok := listener.rawListener().(string); ok && text != "" { if text, ok := listener.(string); ok && text != "" {
buffer.WriteString(indent2) buffer.WriteString(indent2)
writeString(buffer, string(key)) writeString(buffer, string(key))
buffer.WriteString(" = ") buffer.WriteString(" = ")