Remove MouseEvent.StateChanged because it's redundant

I don't know why I decided that mouse events are level-triggered.
Sometimes I'm just dumb like that. Now here I am, cleaning up after my
stupidity.

Oh, this also makes double-clicks seem less like a speedrunning strat.
This commit is contained in:
Fingercomp 2025-09-03 23:22:49 +03:00
parent 5e172ee804
commit dfbcb0418c
No known key found for this signature in database
GPG Key ID: BBC71CEE45D86E37
4 changed files with 10 additions and 26 deletions

View File

@ -1,7 +1,6 @@
package ocelot.desktop.ui.event
case class MouseEvent(state: MouseEvent.State.Value, button: MouseEvent.Button.Value)(val stateChanged: Boolean)
extends CapturingEvent
case class MouseEvent(state: MouseEvent.State.Value, button: MouseEvent.Button.Value) extends CapturingEvent
object MouseEvent {
object State extends Enumeration {
@ -13,14 +12,4 @@ object MouseEvent {
val Right: Button.Value = Value(1)
val Middle: Button.Value = Value(2)
}
object StateChanged {
def unapply(event: MouseEvent): Option[(State.Value, Button.Value)] = {
if (event.stateChanged) {
MouseEvent.unapply(event)
} else {
None
}
}
}
}

View File

@ -2,7 +2,7 @@ package ocelot.desktop.ui.event.handlers
import ocelot.desktop.geometry.Vector2D
import ocelot.desktop.ui.UiHandler
import ocelot.desktop.ui.event.handlers.MouseHandler.{DoubleClickTime, Tolerance}
import ocelot.desktop.ui.event.handlers.MouseHandler.{DoubleClickTimeMillis, Tolerance}
import ocelot.desktop.ui.event.{ClickEvent, DoubleClickEvent, DragEvent, MouseEvent}
import ocelot.desktop.ui.widget.Widget
@ -61,7 +61,7 @@ trait MouseHandler extends Widget {
if (clicked) {
handleEvent(ClickEvent(button, mousePos))
val inTimeForDoubleClick = (System.currentTimeMillis() - lastClickTime) < DoubleClickTime * 1000
val inTimeForDoubleClick = System.currentTimeMillis() - lastClickTime < DoubleClickTimeMillis
val sameButton = lastClickButton == button
val roughlySamePosition = withinTolerance(lastClickPosition, mousePos)
if (inTimeForDoubleClick && sameButton && roughlySamePosition) {
@ -112,5 +112,5 @@ trait MouseHandler extends Widget {
object MouseHandler {
private val Tolerance = 8
private val DoubleClickTime = 0.2
private val DoubleClickTimeMillis = 1e3f / 3
}

View File

@ -26,13 +26,8 @@ object MouseEvents {
if (MouseEvent.Button.values.map(_.id).contains(buttonIdx)) {
val button = MouseEvent.Button(buttonIdx)
val state = if (Mouse.getEventButtonState) MouseEvent.State.Pressed else MouseEvent.State.Released
val changed = state match {
case MouseEvent.State.Pressed =>
_pressedButtons.add(button)
case MouseEvent.State.Released =>
_pressedButtons.remove(button)
}
_events += MouseEvent(state, button)(changed)
_pressedButtons(button) = Mouse.getEventButtonState
_events += MouseEvent(state, button)
}
val delta = Mouse.getEventDWheel
@ -49,7 +44,7 @@ object MouseEvents {
def releaseButtons(): Unit = {
for (button <- pressedButtons) {
_events += MouseEvent(MouseEvent.State.Released, button)(stateChanged = true)
_events += MouseEvent(MouseEvent.State.Released, button)
}
_pressedButtons.clear()

View File

@ -143,7 +143,7 @@ class TextInput(val initialText: String = "") extends Widget with MouseHandler w
}
eventHandlers += {
case MouseEvent.StateChanged(MouseEvent.State.Pressed, _) if enabled =>
case MouseEvent(MouseEvent.State.Pressed, _) if enabled =>
val inBounds = mouseInBounds
if (isFocused && !inBounds) unfocus()
if (!isFocused && inBounds) focus()
@ -155,7 +155,7 @@ class TextInput(val initialText: String = "") extends Widget with MouseHandler w
}
eventHandlers += {
case MouseEvent.StateChanged(MouseEvent.State.Pressed, MouseEvent.Button.Right) if isFocused && mouseInBounds =>
case MouseEvent(MouseEvent.State.Pressed, MouseEvent.Button.Right) if isFocused && mouseInBounds =>
val menu = new ContextMenu
if (selection.nonEmpty) {
@ -177,7 +177,7 @@ class TextInput(val initialText: String = "") extends Widget with MouseHandler w
root.get.contextMenus.open(menu)
case MouseEvent.StateChanged(MouseEvent.State.Pressed, _) if isFocused && mouseInBounds =>
case MouseEvent(MouseEvent.State.Pressed, _) if isFocused && mouseInBounds =>
selection = None
case DoubleClickEvent(MouseEvent.Button.Left, _) if isFocused && mouseInBounds =>