summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authortrustable-code <krauter.simon@arcor.de>2018-02-06 20:02:03 +0100
committertrustable-code <krauter.simon@arcor.de>2018-02-06 20:02:03 +0100
commit679538d03e9abf17b9750ca8c1c6cb5118a12c47 (patch)
tree53666501caa86d60d9d73a4171778a67ba919693 /src
parent0fb2e474141dfe45a69644a3ba92fc83e65e34e7 (diff)
downloadNiGui-679538d03e9abf17b9750ca8c1c6cb5118a12c47.tar.gz
NiGui-679538d03e9abf17b9750ca8c1c6cb5118a12c47.zip
Tabstops on Windows
Diffstat (limited to 'src')
-rwxr-xr-xsrc/nigui/private/windows/platform_impl.nim15
-rwxr-xr-xsrc/nigui/private/windows/windows.nim1
2 files changed, 11 insertions, 5 deletions
diff --git a/src/nigui/private/windows/platform_impl.nim b/src/nigui/private/windows/platform_impl.nim
index dbe6d7c..4ca99bc 100755
--- a/src/nigui/private/windows/platform_impl.nim
+++ b/src/nigui/private/windows/platform_impl.nim
@@ -241,7 +241,12 @@ proc pHandleWMKEYDOWNOrWMCHAR(window: Window, control: Control, unicode: int, ke
controlEvent.unicode = windowEvent.unicode
controlEvent.character = windowEvent.character
control.handleKeyDownEvent(controlEvent)
- result = controlEvent.cancel
+ if controlEvent.cancel:
+ return true
+
+ # Tabstop:
+ if windowEvent.unicode == 9:
+ discard SetFocus(GetNextDlgTabItem(cast[WindowImpl](window).fHandle, cast[ControlImpl](control).fHandle, true))
proc pHandleWMKEYDOWN(window: Window, control: Control, wParam, lParam: pointer): bool =
if not GetKeyboardState(pKeyState): pRaiseLastOSError()
@@ -1114,12 +1119,12 @@ proc pContainerWndProc(hWnd: pointer, uMsg: int32, wParam, lParam: pointer): poi
proc init(container: ContainerImpl) =
var dwStyle: int32 = WS_CHILD
- container.fHandle = pCreateWindowExWithUserdata(pContainerWindowClass, dwStyle, 0, pDefaultParentWindow, cast[pointer](container))
+ container.fHandle = pCreateWindowExWithUserdata(pContainerWindowClass, dwStyle, WS_EX_CONTROLPARENT, pDefaultParentWindow, cast[pointer](container))
# ScrollWnd:
- container.fScrollWndHandle = pCreateWindowExWithUserdata(pContainerWindowClass, dwStyle, 0, container.fHandle, cast[pointer](container))
+ container.fScrollWndHandle = pCreateWindowExWithUserdata(pContainerWindowClass, dwStyle, WS_EX_CONTROLPARENT, container.fHandle, cast[pointer](container))
pShowWindow(container.fScrollWndHandle, SW_SHOW)
# Inner:
- container.fInnerHandle = pCreateWindowExWithUserdata(pContainerWindowClass, dwStyle, 0, container.fScrollWndHandle, cast[pointer](container))
+ container.fInnerHandle = pCreateWindowExWithUserdata(pContainerWindowClass, dwStyle, WS_EX_CONTROLPARENT, container.fScrollWndHandle, cast[pointer](container))
pShowWindow(container.fInnerHandle, SW_SHOW)
container.Container.init()
@@ -1240,7 +1245,7 @@ proc pTextBoxWndProc(hWnd: pointer, uMsg: int32, wParam, lParam: pointer): point
result = pCommonControlWndProc(pTextBoxOrigWndProc, hWnd, uMsg, wParam, lParam)
proc init(textBox: NativeTextBox) =
- textBox.fHandle = pCreateWindowExWithUserdata("EDIT", WS_CHILD, WS_EX_CLIENTEDGE, pDefaultParentWindow, cast[pointer](textBox))
+ textBox.fHandle = pCreateWindowExWithUserdata("EDIT", WS_CHILD or WS_TABSTOP, WS_EX_CLIENTEDGE, pDefaultParentWindow, cast[pointer](textBox))
pTextBoxOrigWndProc = pSetWindowLongPtr(textBox.fHandle, GWLP_WNDPROC, pTextBoxWndProc)
textBox.TextBox.init()
diff --git a/src/nigui/private/windows/windows.nim b/src/nigui/private/windows/windows.nim
index cc70dc1..ea0bef2 100755
--- a/src/nigui/private/windows/windows.nim
+++ b/src/nigui/private/windows/windows.nim
@@ -132,6 +132,7 @@ const
WS_TABSTOP* = 0x00010000
WS_THICKFRAME* = 0x00040000
WS_VSCROLL* = 0x00200000
+ WS_EX_CONTROLPARENT* = 0x00010000
# DT_CALCRECT* = 1024
# OBJ_FONT* = 6
# SM_XVIRTUALSCREEN* = 76