Parcourir la source

fixed gui.Tree item resize

leonsal il y a 8 ans
Parent
commit
af1876ab5e
2 fichiers modifiés avec 10 ajouts et 0 suppressions
  1. 7 0
      gui/list.go
  2. 3 0
      gui/tree.go

+ 7 - 0
gui/list.go

@@ -51,6 +51,9 @@ type ListItemStyle struct {
 	FgColor     math32.Color
 }
 
+// Event sent to list item child panel on resize
+const OnListItemResize = "gui.OnListItemResize"
+
 // NewVList creates and returns a pointer to a new vertical list panel
 // with the specified dimensions
 func NewVList(width, height float32) *List {
@@ -472,6 +475,10 @@ func newListItem(list *List, item IPanel) *ListItem {
 	litem.Panel.Add(item)
 	litem.SetContentWidth(item.GetPanel().Width())
 	litem.SetContentHeight(item.GetPanel().Height())
+	// If this list item is resized, sends event to its child panel
+	litem.Subscribe(OnResize, func(evname string, ev interface{}) {
+		item.GetPanel().Dispatch(OnListItemResize, nil)
+	})
 	litem.update()
 	return litem
 }

+ 3 - 0
gui/tree.go

@@ -216,6 +216,9 @@ func newTreeNode(text string, tree *Tree, parNode *TreeNode) *TreeNode {
 
 	// Subscribe to events
 	n.Panel.Subscribe(OnMouseDown, n.onMouse)
+	n.Panel.Subscribe(OnListItemResize, func(evname string, ev interface{}) {
+		n.recalc()
+	})
 	n.tree = tree
 	n.parNode = parNode