Diff
diff --git a/events/main.go b/events/main.go
index 325ec6b..444eb79 100644
--- a/events/main.go
+++ b/events/main.go
@@ -6 +5,0 @@ import (
- "gui/utils"
@@ -11,16 +10,2 @@ import (
-type RLData struct {
- MP rl.Vector2
- LB bool
- RB bool
- WD float32
- KP int32
-}
-
-func GetEvents(el *element.Node, prevEvents *map[string]element.EventList) *map[string]element.EventList {
- data := RLData{
- MP: rl.GetMousePosition(),
- LB: rl.IsMouseButtonDown(rl.MouseLeftButton),
- RB: rl.IsMouseButtonPressed(rl.MouseRightButton),
- WD: rl.GetMouseWheelMove(),
- KP: rl.GetKeyPressed(),
- }
+func GetEvents(el *element.Node, prevEvents *map[string]element.Event) *map[string]element.Event {
+ mp := rl.GetMousePosition()
@@ -29 +14 @@ func GetEvents(el *element.Node, prevEvents *map[string]element.EventList) *map[
- loop(el, data, prevEvents)
+ loop(el, mp, prevEvents)
@@ -33,17 +18 @@ func GetEvents(el *element.Node, prevEvents *map[string]element.EventList) *map[
-func RunEvents(events *map[string]element.EventList) {
- for _, evt := range *events {
- if len(evt.List) > 0 {
- for _, v := range evt.List {
- if len(evt.Event.Target.Properties.EventListeners[v]) > 0 {
- for _, handler := range evt.Event.Target.Properties.EventListeners[v] {
- handler(evt.Event)
- }
- }
- }
-
- }
- }
-
-}
-
-func loop(el *element.Node, data RLData, eventTracker *map[string]element.EventList) *element.Node {
+func loop(el *element.Node, mp rl.Vector2, eventTracker *map[string]element.Event) {
@@ -52 +21 @@ func loop(el *element.Node, data RLData, eventTracker *map[string]element.EventL
- evt := et[el.Properties.Id].Event
+ evt := et[el.Properties.Id]
@@ -55,9 +24,6 @@ func loop(el *element.Node, data RLData, eventTracker *map[string]element.EventL
- et[el.Properties.Id] = element.EventList{
- Event: element.Event{
- X: int(data.MP.X),
- Y: int(data.MP.Y),
- MouseUp: true,
- MouseLeave: true,
- Target: *el,
- },
- List: []string{},
+ et[el.Properties.Id] = element.Event{
+ X: int(mp.X),
+ Y: int(mp.Y),
+ MouseUp: true,
+ MouseLeave: true,
+ Target: *el,
@@ -66 +32 @@ func loop(el *element.Node, data RLData, eventTracker *map[string]element.EventL
- evt = et[el.Properties.Id].Event
+ evt = et[el.Properties.Id]
@@ -71,2 +37,2 @@ func loop(el *element.Node, data RLData, eventTracker *map[string]element.EventL
- if el.Properties.X < data.MP.X && el.Properties.X+el.Properties.Width > data.MP.X {
- if el.Properties.Y < data.MP.Y && el.Properties.Y+el.Properties.Height > data.MP.Y {
+ if el.Properties.X < mp.X && el.Properties.X+el.Properties.Width > mp.X {
+ if el.Properties.Y < mp.Y && el.Properties.Y+el.Properties.Height > mp.Y {
@@ -76 +42,3 @@ func loop(el *element.Node, data RLData, eventTracker *map[string]element.EventL
- if data.LB && !evt.MouseDown {
+ fmt.Println(rl.GetMouseWheelMove())
+
+ if rl.IsMouseButtonDown(rl.MouseLeftButton) && !evt.MouseDown {
@@ -85 +53 @@ func loop(el *element.Node, data RLData, eventTracker *map[string]element.EventL
- if !data.LB && !evt.MouseUp {
+ if !rl.IsMouseButtonDown(rl.MouseLeftButton) && !evt.MouseUp {
@@ -88 +55,0 @@ func loop(el *element.Node, data RLData, eventTracker *map[string]element.EventL
- evt.Click = false
@@ -95 +62 @@ func loop(el *element.Node, data RLData, eventTracker *map[string]element.EventL
- if data.LB && !evt.Click {
+ if rl.IsMouseButtonPressed(rl.MouseLeftButton) {
@@ -103 +70 @@ func loop(el *element.Node, data RLData, eventTracker *map[string]element.EventL
- if data.RB {
+ if rl.IsMouseButtonPressed(rl.MouseRightButton) {
@@ -111,11 +77,0 @@ func loop(el *element.Node, data RLData, eventTracker *map[string]element.EventL
- if data.WD != 0 {
- // fmt.Println(data.WD)
- // for now just emit a event, will have to add el.scrollX
- evt.Target.ScrollY = utils.Max(evt.Target.ScrollY+(-data.WD), 0)
-
- if el.OnScroll != nil {
- el.OnScroll(evt)
- }
- eventList = append(eventList, "scroll")
- }
-
@@ -136,3 +92,3 @@ func loop(el *element.Node, data RLData, eventTracker *map[string]element.EventL
- if evt.X != int(data.MP.X) && evt.Y != int(data.MP.Y) {
- evt.X = int(data.MP.X)
- evt.Y = int(data.MP.Y)
+ if evt.X != int(mp.X) && evt.Y != int(mp.Y) {
+ evt.X = int(mp.X)
+ evt.Y = int(mp.Y)
@@ -146,10 +102,3 @@ func loop(el *element.Node, data RLData, eventTracker *map[string]element.EventL
- // issue: need to only add the text data and events to focused elements and only
- // one at a time
- if data.KP != 0 {
- if el.Properties.Editable {
- ProcessKeyEvent(el, int(data.KP))
- fmt.Println(el.Properties.Id, el.Value)
- el.InnerText = el.Value
- eventList = append(eventList, "keypress")
- }
-
+ keyPressed := rl.GetKeyPressed()
+ if keyPressed != 0 {
+ fmt.Printf("Key pressed: %c (%d)\n", keyPressed, keyPressed)
@@ -177,29 +126,7 @@ func loop(el *element.Node, data RLData, eventTracker *map[string]element.EventL
- et[el.Properties.Id] = element.EventList{
- Event: evt,
- List: eventList,
- }
-
- eventTracker = &et
- for i, v := range el.Children {
- el.Children[i] = *loop(&v, data, eventTracker)
- }
- return el
-}
-
-// ProcessKeyEvent processes key events for text entry.
-func ProcessKeyEvent(n *element.Node, key int) {
- // Handle key events for text entry
- switch key {
- case rl.KeyBackspace:
- // Backspace: remove the last character
- if len(n.Value) > 0 {
- n.Value = n.Value[:len(n.Value)-1]
- }
-
- case rl.KeyA:
- // Select All: set the entire text as selected
- if rl.IsKeyDown(rl.KeyLeftControl) || rl.IsKeyDown(rl.KeyRightControl) {
- n.Properties.Selected = []float32{0, float32(len(n.Value))}
- } else {
- // Otherwise, append 'A' to the text
- n.Value += "A"
+ if len(eventList) > 0 {
+ for _, v := range eventList {
+ if len(el.Properties.EventListeners[v]) > 0 {
+ for _, handler := range el.Properties.EventListeners[v] {
+ handler(evt)
+ }
+ }
@@ -208,8 +135 @@ func ProcessKeyEvent(n *element.Node, key int) {
- case rl.KeyC:
- // Copy: copy the selected text (in this case, print it)
- if rl.IsKeyDown(rl.KeyLeftControl) || rl.IsKeyDown(rl.KeyRightControl) {
- fmt.Println("Copy:", n.Value)
- } else {
- // Otherwise, append 'C' to the text
- n.Value += "C"
- }
+ }
@@ -217,8 +137 @@ func ProcessKeyEvent(n *element.Node, key int) {
- case rl.KeyV:
- // Paste: paste the copied text (in this case, set it to "Pasted")
- if rl.IsKeyDown(rl.KeyLeftControl) || rl.IsKeyDown(rl.KeyRightControl) {
- n.Value = "Pasted"
- } else {
- // Otherwise, append 'V' to the text
- n.Value += "V"
- }
+ et[el.Properties.Id] = evt
@@ -226,3 +139,3 @@ func ProcessKeyEvent(n *element.Node, key int) {
- default:
- // Record other key presses
- n.Value += string(rune(key))
+ eventTracker = &et
+ for _, v := range el.Children {
+ loop(&v, mp, eventTracker)