@@ -19,6 +19,8 @@ import org.lwjgl.opengl.GLUtil
1919import org.lwjgl.system.Callback
2020import org.lwjgl.system.MemoryUtil.*
2121import org.lwjgl.vulkan.VkInstance
22+ import uno.kotlin.first
23+ import uno.kotlin.getOrfirst
2224import java.nio.ByteBuffer
2325import java.nio.FloatBuffer
2426
@@ -255,10 +257,12 @@ open class GlfwWindow(var handle: GlfwWindowHandle) {
255257
256258 // ------------------- Callbacks -------------------
257259
260+ val defaultKey = " 0 - default"
258261
259262 var charCallback: CharCallbackT ? = null
263+ get() = charCallbacks.getOrfirst(defaultKey)
260264 set(value) {
261- charCallbacks[" 0 - default " ] = value
265+ charCallbacks[defaultKey ] = value
262266 field = value
263267 }
264268
@@ -267,8 +271,9 @@ open class GlfwWindow(var handle: GlfwWindowHandle) {
267271
268272
269273 var cursorPosCallback: CursorPosCallbackT ? = null
274+ get() = cursorPosCallbacks.getOrfirst(defaultKey)
270275 set(value) {
271- cursorPosCallbacks[" 0 - default " ] = value
276+ cursorPosCallbacks[defaultKey ] = value
272277 field = value
273278 }
274279
@@ -277,53 +282,59 @@ open class GlfwWindow(var handle: GlfwWindowHandle) {
277282
278283
279284 var framebufferSizeCallback: FramebufferSizeCallbackT ? = null
285+ get() = framebufferSizeCallbacks.getOrfirst(defaultKey)
280286 set(value) {
281- framebufferSizeCallbacks[" 0 - default " ] = value
287+ framebufferSizeCallbacks[defaultKey ] = value
282288 field = value
283289 }
284290 val framebufferSizeCallbacks = sortedMapOf<String , FramebufferSizeCallbackT >()
285291 val nFramebufferSizeCallback = GLFWFramebufferSizeCallbackI { _, width, height -> framebufferSizeCallbacks.values.forEach { it(Vec2i (width, height)) } }
286292
287293
288294 var keyCallback: KeyCallbackT ? = null
295+ get() = keyCallbacks.getOrfirst(defaultKey)
289296 set(value) {
290- keyCallbacks[" 0 - default " ] = value
297+ keyCallbacks[defaultKey ] = value
291298 field = value
292299 }
293300 val keyCallbacks = sortedMapOf<String , KeyCallbackT >()
294301 val nKeyCallback = GLFWKeyCallbackI { _, key, scanCode, action, mods -> keyCallbacks.values.forEach { it(key, scanCode, action, mods) } }
295302
296303
297304 var mouseButtonCallback: MouseButtonCallbackT ? = null
305+ get() = mouseButtonCallbacks.getOrfirst(defaultKey)
298306 set(value) {
299- mouseButtonCallbacks[" 0 - default " ] = value
307+ mouseButtonCallbacks[defaultKey ] = value
300308 field = value
301309 }
302310 val mouseButtonCallbacks = sortedMapOf<String , MouseButtonCallbackT >()
303311 val nMouseButtonCallback = GLFWMouseButtonCallbackI { _, button, action, mods -> mouseButtonCallbacks.values.forEach { it(button, action, mods) } }
304312
305313
306314 var scrollCallback: ScrollCallbackT ? = null
315+ get() = scrollCallbacks.getOrfirst(defaultKey)
307316 set(value) {
308- scrollCallbacks[" 0 - default " ] = value
317+ scrollCallbacks[defaultKey ] = value
309318 field = value
310319 }
311320 val scrollCallbacks = sortedMapOf<String , ScrollCallbackT >()
312321 val nScrollCallback = GLFWScrollCallbackI { _, xOffset, yOffset -> scrollCallbacks.values.forEach { it(Vec2d (xOffset, yOffset)) } }
313322
314323
315324 var windowCloseCallback: WindowCloseCallbackT ? = null
325+ get() = windowCloseCallbacks.getOrfirst(defaultKey)
316326 set(value) {
317- windowCloseCallbacks[" 0 - default " ] = value
327+ windowCloseCallbacks[defaultKey ] = value
318328 field = value
319329 }
320330 val windowCloseCallbacks = sortedMapOf<String , WindowCloseCallbackT >()
321331 val nWindowCloseCallback = GLFWWindowCloseCallbackI { windowCloseCallbacks.values.forEach { it() } }
322332
323333
324334 var windowContentScaleCallback: WindowContentScaleCallbackT ? = null
335+ get() = windowContentScaleCallbacks.getOrfirst(defaultKey)
325336 set(value) {
326- windowContentScaleCallbacks[" 0 - default " ] = value
337+ windowContentScaleCallbacks[defaultKey ] = value
327338 field = value
328339 }
329340 val windowContentScaleCallbacks = sortedMapOf<String , WindowContentScaleCallbackT >()
0 commit comments