StringGadget Return Key (All OS)
Posted: Sat Oct 19, 2019 10:47 am
Before I lose it again at all my sipped
Update v1.04.1
-Bugfix macOS (Tab-Key)
[/size]

Update v1.04.1
-Bugfix macOS (Tab-Key)
Code: Select all
;-TOP
; StringGadget ReturnKey by mk-soft, Version v1.04.1
; ----
CompilerIf #PB_Compiler_Version >= 572
#PB_EventType_ReturnKey = $501 ; SDK Event.h
CompilerEndIf
#MenuEvent_ReturnKey = 10000
Procedure DoEventGadgetType()
Protected gadget = EventGadget()
If IsGadget(gadget)
Select GadgetType(gadget)
Case #PB_GadgetType_String
Select EventType()
Case #PB_EventType_Focus
CompilerIf #PB_Compiler_OS = #PB_OS_MacOS
; Bugfix macOS event order with 'tab' key
If EventData() = #False
PostEvent(#PB_Event_Gadget, EventWindow(), EventGadget(), #PB_EventType_Focus, #True)
Else
AddKeyboardShortcut(0, #PB_Shortcut_Return, #MenuEvent_ReturnKey)
EndIf
CompilerElse
AddKeyboardShortcut(0, #PB_Shortcut_Return, #MenuEvent_ReturnKey)
CompilerEndIf
Case #PB_EventType_LostFocus
RemoveKeyboardShortcut(0, #PB_Shortcut_Return)
EndSelect
EndSelect
EndIf
EndProcedure
Procedure DoEventReturnKey()
PostEvent(#PB_Event_Gadget, GetActiveWindow(), GetActiveGadget(), #PB_EventType_ReturnKey)
EndProcedure
; ****
CompilerIf #PB_Compiler_IsMainFile
If OpenWindow(0, 0, 0, 400, 300, "StringGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
StringGadget(0, 10, 10, 380, 30, "StringGadget 1")
StringGadget(1, 10, 50, 380, 30, "StringGadget 2")
EditorGadget(2, 10, 90, 380, 190)
CreateMenu(0, WindowID(0))
BindEvent(#PB_Event_Gadget, @DoEventGadgetType())
BindMenuEvent(0, #MenuEvent_ReturnKey, @DoEventReturnKey())
SetActiveGadget(0)
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
Break
Case #PB_Event_Gadget
Select EventGadget()
Case 0
Select EventType()
Case #PB_EventType_ReturnKey
Debug "Return Gadget 0"
;SetActiveGadget(1)
EndSelect
Case 1
Select EventType()
Case #PB_EventType_ReturnKey
Debug "Return Gadget 1"
;SetActiveGadget(2)
EndSelect
EndSelect
EndSelect
ForEver
EndIf
CompilerEndIf