diff options
| author | trustable-code <krauter.simon@arcor.de> | 2018-05-07 21:12:54 +0200 |
|---|---|---|
| committer | trustable-code <krauter.simon@arcor.de> | 2018-05-07 21:12:54 +0200 |
| commit | f8825fa1d708c644997ad01c1a8dfaedc787727b (patch) | |
| tree | 2bd2c4cf8e5d73c3e55737869c0e7906d796e6e3 /src/nigui/private/gtk3/platform_impl.nim | |
| parent | 684cfa5e63123d4bb4b84d3e52e3e4418e66890a (diff) | |
| download | NiGui-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-x | src/nigui/private/gtk3/platform_impl.nim | 5 |
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: |
