diff options
Diffstat (limited to 'src/nigui')
| -rwxr-xr-x | src/nigui/private/gtk3/platform_impl.nim | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/src/nigui/private/gtk3/platform_impl.nim b/src/nigui/private/gtk3/platform_impl.nim index 25d875f..39b75a3 100755 --- a/src/nigui/private/gtk3/platform_impl.nim +++ b/src/nigui/private/gtk3/platform_impl.nim @@ -140,12 +140,13 @@ proc pWindowKeyReleaseSignal(widget: pointer, event: var GdkEventKey): bool {.cd proc pControlKeyPressSignal(widget: pointer, event: var GdkEventKey, data: pointer): bool {.cdecl.} = let control = cast[ControlImpl](data) - control.fKeyPressed = pKeyvalToKey(event.keyval) - if gtk_im_context_filter_keypress(control.fIMContext, event) and control.fKeyPressed == Key_None: - return + let key = pKeyvalToKey(event.keyval) + control.fKeyPressed = key + if gtk_im_context_filter_keypress(control.fIMContext, event): + return control.fKeyPressed == Key_None var evt = new KeyboardEvent evt.control = control - evt.key = control.fKeyPressed + evt.key = key if evt.key == Key_None: echo "Unkown key value: ", event.keyval return @@ -177,9 +178,10 @@ proc pControlIMContextCommitSignal(context: pointer, str: cstring, data: pointer evt.character = $str evt.unicode = evt.character.runeAt(0).toUpper().int evt.key = control.fKeyPressed - control.fKeyPressed = Key_None try: control.handleKeyDownEvent(evt) + if evt.handled: + control.fKeyPressed = Key_None except: handleException() |
