diff options
| author | trustable-code <krauter.simon@arcor.de> | 2019-09-01 18:30:30 +0200 |
|---|---|---|
| committer | trustable-code <krauter.simon@arcor.de> | 2019-09-01 18:30:30 +0200 |
| commit | 94f8d0e1259b9c847e0cba843b766297d830169a (patch) | |
| tree | 63bd447d2d656a064c38db218b7cc0ebe9801a8e /src/nigui/private/gtk3/platform_impl.nim | |
| parent | 3aa5ebebef4e02956ae817a4467284254928d506 (diff) | |
| download | NiGui-94f8d0e1259b9c847e0cba843b766297d830169a.tar.gz NiGui-94f8d0e1259b9c847e0cba843b766297d830169a.zip | |
Gtk: Fix TextBox onKeyDown handling
Diffstat (limited to 'src/nigui/private/gtk3/platform_impl.nim')
| -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() |
