Add button click and checkbox toggle handlers for UI controls

This commit is contained in:
Stone_Red
2026-06-13 15:06:29 +02:00
parent 0bc9ca6cf2
commit decd79e6d3
5 changed files with 36 additions and 14 deletions
+5 -2
View File
@@ -18,8 +18,11 @@ public class Button() : Control("Button")
set => SetProperty(nameof(TextColor), ref field, value);
} = Color.Black;
public void Click()
public override void HandleMouseEvent(MouseEvent mouseEvent)
{
OnClick?.Invoke(this, EventArgs.Empty);
if (mouseEvent.Type == MouseEventType.ButtonDown && mouseEvent.Button == MouseButton.Left)
{
OnClick?.Invoke(this, EventArgs.Empty);
}
}
}
+8
View File
@@ -27,4 +27,12 @@ public class CheckBox() : Control("CheckBox")
get;
set => SetProperty(nameof(TextColor), ref field, value);
} = Color.White;
public override void HandleMouseEvent(MouseEvent mouseEvent)
{
if (mouseEvent.Type == MouseEventType.ButtonDown && mouseEvent.Button == MouseButton.Left)
{
IsChecked = !IsChecked;
}
}
}
+2 -2
View File
@@ -107,9 +107,9 @@ public sealed class Window(string title, int processId, int id, IRenderSource re
uiElements.Add(uiElementId, uiElement);
}
lock (controlsLock)
if (uiElement is Control control)
{
if (uiElement is Control control)
lock (controlsLock)
{
controls.Add(uiElementId, control);
}
+5 -5
View File
@@ -57,20 +57,20 @@ public static class WindowManager
activeInteractWindow = null;
}
wasLeftButtonDown = leftButtonDown;
wasRightButtonDown = rightButtonDown;
wasMiddleButtonDown = middleButtonDown;
while (KeyboardManager.TryReadKey(out KeyEvent? keyEvent) && keyEvent is not null)
{
focusedWindow?.HandleKeyEvent(keyEvent);
}
if (focusedWindow is not null && activeInteractWindow is null)
if (focusedWindow is not null)
{
DispatchMouseEvents(focusedWindow, pointerPosition);
}
wasLeftButtonDown = leftButtonDown;
wasRightButtonDown = rightButtonDown;
wasMiddleButtonDown = middleButtonDown;
CanvasRenderSource.CompositeAndDisplay(canvas, pointerPosition);
lastPointerPosition = pointerPosition;