mirror of
https://gitlab.com/cc-ru/ocelot/ocelot-desktop.git
synced 2025-12-19 18:49:19 +01:00
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:
parent
5e172ee804
commit
dfbcb0418c
@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -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
|
||||
}
|
||||
|
||||
@ -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()
|
||||
|
||||
@ -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 =>
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user