diff options
| author | trustable-code <krauter.simon@arcor.de> | 2020-05-05 11:37:16 +0200 |
|---|---|---|
| committer | trustable-code <krauter.simon@arcor.de> | 2020-05-05 11:37:16 +0200 |
| commit | a7464ccdb303fb888cab3acc368a356dd8997d9d (patch) | |
| tree | 54e341b30c677ed1481fe8f2ce0abfac0dce2d3f | |
| parent | 6bb4d8b687378679b331a5442bb308466290f673 (diff) | |
| download | NiGui-a7464ccdb303fb888cab3acc368a356dd8997d9d.tar.gz NiGui-a7464ccdb303fb888cab3acc368a356dd8997d9d.zip | |
Add TextArea key press handler to make Cltr+C persistent
| -rwxr-xr-x | src/nigui/private/gtk3/platform_impl.nim | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/src/nigui/private/gtk3/platform_impl.nim b/src/nigui/private/gtk3/platform_impl.nim index 91e98a1..3cfff3e 100755 --- a/src/nigui/private/gtk3/platform_impl.nim +++ b/src/nigui/private/gtk3/platform_impl.nim @@ -1477,6 +1477,17 @@ method `selectionEnd=`(textBox: NativeTextBox, selectionEnd: int) = # TextArea # ---------------------------------------------------------------------------------------- +proc pTextAreaKeyPressSignal(widget: pointer, event: var GdkEventKey, data: pointer): Gboolean {.cdecl.} = + result = pControlKeyPressSignal(widget, event, data) + + # Implement own "copy to clipboard", because by default the clipboard is non-persistent + if not result: + let modifiers = gtk_accelerator_get_default_mod_mask() + if event.keyval == 'c'.ord and (event.state and modifiers) == GDK_CONTROL_MASK: + let textArea = cast[NativeTextBox](data) + app.clipboardText = textArea.selectedText + return true # prevent default "copy to clipboard" + proc init(textArea: NativeTextArea) = textArea.fHandle = gtk_scrolled_window_new(nil, nil) # gtk_scrolled_window_set_policy(textArea.fHandle, GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC) @@ -1526,6 +1537,9 @@ method `wrap=`(textArea: NativeTextArea, wrap: bool) = else: gtk_text_view_set_wrap_mode(textArea.fTextViewHandle, GTK_WRAP_NONE) +method pAddKeyPressEvent(textArea: NativeTextArea) = + discard g_signal_connect_data(textArea.fTextViewHandle, "key-press-event", pTextAreaKeyPressSignal, cast[pointer](textArea)) + method `editable=`(textArea: NativeTextArea, editable: bool) = textArea.fEditable = editable gtk_text_view_set_editable(textArea.fTextViewHandle, editable) |
