22 Feb 2008 

Heißer als ein HotFix?

Nachtrag vom 28.2.2008:
der Release 3 der 4D V2004.7 ist draußen. Jetzt frage ich den Release ab und bringe auf MacOS wieder ein Sheet-Window. Auf Windows bleibt es beim workaround für OSX.5.2
If ($release_L>=3)
  `nichts machen
Else
  $WinType:=Movable form dialog box
 $simulateSheetWindow_b:=True
End if

Nach einem viertel Jahr hat Apple in Leopard (10.5.2) die transparente Menüzeile wieder gefixt. Das ist gut so. Leider hat die 10.5.2 für uns 4D-Entwickler einen gravierenden Nachteil: die sheet windows funktionieren nicht mehr, wie sie sollen. Nur noch Tasten-Befehle werden erkannt. 4D geht es nicht alleine so. Doch was nutzt es mir, meine Kunden wollen endlich das verbesserte Leopard.

Aus alter Gewohnheit öffne ich Fenster immer so:
$winRef:=myOFW (->[INTERFACE];"Personen_Belegung";$windowtype_L)
Hier ein Sheet-Window, das seit 10.5.2 nur noch auf Enter und ⌘. reagiert. image

Mein Hotfix in myOFW, umsonst und ohne Gefahr für meine Anwender, sieht so aus:

: (($WinType=Sheet window ) | ($WinType=Sheet form window ))
  Case of
    : (onWindows )
    $WinType:=Movable form dialog box
    $simulateSheetWindow_b:=True
    : ($sysVersion="10.5.2")
    If ($4dVersion<="0807")
      $WinType:=Movable form dialog box
      $simulateSheetWindow_b:=True
    End if
End case

GET FORM PROPERTIES($Table->;$Layout->;$b->;$h->;$Pages->;$FixWide->;$FixHeight->;$Titel)


GET WINDOW RECT($L->;$O->;$R->;$U)
$L:=(($R+$L)\2)-($b\2)
If ($simulateSheetWindow_b)
  $O:=$O+22
Else
  $O:=(($U+$O)\2)-($h\2)
End if
$0:=Open window($L;$O;$L;$b;$O+$h;$WinType;$Titel;"CloseOK")

Das sheet window klebt nach der Korrektur mittig am Fenstertitel:

image

Weiterer Nebeneffekt: dieses Fenster gefällt mir besser als die von 4D unter Windows angebotene Variante. So hat der Ärger mit dem sheet window mir was gebracht :-) Die Windows-Variante bleibt.

Apropos: es gibt inzwischen einen offiziellen 4D 2004-HotFix, der ist teurer als meiner und meiner ist mir lieber. image