wo ja derzeit gerade die Arbeiten an der neuen LTS laufen, sind mir zwei Unterschiede zwischen Windows und Mac aufgefallen, wo ich mir als Purebasic-Anfänger nicht sicher bin, ob man das als Bug oder als Feature ansehen sollte. Linux hab ich gerade keins greifbar.
Vielleicht werfen die Profis da mal einen Blick drauf? Mit einer kurzen Suche habe ich zumindest keine ähnlichen Postings gefunden.
1. Unter Windows kann ich mit diesem Skript per Enter von einem zum nächsten String-Gadget springen, und ich bekomme auch das jeweils den Focus verlierende Gadget noch gemeldet, so daß ich z.B. darauf reagieren kann, wenn sich im Gadget vorm Drücken der Enter-Taste der Inhalt geändert hat. Unter OSX funktioniert das Enter zwar zum Weiterspringen, aber ich bekomme keinen verlorenen Focus gemeldet. Wenn man statt meinem Enter-Shortcut nun das normale Tab benutzt, funktioniert der verlorene Focus jedoch unter Windows wie unter OSX.
Im Interesse der Crossplattform-Gleichheit sollte das aber doch wohl auch fürs den Shortcut überall gleich sein, oder?
2. Ich hatte in eine Software ein paar einfache eigene Hinweis-Dialoge gebaut, die unter Windows immer eine gesetzte Titelzeile bekamen, egal ob man bei den Flags von OpenWindow etwas angibt, oder nicht. Beim Mac erscheint die Titelzeile dagegen wirklich nur, wenn man explizit eines der Flags #PB_Window_TitleBar oder #PB_Window_SystemMenu setzt.
Im Interesse von Crossplattform sollte doch hier das Verhalten auch eher identisch sein, oder?
Code: Alles auswählen
EnableExplicit
Global.u prgende
Global.i winid,gdgid,gdgid1,gdgid2,gdgid3,butid,winflags,evtnr,evtyp,menid
winflags = 0; #PB_Window_TitleBar
winid = OpenWindow(#PB_Any, 20, 20, 300, 200, "Test-Window", winflags)
gdgid1 = StringGadget(#PB_Any,5,5,280,20,"Text 1")
gdgid2 = StringGadget(#PB_Any,5,35,280,20,"Text 2")
gdgid3 = StringGadget(#PB_Any,5,65,280,20,"Text 3")
butid = ButtonGadget(#PB_Any,100,150,100,30,"Close")
SetActiveGadget(gdgid1)
AddKeyboardShortcut(winid, #PB_Shortcut_Return, 100)
Repeat
evtnr = WaitWindowEvent(100)
If evtnr
Select evtnr
Case #PB_Event_Gadget
gdgid = EventGadget()
evtyp = EventType()
If evtyp = #PB_EventType_LostFocus
If gdgid = gdgid1
Debug "First gadget lost focus"
ElseIf gdgid = gdgid2
Debug "Second gadget lost focus"
ElseIf gdgid = gdgid3
Debug "Third gadget lost focus"
EndIf
EndIf
If gdgid = butid
prgende = 1
EndIf
Case #PB_Event_Menu
menid = EventMenu()
If menid = 100
gdgid = GetActiveGadget()
If gdgid = gdgid1
SetActiveGadget(gdgid2)
ElseIf gdgid = gdgid2
SetActiveGadget(gdgid3)
ElseIf gdgid = gdgid3
SetActiveGadget(gdgid1)
EndIf
EndIf
EndSelect
EndIf
Until prgende = 1