5.4.1994: WINX 2.3g BETA - Programmierung: WindowShade-Nachrichten WINX verschickt jetzt eine WM_SHADED-Nachricht, wenn ein Fenster ein- geklappt wird, bzw. eine WM_UNSHADED-Nachricht beim Ausklappen. Diese Nachrichten sind zu behandeln wie WM_ONTOP und WM_UNTOPPED, d.h. sie informieren nur ber einen Zustand, der sich zum Zeit- punkt des Eintreffens der Nachricht schon wieder ge„ndert haben kann. #define WM_SHADED 22360 /* [WM_SHADED apid 0 win 0 0 0 0] */ #define WM_UNSHADED 22361 /* [WM_UNSHADED apid 0 win 0 0 0 0] */ Sinnvoll w„re es jetzt noch ein Bit der wind_get/set-Subfunktion WF_BEVENT zum Abfragen und Žndern des Shadezustands zu benutzen. Wer unternimmt einen Vorstož bei ATARI? (Ich bring's nicht mehr :-( - WINX-Schalter G14: Mauszeiger w„hrend Echtzeitfunktionen umschalten Da einige VDI-Treiber Probleme mit dem Vorgehen des AES beim Sichern und Restaurieren der Mausform haben, kann man das Umschalten der Mausform jetzt abschalten. - GEM-Desktop: Negative Fensterkoordinaten Das GEM-Desktop speichert die Fensterkoordinaten als vorzeichenlosen Bytewert im Shellbuffer. Fenster, die links aus dem Bildschirm ge- schoben werden, erschienen daher bisher beim Laden des Shellbuffers am rechten Bildschirmrand. WINX bildet jetzt beim Speichern neg. Koordinaten auf 0 ab. Dies L”sung ist nicht perfekt, vermeidet jedoch Kompatibilit„tsprobleme. (reported by Henry Rolofs @ KR) 27.03.1994: WINX 2.3f BETA - Restaurierung der letzten Version - Interna: WindowShade Das automatische Entshaden beim Klick auf den Fuller fhrte in einigen Situationen dazu, daž der SCRENMGR das Loslassen des Mausknopfs nicht mehr mitbekam. 16.1.1994: WINX 2.3e BETA - Programmierung: appl_getinfo()-Test Da einige Programmiersprachen bei einer logischen Verknpfung immer beide Teilausdrcke auswerten, muž der Test dort anders formuliert werden, da appl_find( "?AGI") nur aufgerufen werden darf, wenn das Programm nicht sicher weiž, daž agi() implementiert ist. has_appl_getinfo = TRUE; if (aesversion < 0x400) { if (appl_find( "?AGI") != 0) { has_appl_getinfo = FALSE; } } if (has_appl_getinfo) { /* appl_getinfo() kann aufgerufen werden */ }; - Interna: Abfangen des GEMDOS-Traps In der 2.3d wurde bei Pexec() vergessen das Register D7 zu retten. Also schnell in die Tonne damit... - Konfiguration: GEM-Patch Die WINX-Defaultwerte zum Patchen eines GEMs k”nnen jetzt aus einer WINX.INF-Datei geladen werden (damit ist es nicht mehr notwendig WINX selbst zu patchen). 10.1.1994: WINX 2.3d BETA - Konfiguration: Gr”že der Rahmenelemente Die Gr”že eines Kontrollelements, wie dem Closer, entsprach bisher der einer quadratischen Zeichenzelle (entsprechend den wbox-/hbox-Rck- gabewerten von graf_handle). WINX erlaubt es die Gr”že zu konfigurieren. Hierzu fgt man ein Zeile folgenden Formats in WINX.INF ein: .GADGET=addw,addh # mit addw/addh >= 0 Die Gr”že eines Kontrollelements bestimmt sich dann aus der Gr”že einer Zeichenzelle (entsprechend den wchar-/hchar-Rckgabewerten von graf_handle) plus dem angegebenen Breiten- bzw. H”henwert. Da die Zeichen in der Regel rechts einen weiže Pixelspalte haben, benutzt man am besten einen ungeraden Breitenwert. Z.B. benutze ich: .GADGET=3,0 - Interna: WindowShade Wurde ein 'geshadetes' Fenster geschlossen, dann wurden unn”tiger- weise Redraws fr den kompletten Fensterbereich versandt (reported by Martin K”hling @ UN) - Interna: Bug-Fix In der Behandlung der Buttonereignisse gab es seit WINX 2.1 einen Bug (warum hat das nur keiner bemerkt?). War ein ACC-Fenster ganz vorne und die Hauptapplikation bernahm die Mauskontrolle (weil man z.B. ein Icon auf dem Desktop verschieben wollte), dann bekam das ACC danach tempor„r keine Mausklicks mehr gemeldet. (reported by Annius.Groenink@let.ruu.nl) 20.12.1993: WINX 2.3c BETA - GEM 3.x Bedienung: WindowShade Beim Klick auf den Fuller wird das Fenster automatisch entSHADEt. - Programmierung: appl_getinfo()-Test Andreas Kromke und ich haben uns auf eine einheitliche M”glichkeit geeinigt, wie Programme die Anwesenheit von appl_getinfo() bei GEM-Versionen < 4.00 erfragen k”nnen. Falls jemand ernsthafte Einw„nde hat, dann m”ge er sie bald „užern. if ((aesversion >= 0x400) || (appl_find( "?AGI") == 0)) { /* appl_getinfo() kann aufgerufen werden */ }; Jedes Programm, das appl_getinfo() implementiert bzw. erweitert, sollte bei appl_find( "?AGI") den Wert 0 liefern. - Interna: Das Flag fr die zus„tzliche Zeile von in Desktopfenstern wurde unter bestimmten Umst„nden nicht korrekt initialisiert. - GEM 3.x Desktop: Horizontaler Scrollbalken Brachte man ein Dateifenster auf maximale Gr”že, gab es Mll beim Scrollen. Aus irgendeinem Grund hatte der Autor des Desktops die Ausgabe auf eine bestimmte H”he beschnitten. - Interna: Der GEMDOS-Vektor wurde in 2.3b nicht umgeh„ngt, weil ich vergessen hatte eine Versionsnummer zu „ndern. - Interna: WF_WINXCFG lieferte unter TOS 1.x nicht die korrekte Schaltermaske, dadurch waren z.B. die Scrollboxen sichtbar, obwohl sie nicht zu bedienen waren (altes Problem, endlich behoben) - Interna: Wegen eines Fehlers ... (2.Versuch :-) 11.12.1993: WINX 2.3b BETA - Interna: Wegen eines Fehlers in verschiedenen HiSoft-Programme ver„ndert WINX bei wind_get( 0, WF_TOP, &topwin, &topowner, &belowwin, &ign) den Wert von nicht mehr. Eventuell fliegt das aber wieder raus. - Programmierung: WF_STACK wind_set( win, WF_STACK, abovewin, 0, 0, 0) Stellt das Fenster im Fensterstapel hinter das Fenster . Ist geschlossen, wird der Positionierungswunsch gespeichert und beim ™ffnen des Fensters mit wind_open() bercksichtigt. Diese Funktion ist im Experimentierstadium (in der Hoffnung, daž ATARI soetwas „hnliches implementiert). Der Funktionscode von WF_STACK entspricht momentan dem von WF_OWNER (welches keinen set-Modus hat). Kommentare zu WF_STACK sind erwnscht. Nebeneffekt der Implementierung: Das Redrawhandling bei BOTTOM wurde besser. - GEM 3.x Bedienung: WindowShade Klickt man mit der RECHTEN Maustaste in die Titelzeile eines Fensters, dann wird der untere Teil des Fensters unsichtbar. Ein weiterer Klick hebt diesen Modus wieder auf. Dies ist auch ein guter H„rtetest, ob Programme die Rechteckliste immer korrekt beachten. - GEM 3.x Bedienung: Ein Doppelklick auf die Titelzeile entspricht einem Klick auf das Maximalgr”ženelement (Fuller). Ich mag es nicht, aber ATARI (oder auch Windows) hat recht :-). Schaltet man die rechte Taste aus, dann wird die Funktion allerdings von der Doppelklickbehandlung von WINX ueberdeckt. Eventuell gibt es fr das Doppelklickfullen noch einen globalen Schalter. In diesem Fall hat die Funktion h”herer Priorit„t. - GEM 3.x Desktop: Ist der Schalter L2 (minimale Anzahl von Rahmenelementen) fr das Desktop eingeschaltet, dann ist der Menpunkt 'einpassen' immer aktiv und die Fenster haben keinen horizontalen Scrollbalken mehr (da man ihn dann sowieso nicht benutzen konnte). Vorteil: Eine Zeile mehr im Fenster. - GEM 3.x Bedienung: Scrollboxen Der Mauspfeil muž nur noch halbsoweit ausgelenkt werden um eine entsprechenden Erh”hung des Geschwindigkeitsfaktors zu erhalten. - Bedienung: Scrollgeschwindigkeit Der Defaultwert fr die Wiederholrate beim Scrollen wurde auf 0 gesetzt, da ich es leid war immer wieder erkl„ren zu mssen, warum manche Programme unter WINX langsamer scrollen. - Interna: Bug in TOS 1.04 šbernahm eine Applikation die Mauskontrolle w„hrend des Scrollens, dann erhielt sie ab der zweiten Scrollnachricht auch den Mausklick gemeldet. 29.10.1993: WINX 2.3a BETA - Ist bei wind_delete() das Fenster noch offen, dann wird es vorher aus dem Fensterstapel entfernt. Z.B. ist PC abgestrzt, wenn es auf diese Weise noch offene Fenster einer aus PC gestarteten Applikation aufr„umen wollte. ACHTUNG: Das Fenster wird aus Geschwindigkeitsgrnden nicht mit wind_close() geschlossen. - menu_attach() im Falcon-TOS 4.01-4.04 fhrte zum Absturz, falls man ein einmal eingetragenes Submenu abfragen, „ndern oder l”schen wollte. WINX behebt diesen Fehler. 17.10.1993: WINX 2.2 - Die .LOCAL-Zeile in WINX.INF wurde abgeschafft. Lokale Schalter eines Programms, die nicht direkt in der Schalterliste des Namens- musters gefunden werden, welches auf den Programmnamen pažt, werden jetzt nicht mehr aus der .LOCAL-Zeile, sondern aus der Zeile mit dem Namensmuster "*" gesetzt. Damit ist das ganze zwar nicht mehr so flexibel, dafr aber hoffentlich verst„ndlicher (oder auch nicht). 8.10.1993: WINX 2.2e BETA - Das mit dem Cookie hat wohl nicht funktioniert. Dumm, wenn man etwas nicht selbst testen kann. Hoffen wir, daž es jetzt klappt. 6.10.1993: WINX 2.2d BETA - WINX legt den WINX-Cookie jetzt auch an, falls das GEM bereits mit dieser WINX-Version gepatcht wurde (z.B. wenn man mit ROMRAM sein TOS resident im RAM installierte). WINXCOOK wird damit mehr oder weniger berflssig, wenn man nicht auf den Speicherplatz auf dem Bootdrive achten muž. - Das FULL-Rechteck sollte jetzt wieder korrekt bei wind_create() bernommen werden 26.9.1993: WINX 2.2c BETA - Funktionshandler erweitert um eine Funktion, die es erlaubt die Bildschirmgr”že nachtr„glich zu „ndern (fr den Support von WINX durch AutoSwitch-OverScan und Konsorten) #define WFC_SETSCR 12 (winxfunc( WFC_SETSCR, newscrw, newscrh) == 0) => SUCCESS - Patch fr 'Phantom Typist' Problem (TOS >= 1.06). Da sich der Fehler nicht gezielt reproduzieren l„žt, ist es aber nicht sicher, ob der Patch die L”sung bringt. Schaden tut er jedenfalls nicht ;-) - Fehlte die WINX.INF-Datei erschien eine fehlerhafte Meldung 20.9.1993: WINX 2.2b BETA - Die Defaultwerte von WINX k”nnen ber die folgenden Patchvariablen direkt in die Datei gepatcht werden. typedef struct { char prefix[ 12]; /* "PATCH HERE:" */ short size; /* sizeof( defaultS) */ short global; /* global switches */ short local; /* local switches */ short desk; /* desktop switches */ short isdelay; /* initial scroll delay */ short csdelay; /* continous scroll delay */ short ccdelay; /* continous close delay */ short cfdelay; /* continous full delay */ } defaultS; - Es ist jetzt nur noch ein Patchversuch pro WINX-Aufruf m”glich - Die verschiedenen Verz”gerungswerte k”nnen jetzt auch ber WINX.INF eingestellt werden (die Werte im CPX haben aber noch Priorit„t!): .DDELAY=arrow1,arrow2,closer,fuller Beispiel (entspricht der Defaulteinstellung): .DDELAY=460,40,1000,2000 (alle Werte in ms; die Aufl”sung des Timers betr„gt 20ms). - Im TOS 1.00-1.04 klappte die šberprfung, ob einer Applikation ein Mausklick zugeordnet ist, nicht 100%ig (z.B. wenn der SCRENMGR beim Scrollen die Kontrolle hatte) - Das Sichern eines gepatchten TOS 1.00-1.04 fhrte zu einem bombigen Ergebnis. - Nach Fehlermeldungen wartet WINX einen Moment, so daž diese lesbar sind. 13.9.1993: WINX 2.2a BETA - Der Einbau der appl_getinfo()-Funktion in WINX fhrte zu Problemen mit Programmen, die zum einen Userdefs in der Menzeile benutzen und zum anderen mit einer „lteren TurboC-GEM-Bibliothek gelinkt wurden (GEMINI 1.21, ...) . Dieser Fehler wird jetzt abgefangen. - wind_get( WF_WINX) liefert jetzt WF_WINX, falls es die Funktion gibt. Damit kann man darauf verzichten vorher zu prfen, ob wind_get() berhaupt einen gltigen Funktionswert liefert. Erg„nzend wurde das Beispiel fr eine has_appl_getinfo()-Funktion ge„ndert. #define WF_WINX 22360 int has_appl_getinfo( void) /* Liefert TRUE, falls das AES appl_getinfo() bereitstellt */ { static int hagi = -1; int ign; if (hagi < 0) { hagi = ((_GemParBlk.global[ 0] >= 0x400) || (wind_get( 0, WF_WINX, &ign, &ign, &ign, &ign) == WF_WINX)); }; return( hagi); } /* has_appl_getinfo */ 9.9.1993: WINX 2.1