summaryrefslogtreecommitdiff
path: root/src/nigui
diff options
context:
space:
mode:
authortrustable-code <krauter.simon@arcor.de>2019-09-01 18:30:30 +0200
committertrustable-code <krauter.simon@arcor.de>2019-09-01 18:30:30 +0200
commit94f8d0e1259b9c847e0cba843b766297d830169a (patch)
tree63bd447d2d656a064c38db218b7cc0ebe9801a8e /src/nigui
parent3aa5ebebef4e02956ae817a4467284254928d506 (diff)
downloadNiGui-94f8d0e1259b9c847e0cba843b766297d830169a.tar.gz
NiGui-94f8d0e1259b9c847e0cba843b766297d830169a.zip
Gtk: Fix TextBox onKeyDown handling
Diffstat (limited to 'src/nigui')
-rwxr-xr-xsrc/nigui/private/gtk3/platform_impl.nim12
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()