summaryrefslogtreecommitdiff
path: root/src/nigui/private/gtk3/platform_impl.nim
diff options
context:
space:
mode:
authortrustable-code <krauter.simon@arcor.de>2018-05-07 21:12:54 +0200
committertrustable-code <krauter.simon@arcor.de>2018-05-07 21:12:54 +0200
commitf8825fa1d708c644997ad01c1a8dfaedc787727b (patch)
tree2bd2c4cf8e5d73c3e55737869c0e7906d796e6e3 /src/nigui/private/gtk3/platform_impl.nim
parent684cfa5e63123d4bb4b84d3e52e3e4418e66890a (diff)
downloadNiGui-f8825fa1d708c644997ad01c1a8dfaedc787727b.tar.gz
NiGui-f8825fa1d708c644997ad01c1a8dfaedc787727b.zip
Add possibility to check, which keys are pressed togehter
New procs: - isDown(key: Key): bool - downKeys(): seq[Key]
Diffstat (limited to 'src/nigui/private/gtk3/platform_impl.nim')
-rwxr-xr-xsrc/nigui/private/gtk3/platform_impl.nim5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/nigui/private/gtk3/platform_impl.nim b/src/nigui/private/gtk3/platform_impl.nim
index ba4f51a..52315f1 100755
--- a/src/nigui/private/gtk3/platform_impl.nim
+++ b/src/nigui/private/gtk3/platform_impl.nim
@@ -88,6 +88,7 @@ proc pKeyvalToKey(keyval: cint): Key =
proc pWindowKeyPressSignal(widget: pointer, event: var GdkEventKey, data: pointer): bool {.cdecl.} =
let window = cast[WindowImpl](data)
window.fKeyPressed = pKeyvalToKey(event.keyval)
+ internalKeyDown(window.fKeyPressed)
if gtk_im_context_filter_keypress(window.fIMContext, event) and window.fKeyPressed == Key_None:
return
var evt = new KeyboardEvent
@@ -104,6 +105,9 @@ proc pWindowKeyPressSignal(widget: pointer, event: var GdkEventKey, data: pointe
handleException()
result = evt.handled
+proc pWindowKeyReleaseSignal(widget: pointer, event: var GdkEventKey): bool {.cdecl.} =
+ internalKeyUp(pKeyvalToKey(event.keyval))
+
proc pControlKeyPressSignal(widget: pointer, event: var GdkEventKey, data: pointer): bool {.cdecl.} =
let control = cast[ControlImpl](data)
control.fKeyPressed = pKeyvalToKey(event.keyval)
@@ -624,6 +628,7 @@ proc init(window: WindowImpl) =
discard g_signal_connect_data(window.fHandle, "delete-event", pWindowDeleteSignal, cast[pointer](window))
discard g_signal_connect_data(window.fHandle, "configure-event", pWindowConfigureSignal, cast[pointer](window))
discard g_signal_connect_data(window.fHandle, "key-press-event", pWindowKeyPressSignal, cast[pointer](window))
+ discard g_signal_connect_data(window.fHandle, "key-release-event", pWindowKeyReleaseSignal, cast[pointer](window))
discard g_signal_connect_data(window.fHandle, "window-state-event", pWindowStateEventSignal, cast[pointer](window))
# Enable drag and drop of files: