mirror of https://github.com/anoshenko/rui.git
Bug fixing
This commit is contained in:
parent
7cec6e5736
commit
ff8f6f30f2
12
checkbox.go
12
checkbox.go
|
@ -49,6 +49,7 @@ func (button *checkboxData) init(session Session) {
|
|||
button.viewsContainerData.init(session)
|
||||
button.tag = "Checkbox"
|
||||
button.systemClass = "ruiGridLayout ruiCheckbox"
|
||||
button.get = button.getFunc
|
||||
button.set = button.setFunc
|
||||
button.remove = button.removeFunc
|
||||
button.changed = button.propertyChanged
|
||||
|
@ -99,6 +100,17 @@ func (button *checkboxData) propertyChanged(tag PropertyName) {
|
|||
}
|
||||
}
|
||||
|
||||
func (button *checkboxData) getFunc(tag PropertyName) any {
|
||||
switch tag {
|
||||
case CheckboxChangedEvent:
|
||||
if listeners := getOneArgEventRawListeners[Checkbox, bool](button, nil, tag); len(listeners) > 0 {
|
||||
return listeners
|
||||
}
|
||||
return nil
|
||||
}
|
||||
return button.viewData.getFunc(tag)
|
||||
}
|
||||
|
||||
func (button *checkboxData) setFunc(tag PropertyName, value any) []PropertyName {
|
||||
switch tag {
|
||||
case ClickEvent:
|
||||
|
|
|
@ -66,6 +66,7 @@ func (picker *colorPickerData) init(session Session) {
|
|||
picker.hasHtmlDisabled = true
|
||||
picker.properties[Padding] = Px(0)
|
||||
picker.normalize = normalizeColorPickerTag
|
||||
picker.get = picker.getFunc
|
||||
picker.set = picker.setFunc
|
||||
picker.changed = picker.propertyChanged
|
||||
}
|
||||
|
@ -80,6 +81,17 @@ func normalizeColorPickerTag(tag PropertyName) PropertyName {
|
|||
return normalizeDataListTag(tag)
|
||||
}
|
||||
|
||||
func (picker *colorPickerData) getFunc(tag PropertyName) any {
|
||||
switch tag {
|
||||
case ColorChangedEvent:
|
||||
if listeners := getTwoArgEventRawListeners[ColorPicker, Color](picker, nil, tag); len(listeners) > 0 {
|
||||
return listeners
|
||||
}
|
||||
return nil
|
||||
}
|
||||
return picker.viewData.getFunc(tag)
|
||||
}
|
||||
|
||||
func (picker *colorPickerData) setFunc(tag PropertyName, value any) []PropertyName {
|
||||
switch tag {
|
||||
case ColorChangedEvent:
|
||||
|
|
|
@ -139,6 +139,7 @@ func (picker *datePickerData) init(session Session) {
|
|||
picker.hasHtmlDisabled = true
|
||||
picker.normalize = normalizeDatePickerTag
|
||||
picker.set = picker.setFunc
|
||||
picker.get = picker.getFunc
|
||||
picker.changed = picker.propertyChanged
|
||||
}
|
||||
|
||||
|
@ -198,6 +199,17 @@ func stringToDate(value string) (time.Time, bool) {
|
|||
return time.Now(), false
|
||||
}
|
||||
|
||||
func (picker *datePickerData) getFunc(tag PropertyName) any {
|
||||
switch tag {
|
||||
case DateChangedEvent:
|
||||
if listeners := getTwoArgEventRawListeners[DatePicker, time.Time](picker, nil, tag); len(listeners) > 0 {
|
||||
return listeners
|
||||
}
|
||||
return nil
|
||||
}
|
||||
return picker.viewData.getFunc(tag)
|
||||
}
|
||||
|
||||
func (picker *datePickerData) setFunc(tag PropertyName, value any) []PropertyName {
|
||||
|
||||
setDateValue := func(tag PropertyName) []PropertyName {
|
||||
|
|
|
@ -51,6 +51,7 @@ func (list *dropDownListData) init(session Session) {
|
|||
list.tag = "DropDownList"
|
||||
list.hasHtmlDisabled = true
|
||||
list.normalize = normalizeDropDownListTag
|
||||
list.get = list.getFunc
|
||||
list.set = list.setFunc
|
||||
list.changed = list.propertyChanged
|
||||
}
|
||||
|
@ -67,6 +68,17 @@ func normalizeDropDownListTag(tag PropertyName) PropertyName {
|
|||
return tag
|
||||
}
|
||||
|
||||
func (list *dropDownListData) getFunc(tag PropertyName) any {
|
||||
switch tag {
|
||||
case DropDownEvent:
|
||||
if listeners := getTwoArgEventRawListeners[DropDownList, int](list, nil, tag); len(listeners) > 0 {
|
||||
return listeners
|
||||
}
|
||||
return nil
|
||||
}
|
||||
return list.viewData.getFunc(tag)
|
||||
}
|
||||
|
||||
func (list *dropDownListData) setFunc(tag PropertyName, value any) []PropertyName {
|
||||
switch tag {
|
||||
case Items:
|
||||
|
|
12
editView.go
12
editView.go
|
@ -121,6 +121,7 @@ func (edit *editViewData) init(session Session) {
|
|||
edit.hasHtmlDisabled = true
|
||||
edit.tag = "EditView"
|
||||
edit.normalize = normalizeEditViewTag
|
||||
edit.get = edit.getFunc
|
||||
edit.set = edit.setFunc
|
||||
edit.changed = edit.propertyChanged
|
||||
}
|
||||
|
@ -148,6 +149,17 @@ func normalizeEditViewTag(tag PropertyName) PropertyName {
|
|||
return normalizeDataListTag(tag)
|
||||
}
|
||||
|
||||
func (edit *editViewData) getFunc(tag PropertyName) any {
|
||||
switch tag {
|
||||
case EditTextChangedEvent:
|
||||
if listeners := getTwoArgEventRawListeners[EditView, string](edit, nil, tag); len(listeners) > 0 {
|
||||
return listeners
|
||||
}
|
||||
return nil
|
||||
}
|
||||
return edit.viewData.getFunc(tag)
|
||||
}
|
||||
|
||||
func (edit *editViewData) setFunc(tag PropertyName, value any) []PropertyName {
|
||||
switch tag {
|
||||
case Text:
|
||||
|
|
|
@ -233,7 +233,7 @@ func setNoArgEventListener[V View](view View, tag PropertyName, value any) []Pro
|
|||
|
||||
func getNoArgEventListeners[V View](view View, subviewID []string, tag PropertyName) []noArgListener[V] {
|
||||
if view = getSubview(view, subviewID); view != nil {
|
||||
if value := view.Get(tag); value != nil {
|
||||
if value := view.getRaw(tag); value != nil {
|
||||
if result, ok := value.([]noArgListener[V]); ok {
|
||||
return result
|
||||
}
|
||||
|
|
|
@ -242,7 +242,7 @@ func setOneArgEventListener[V View, T any](view View, tag PropertyName, value an
|
|||
|
||||
func getOneArgEventListeners[V View, E any](view View, subviewID []string, tag PropertyName) []oneArgListener[V, E] {
|
||||
if view = getSubview(view, subviewID); view != nil {
|
||||
if value := view.Get(tag); value != nil {
|
||||
if value := view.getRaw(tag); value != nil {
|
||||
if result, ok := value.([]oneArgListener[V, E]); ok {
|
||||
return result
|
||||
}
|
||||
|
|
|
@ -316,7 +316,7 @@ func setTwoArgEventListener[V View, T any](view View, tag PropertyName, value an
|
|||
|
||||
func getTwoArgEventListeners[V View, E any](view View, subviewID []string, tag PropertyName) []twoArgListener[V, E] {
|
||||
if view = getSubview(view, subviewID); view != nil {
|
||||
if value := view.Get(tag); value != nil {
|
||||
if value := view.getRaw(tag); value != nil {
|
||||
if result, ok := value.([]twoArgListener[V, E]); ok {
|
||||
return result
|
||||
}
|
||||
|
|
|
@ -131,6 +131,7 @@ func (picker *filePickerData) init(session Session) {
|
|||
picker.hasHtmlDisabled = true
|
||||
picker.files = []FileInfo{}
|
||||
//picker.loader = map[int]func(FileInfo, []byte){}
|
||||
picker.get = picker.getFunc
|
||||
picker.set = picker.setFunc
|
||||
picker.changed = picker.propertyChanged
|
||||
|
||||
|
@ -165,6 +166,17 @@ func (picker *filePickerData) LoadFile(file FileInfo, result func(FileInfo, []by
|
|||
}
|
||||
}
|
||||
|
||||
func (picker *filePickerData) getFunc(tag PropertyName) any {
|
||||
switch tag {
|
||||
case FileSelectedEvent:
|
||||
if listeners := getOneArgEventRawListeners[FilePicker, []FileInfo](picker, nil, tag); len(listeners) > 0 {
|
||||
return listeners
|
||||
}
|
||||
return nil
|
||||
}
|
||||
return picker.viewData.getFunc(tag)
|
||||
}
|
||||
|
||||
func (picker *filePickerData) setFunc(tag PropertyName, value any) []PropertyName {
|
||||
|
||||
switch tag {
|
||||
|
|
12
imageView.go
12
imageView.go
|
@ -97,6 +97,7 @@ func (imageView *imageViewData) init(session Session) {
|
|||
imageView.tag = "ImageView"
|
||||
imageView.systemClass = "ruiImageView"
|
||||
imageView.normalize = normalizeImageViewTag
|
||||
imageView.get = imageView.getFunc
|
||||
imageView.set = imageView.setFunc
|
||||
imageView.changed = imageView.propertyChanged
|
||||
}
|
||||
|
@ -122,6 +123,17 @@ func normalizeImageViewTag(tag PropertyName) PropertyName {
|
|||
return tag
|
||||
}
|
||||
|
||||
func (imageView *imageViewData) getFunc(tag PropertyName) any {
|
||||
switch tag {
|
||||
case LoadedEvent, ErrorEvent:
|
||||
if listeners := getNoArgEventRawListeners[ImageView](imageView, nil, tag); len(listeners) > 0 {
|
||||
return listeners
|
||||
}
|
||||
return nil
|
||||
}
|
||||
return imageView.viewData.getFunc(tag)
|
||||
}
|
||||
|
||||
func (imageView *imageViewData) setFunc(tag PropertyName, value any) []PropertyName {
|
||||
|
||||
switch tag {
|
||||
|
|
12
listView.go
12
listView.go
|
@ -310,6 +310,18 @@ func (listView *listViewData) getFunc(tag PropertyName) any {
|
|||
return rowGap
|
||||
}
|
||||
return AutoSize()
|
||||
|
||||
case ListItemClickedEvent, ListItemSelectedEvent:
|
||||
if listeners := getOneArgEventRawListeners[ListView, int](listView, nil, tag); len(listeners) > 0 {
|
||||
return listeners
|
||||
}
|
||||
return nil
|
||||
|
||||
case ListItemCheckedEvent:
|
||||
if listeners := getOneArgEventRawListeners[ListView, []int](listView, nil, tag); len(listeners) > 0 {
|
||||
return listeners
|
||||
}
|
||||
return nil
|
||||
}
|
||||
return listView.viewData.getFunc(tag)
|
||||
}
|
||||
|
|
|
@ -589,6 +589,7 @@ type MediaSource struct {
|
|||
func (player *mediaPlayerData) init(session Session) {
|
||||
player.viewData.init(session)
|
||||
player.tag = "MediaPlayer"
|
||||
player.get = player.getFunc
|
||||
player.set = player.setFunc
|
||||
player.changed = player.propertyChanged
|
||||
}
|
||||
|
@ -597,6 +598,39 @@ func (player *mediaPlayerData) Focusable() bool {
|
|||
return true
|
||||
}
|
||||
|
||||
func (player *mediaPlayerData) getFunc(tag PropertyName) any {
|
||||
switch tag {
|
||||
case AbortEvent, CanPlayEvent, CanPlayThroughEvent, CompleteEvent, EmptiedEvent, LoadStartEvent,
|
||||
EndedEvent, LoadedDataEvent, LoadedMetadataEvent, PauseEvent, PlayEvent, PlayingEvent,
|
||||
ProgressEvent, SeekedEvent, SeekingEvent, StalledEvent, SuspendEvent, WaitingEvent:
|
||||
|
||||
if listeners := getNoArgEventRawListeners[MediaPlayer](player, nil, tag); len(listeners) > 0 {
|
||||
return listeners
|
||||
}
|
||||
return nil
|
||||
|
||||
case DurationChangedEvent, RateChangedEvent, TimeUpdateEvent, VolumeChangedEvent:
|
||||
if listeners := getOneArgEventRawListeners[MediaPlayer, float64](player, nil, tag); len(listeners) > 0 {
|
||||
return listeners
|
||||
}
|
||||
return nil
|
||||
|
||||
case PlayerErrorEvent:
|
||||
if value := player.getRaw(tag); value != nil {
|
||||
if listeners, ok := value.([]mediaPlayerErrorListener); ok && len(listeners) > 0 {
|
||||
result := make([]any, 0, len(listeners))
|
||||
for _, listener := range listeners {
|
||||
result = append(result, listener.rawListener())
|
||||
}
|
||||
return result
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
return player.viewData.getFunc(tag)
|
||||
}
|
||||
|
||||
func (player *mediaPlayerData) setFunc(tag PropertyName, value any) []PropertyName {
|
||||
switch tag {
|
||||
|
||||
|
|
|
@ -129,6 +129,7 @@ func (picker *numberPickerData) init(session Session) {
|
|||
picker.tag = "NumberPicker"
|
||||
picker.hasHtmlDisabled = true
|
||||
picker.normalize = normalizeNumberPickerTag
|
||||
picker.get = picker.getFunc
|
||||
picker.set = picker.setFunc
|
||||
picker.changed = picker.propertyChanged
|
||||
}
|
||||
|
@ -147,6 +148,17 @@ func normalizeNumberPickerTag(tag PropertyName) PropertyName {
|
|||
return normalizeDataListTag(tag)
|
||||
}
|
||||
|
||||
func (picker *numberPickerData) getFunc(tag PropertyName) any {
|
||||
switch tag {
|
||||
case NumberChangedEvent:
|
||||
if listeners := getTwoArgEventRawListeners[NumberPicker, float64](picker, nil, tag); len(listeners) > 0 {
|
||||
return listeners
|
||||
}
|
||||
return nil
|
||||
}
|
||||
return picker.viewData.getFunc(tag)
|
||||
}
|
||||
|
||||
func (picker *numberPickerData) setFunc(tag PropertyName, value any) []PropertyName {
|
||||
switch tag {
|
||||
case NumberChangedEvent:
|
||||
|
|
18
tableView.go
18
tableView.go
|
@ -593,6 +593,7 @@ func (table *tableViewData) init(session Session) {
|
|||
table.cellViews = []View{}
|
||||
table.cellFrame = []Frame{}
|
||||
table.normalize = normalizeTableViewTag
|
||||
table.get = table.getFunc
|
||||
table.set = table.setFunc
|
||||
table.changed = table.propertyChanged
|
||||
}
|
||||
|
@ -618,6 +619,23 @@ func (table *tableViewData) Focusable() bool {
|
|||
return GetTableSelectionMode(table) != NoneSelection
|
||||
}
|
||||
|
||||
func (table *tableViewData) getFunc(tag PropertyName) any {
|
||||
switch tag {
|
||||
case TableCellClickedEvent, TableCellSelectedEvent:
|
||||
if listeners := getTwoArgEventRawListeners[TableView, int](table, nil, tag); len(listeners) > 0 {
|
||||
return listeners
|
||||
}
|
||||
return nil
|
||||
|
||||
case TableRowClickedEvent, TableRowSelectedEvent:
|
||||
if listeners := getOneArgEventRawListeners[TableView, int](table, nil, tag); len(listeners) > 0 {
|
||||
return listeners
|
||||
}
|
||||
return nil
|
||||
}
|
||||
return table.viewData.getFunc(tag)
|
||||
}
|
||||
|
||||
func (table *tableViewData) setFunc(tag PropertyName, value any) []PropertyName {
|
||||
|
||||
setLineStyle := func() []PropertyName {
|
||||
|
|
|
@ -163,6 +163,7 @@ func (tabsLayout *tabsLayoutData) init(session Session) {
|
|||
tabsLayout.viewsContainerData.init(session)
|
||||
tabsLayout.tag = "TabsLayout"
|
||||
tabsLayout.systemClass = "ruiTabsLayout"
|
||||
tabsLayout.get = tabsLayout.getFunc
|
||||
tabsLayout.set = tabsLayout.setFunc
|
||||
tabsLayout.changed = tabsLayout.propertyChanged
|
||||
}
|
||||
|
@ -172,6 +173,23 @@ func tabsLayoutCurrent(view View, defaultValue int) int {
|
|||
return result
|
||||
}
|
||||
|
||||
func (tabsLayout *tabsLayoutData) getFunc(tag PropertyName) any {
|
||||
switch tag {
|
||||
case CurrentTabChangedEvent:
|
||||
if listeners := getTwoArgEventRawListeners[TabsLayout, int](tabsLayout, nil, tag); len(listeners) > 0 {
|
||||
return listeners
|
||||
}
|
||||
return nil
|
||||
|
||||
case TabCloseEvent:
|
||||
if listeners := getOneArgEventRawListeners[TabsLayout, int](tabsLayout, nil, tag); len(listeners) > 0 {
|
||||
return listeners
|
||||
}
|
||||
return nil
|
||||
}
|
||||
return tabsLayout.viewsContainerData.getFunc(tag)
|
||||
}
|
||||
|
||||
func (tabsLayout *tabsLayoutData) setFunc(tag PropertyName, value any) []PropertyName {
|
||||
switch tag {
|
||||
case CurrentTabChangedEvent:
|
||||
|
|
|
@ -120,6 +120,7 @@ func (picker *timePickerData) init(session Session) {
|
|||
picker.tag = "TimePicker"
|
||||
picker.hasHtmlDisabled = true
|
||||
picker.normalize = normalizeTimePickerTag
|
||||
picker.get = picker.getFunc
|
||||
picker.set = picker.setFunc
|
||||
picker.changed = picker.propertyChanged
|
||||
}
|
||||
|
@ -167,6 +168,17 @@ func stringToTime(value string) (time.Time, bool) {
|
|||
return result, true
|
||||
}
|
||||
|
||||
func (picker *timePickerData) getFunc(tag PropertyName) any {
|
||||
switch tag {
|
||||
case TimeChangedEvent:
|
||||
if listeners := getTwoArgEventRawListeners[TimePicker, time.Time](picker, nil, tag); len(listeners) > 0 {
|
||||
return listeners
|
||||
}
|
||||
return nil
|
||||
}
|
||||
return picker.viewData.getFunc(tag)
|
||||
}
|
||||
|
||||
func (picker *timePickerData) setFunc(tag PropertyName, value any) []PropertyName {
|
||||
|
||||
setTimeValue := func(tag PropertyName) []PropertyName {
|
||||
|
|
51
view.go
51
view.go
|
@ -308,8 +308,57 @@ func (view *viewData) getFunc(tag PropertyName) any {
|
|||
} else {
|
||||
return nil
|
||||
}
|
||||
|
||||
case FocusEvent, LostFocusEvent:
|
||||
if listeners := getNoArgEventRawListeners[View](view, nil, tag); len(listeners) > 0 {
|
||||
|
||||
}
|
||||
|
||||
case KeyDownEvent, KeyUpEvent:
|
||||
if listeners := getOneArgEventRawListeners[View, KeyEvent](view, nil, tag); len(listeners) > 0 {
|
||||
return listeners
|
||||
}
|
||||
|
||||
case ClickEvent, DoubleClickEvent, MouseDown, MouseUp, MouseMove, MouseOut, MouseOver, ContextMenuEvent:
|
||||
if listeners := getOneArgEventRawListeners[View, MouseEvent](view, nil, tag); len(listeners) > 0 {
|
||||
return listeners
|
||||
}
|
||||
|
||||
case PointerDown, PointerUp, PointerMove, PointerOut, PointerOver, PointerCancel:
|
||||
if listeners := getOneArgEventRawListeners[View, PointerEvent](view, nil, tag); len(listeners) > 0 {
|
||||
return listeners
|
||||
}
|
||||
|
||||
case TouchStart, TouchEnd, TouchMove, TouchCancel:
|
||||
if listeners := getOneArgEventRawListeners[View, TouchEvent](view, nil, tag); len(listeners) > 0 {
|
||||
return listeners
|
||||
}
|
||||
|
||||
case TransitionRunEvent, TransitionStartEvent, TransitionEndEvent, TransitionCancelEvent:
|
||||
if listeners := getOneArgEventRawListeners[View, PropertyName](view, nil, tag); len(listeners) > 0 {
|
||||
return listeners
|
||||
}
|
||||
|
||||
case AnimationStartEvent, AnimationEndEvent, AnimationIterationEvent, AnimationCancelEvent:
|
||||
if listeners := getOneArgEventRawListeners[View, string](view, nil, tag); len(listeners) > 0 {
|
||||
return listeners
|
||||
}
|
||||
|
||||
case ResizeEvent, ScrollEvent:
|
||||
if listeners := getOneArgEventRawListeners[View, Frame](view, nil, tag); len(listeners) > 0 {
|
||||
return listeners
|
||||
}
|
||||
|
||||
case DragStartEvent, DragEndEvent, DragEnterEvent, DragLeaveEvent, DragOverEvent, DropEvent:
|
||||
if listeners := getOneArgEventRawListeners[View, DragAndDropEvent](view, nil, tag); len(listeners) > 0 {
|
||||
return listeners
|
||||
}
|
||||
|
||||
default:
|
||||
return viewStyleGet(view, tag)
|
||||
}
|
||||
return viewStyleGet(view, tag)
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (view *viewData) removeFunc(tag PropertyName) []PropertyName {
|
||||
|
|
Loading…
Reference in New Issue