A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://github.com/AlmasB/FXGL/commit/386473af1 below:

modifier keys shift, ctrl, alt are not released when a different… · AlmasB/FXGL@386473a · GitHub

File tree Expand file treeCollapse file tree 2 files changed

+52

-10

lines changed

Filter options

Expand file treeCollapse file tree 2 files changed

+52

-10

lines changed Original file line number Diff line number Diff line change

@@ -400,7 +400,10 @@ class Input {

400 400

}

401 401 402 402

private fun handleReleased(event: InputEvent) {

403 -

val releasedTriggers = activeTriggers.filter { it.isReleased(event) || (it is KeyTrigger && isIllegal(it.key)) }

403 +

val releasedTriggers = activeTriggers.filter {

404 +

// input modifiers are never released under the standard check, so we need the second branch

405 +

it.isReleased(event) || (it is KeyTrigger && isIllegal(it.key) && event is KeyEvent && event.code == it.key)

406 +

}

404 407

releasedTriggers.forEach {

405 408

handleTriggerReleased(it)

406 409

}

Original file line number Diff line number Diff line change

@@ -11,6 +11,7 @@ import org.hamcrest.CoreMatchers.`is`

11 11

import org.hamcrest.MatcherAssert.assertThat

12 12

import org.junit.jupiter.api.Assertions.assertFalse

13 13

import org.junit.jupiter.api.Assertions.assertTrue

14 +

import org.junit.jupiter.api.BeforeEach

14 15

import org.junit.jupiter.api.Test

15 16 16 17

/**

@@ -20,6 +21,13 @@ import org.junit.jupiter.api.Test

20 21

*/

21 22

class InputModifierTest {

22 23 24 +

private lateinit var input: Input

25 + 26 +

@BeforeEach

27 +

fun setUp() {

28 +

input = Input()

29 +

}

30 + 23 31

@Test

24 32

fun `Convert Shift from MouseEvent`() {

25 33

val e = mouseEvent(true, false, false)

@@ -116,13 +124,44 @@ class InputModifierTest {

116 124

assertTrue(InputModifier.NONE.toKeyCode() == KeyCode.ALPHANUMERIC)

117 125

}

118 126 119 -

// private fun mouseEvent(shift: Boolean, ctrl: Boolean, alt: Boolean): MouseEvent {

120 -

// return MouseEvent(MouseEvent.ANY, 0.0, 0.0, 0.0, 0.0, MouseButton.PRIMARY, 1,

121 -

// shift, ctrl, alt,

122 -

// false, false, false, false, false, false, false, null)

123 -

// }

124 -

//

125 -

// private fun keyEvent(shift: Boolean, ctrl: Boolean, alt: Boolean): KeyEvent {

126 -

// return KeyEvent(KeyEvent.ANY, "", "", KeyCode.A, shift, ctrl, alt, false)

127 -

// }

127 +

@Test

128 +

fun `Do not release illegal keys when main key is released`() {

129 +

var callsShift = 0

130 + 131 +

input.addTriggerListener(object : TriggerListener() {

132 +

override fun onKey(keyTrigger: KeyTrigger) {

133 +

if (keyTrigger.key == KeyCode.SHIFT) {

134 +

callsShift++

135 +

}

136 +

}

137 + 138 +

override fun onKeyEnd(keyTrigger: KeyTrigger) {

139 +

if (keyTrigger.key == KeyCode.SHIFT) {

140 +

callsShift = 999

141 +

}

142 +

}

143 +

})

144 + 145 +

input.update(0.0)

146 +

assertThat(callsShift, `is`(0))

147 + 148 +

// press shift

149 +

input.mockKeyPress(KeyCode.SHIFT)

150 +

input.update(0.0)

151 +

assertThat(callsShift, `is`(1))

152 + 153 +

// press arbitrary key

154 +

input.mockKeyPress(KeyCode.D)

155 +

input.update(0.0)

156 +

assertThat(callsShift, `is`(2))

157 + 158 +

// release that arbitrary key

159 +

input.mockKeyRelease(KeyCode.D)

160 +

input.update(0.0)

161 +

assertThat(callsShift, `is`(3))

162 + 163 +

// shift must still remain to be active

164 +

input.update(0.0)

165 +

assertThat(callsShift, `is`(4))

166 +

}

128 167

}

You can’t perform that action at this time.


RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4