mirror of
https://gitlab.bixilon.de/bixilon/minosoft.git
synced 2025-09-17 11:24:56 -04:00
LayoutedGUIElement: fix mouse position calculation
This commit is contained in:
parent
c496f5e978
commit
069fd7a80a
@ -110,17 +110,17 @@ class LayoutedGUIElement<T : LayoutedElement>(
|
|||||||
val size = elementLayout.size
|
val size = elementLayout.size
|
||||||
val lastPosition = lastPosition
|
val lastPosition = lastPosition
|
||||||
|
|
||||||
if (position.isOutside(offset, size)) {
|
if (position.isOutside(offset, offset + size)) {
|
||||||
if (lastPosition.x == -1 || lastPosition.y == -1) {
|
if (lastPosition == INVALID_MOUSE_POSITION) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
// move out
|
// move out
|
||||||
this.lastPosition = Vec2i(-1, -1)
|
this.lastPosition = INVALID_MOUSE_POSITION
|
||||||
elementLayout.onMouseLeave()
|
elementLayout.onMouseLeave()
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
val delta = position - offset
|
val delta = position - offset
|
||||||
this.lastPosition = position
|
this.lastPosition = delta
|
||||||
|
|
||||||
if (lastPosition.isOutside(offset, size)) {
|
if (lastPosition.isOutside(offset, size)) {
|
||||||
elementLayout.onMouseEnter(delta)
|
elementLayout.onMouseEnter(delta)
|
||||||
@ -137,27 +137,21 @@ class LayoutedGUIElement<T : LayoutedElement>(
|
|||||||
override fun onKeyPress(type: KeyChangeTypes, key: KeyCodes) {
|
override fun onKeyPress(type: KeyChangeTypes, key: KeyCodes) {
|
||||||
val mouseButton = MouseButtons[key] ?: return elementLayout.onKey(key, type)
|
val mouseButton = MouseButtons[key] ?: return elementLayout.onKey(key, type)
|
||||||
|
|
||||||
val offset = layout.layoutOffset
|
|
||||||
val size = elementLayout.size
|
|
||||||
val position = lastPosition
|
val position = lastPosition
|
||||||
if (position.isOutside(offset, size)) {
|
if (position == INVALID_MOUSE_POSITION) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
val delta = position - offset
|
|
||||||
|
|
||||||
val mouseAction = MouseActions[type] ?: return
|
val mouseAction = MouseActions[type] ?: return
|
||||||
elementLayout.onMouseAction(delta, mouseButton, mouseAction)
|
elementLayout.onMouseAction(position, mouseButton, mouseAction)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onScroll(scrollOffset: Vec2d) {
|
override fun onScroll(scrollOffset: Vec2d) {
|
||||||
val offset = layout.layoutOffset
|
|
||||||
val size = elementLayout.size
|
|
||||||
val position = lastPosition
|
val position = lastPosition
|
||||||
if (position.isOutside(offset, size)) {
|
if (lastPosition == INVALID_MOUSE_POSITION) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
val delta = position - offset
|
elementLayout.onScroll(position, scrollOffset)
|
||||||
elementLayout.onScroll(delta, scrollOffset)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onClose() {
|
override fun onClose() {
|
||||||
@ -172,4 +166,8 @@ class LayoutedGUIElement<T : LayoutedElement>(
|
|||||||
override fun onHide() {
|
override fun onHide() {
|
||||||
elementLayout.onHide()
|
elementLayout.onHide()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
private val INVALID_MOUSE_POSITION = Vec2i(-1, -1)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user