7 Version A.05.02.i
7.1 Wichtige Änderungen
- Die Netzwerk-Option des ISA Dialog Managers (DDM, Distributed Dialog Manager) unterstützt nun das IPv6-Protokoll auf allen Architekturen, die IPv6 nativ unterstützen (siehe Kapitel „IPv6-Unterstützung“).
- Objekte mit virtueller Größe (Groupbox, Layoutbox, Notepage, Window) und Treeview verfügen unter Motif über die neue Option .options[opt_scroll_on_focus], mit der eingestellt werden kann, ob ein Kindobjekt, das den Fokus erhält, in den sichtbaren Bereich gescrollt wird (Gnats 11607, 11614 und Kapitel „Neue Option .options[opt_scroll_on_focus]“).
- Die Funktionen DM_SetVectorValue() und DM_GetVectorValue() werden nun auch für USW-Klassen bei indizierten Attributen mit Indizes vom Typ UCI_VECTOR und UCI_MATRIX unterstützt (Gnats 11389).
- Die Funktion sendEvent() einer USW-Klasse kann nur noch mit Ereignissen aufgerufen werden, die für USW-Klassen gültig sind und für ein Widget registriert wurden (Gnats 11144).
7.2 Windows
- Gnats 11669: Ein Edittext mit .options[opt_rtf] = true verliert keine Zeichenformate (Schriftart, fett, kursiv…) mehr, wenn er sichtbar gemacht wird. Beim Setzen des Inhalts im unsichtbaren Zustand werden die enthaltenen Formatierungen nach dem Sichtbarmachen nun wieder korrekt angezeigt.
- Gnats 11629: Es wurde ein Problem behoben, durch das in einem Edittext-Objekt mit kleiner Schriftart der Inhalt nach links gescrollt war, obwohl er eigentlich vollständig in den Edittext passte.
Hinweis
Das Problem wurde nur in einer IDM-Version beobachtet, die nicht allgemein distributiert wurde. - Gnats 11598: Die Scrollposition wird nun angepasst, wenn einem Edittext-Objekt eine große Schriftart zugewiesen wird. Dadurch wird der Cursor nicht mehr aus dem sichtbaren Bereich geschoben bzw. ein Inhalt, der in den Edittext passt, nicht mehr rechts abgeschnitten. Dies konnte zuvor sowohl beim statischen als auch beim dynamischen Setzen der Schriftart passieren, wobei das Problem nicht auftrat, wenn nachträglich .startsel und .endsel gesetzt wurden.
- Gnats 11588: GIF-Dateien, die einen „Application Extension“ Block enthalten, werden nun korrekt eingelesen und angezeigt.
- Gnats 11517: Beim Poptext wurde ein Fehler korrigiert, der bei .style <> poptext in bestimmten Konstellationen (z. B. Verkleinern von .itemcount bei .activeitem auf dem letzten Listenelement) dazu führen konnte, dass .content einen falschen Wert aufwies oder ein alter Wert im Eingabefeld angezeigt wurde.
-
Gnats 11503 (keine Änderung):
Hinweis zur Verwendung von Farben und
Visual Styles
beim TablefieldWenn beim Tablefield keine Farben gesetzt sind, verwendet der IDM die Systemfarben des jeweiligen Zustands. Bei .fieldshadow = true werden die
Visual Styles
des Windows-Objektspushbutton
verwendet. Er definiert die zugeordneten Farben. Wenn .rowheadshadow bzw. .colheadshadow angeschaltet sind, werden die Farben von denVisual Styles
des Windows-Objektsheaderitem
übernommen.Sind Farben gesetzt, werden diese verwendet. Bei einem aktiven Feld bestimmt .fgc die Hintergrundfarbe und .bgc die Vordergrundfarbe. Ist nur eine der beiden Farben gesetzt, wird für die andere Farbe die entsprechende Systemfarbe verwendet. Bei nur einer gesetzten Farbe werden also nicht Vorder- und Hintergrundfarbe vertauscht, sondern die gesetzte Farbe anders zugeordnet. Für ein aktives und insensitives Feld gibt es keine eigene Farbzuordnung. Es wird genauso wie ein aktives Feld dargestellt.
Empfehlung
Setzen Sie entweder beide Farben – .fgc und .bgc – oder keine der beiden Farben.
Anmerkung
Auch im ISA Dialog Manager für Windows 2000 wurden die Farben bereits wie beschrieben zugeordnet. Allerdings wurden für aktive Objekte praktisch nur Vorder- und Hintergrundfarbe vertauscht, was auch bei nur einer gesetzten Farbe meistens ein gutes Ergebnis brachte. Erst die
Visual Styles
(speziell des Windows-Pushbuttons) vertauschen zum Teil nicht mehr die Farben, sondern verwenden nur einen anderen Hintergrund. - Gnats 11474: Das Setzen des Fokus auf ein Notebook, dessen aktive Notepage keine fokussierbaren Kinder besitzt, funktioniert nun. Bemerkt wurde das Problem durch einen Mnemonic an einem insensitiven Statictext, der nur funktionierte, wenn die Notepage neben dem Statictext weitere Kindobjekte besaß.
- Gnats 11418: Bei aktivierten
Visual Styles
hat sich die Standard-Hintergrundfarbe eines insensitiven Spinbox-Objekts mit einem sensitiven Statictext als Kind, geändert. Es werden nun dieVisual Styles
des Edittext-Hintergrunds verwendet, wodurch das Aussehen nicht mehr von anderen Objekten abweicht. - Gnats 11401: Ein GIF-Bild mit Transparenz wird nun auch dann korrekt dargestellt, wenn der RGB-Wert des als transparent definierten Farbindex mit dem eines anderen Farbindex übereinstimmt. Der transparenten Farbe wird jetzt automatisch ein noch nicht verwendeter RGB-Wert zugeordnet.
- Behoben: Die Debug-Versionen der mitgelieferten Beispiele konnten nicht ausgeführt werden, weil in ihren Manifesten eine falsche C-Runtime angegeben war. Nun gibt es zwei Manifeste, die abhängig von der Konfiguration eingebunden werden.
7.3 Motif
-
Gnats 11608 (keine Änderung, siehe auch Gnats 11607 und 11614 unten):
Hinweis zu Objektposition und Tastaturfokus
Unter Motif können nur Objekte, die sichtbar sind oder in den sichtbaren Bereich gescrollt werden können, den Tastaturfokus erhalten. Dies ist das typische Verhalten von Motif-Anwendungen, im Unterschied zu MS Windows.
Aus Gründen der Kompatibilität zwischen den Plattformen ermöglicht es der ISA Dialog Manager auch unter Motif, Kindobjekte durch negative Positionsangaben in nicht sichtbaren Bereichen zu positionieren. Da Motif das eigentlich nicht erlaubt, muss er dafür Prüfmechanismen umgehen. Allerdings wird dadurch meistens ausgeschlossen, dass die Objekte per Tastaturnavigation erreichbar sind und den Fokus erhalten können.
Empfehlung
Positionieren Sie Objekte immer vollständig im sichtbaren Bereich, um zu gewährleisten, dass sie den Tastaturfokus erhalten können.
-
Gnats 11607 und 11614 (siehe auch Gnats 11608 oben):
Objekte mit virtueller Größe (Groupbox, Layoutbox, Notepage, Window) und Treeview verfügen über die neue Option .options[opt_scroll_on_focus]. Mit der Option kann eingestellt werden, ob ein Kindobjekt, das den Fokus erhält, in den sichtbaren Bereich gescrollt wird.
Siehe Kapitel „Neue Option .options[opt_scroll_on_focus]“.
- Gnats 11589: GIF-Dateien, die einen „Application Extension“ Block enthalten, werden nun korrekt eingelesen und angezeigt.
- Gnats 11578 und 11539: Objekte behalten nun den Fokus auch bei Attributänderungen, für die ein internes Zerstören und Neuanlegen („Clobbering“) notwendig ist.
- Gnats 11566: Wenn ein Notebook oder eine Notepage insensitiv geschaltet wird, kann es nicht mehr vorkommen, dass eine insensitive Notepage selektiert bzw. aktiviert wird.
- Gnats 11569: Beim Setzen des Cursors (Caret) in einem Edittext wird nun wieder die Selektion gelöscht. Betroffen war Open Motif 2.3, wo das Löschen der Selektion nach der Fehlerkorrektur #1279 in Open Motif nicht mehr funktionierte.
-
Gnats 11574: Beim Tablefield funktioniert nun die horizontale Ausrichtung von mehrzeiligen Texten mit .xalignment bzw. .colalignment.
Hinweis
Beim Edittext und damit auch beim Objekt, das für die Bearbeitung von Texten in einem Tablefield genutzt wird, ist weiterhin keine rechtsbündige oder zentrierte Ausrichtung möglich.
- Gnats 10927: Das Attribut .toolbar ist nun – analog zu den anderen Hierarchieattributen wie .groupbox und .notepage – bei allen Objektklassen vorhanden und über die Attributliste .attr[] zugänglich.
7.3.1 Neue Option .options[opt_scroll_on_focus]
Objekte mit virtueller Größe (Groupbox, Layoutbox, Notepage, Window) und Treeview verfügen über die neue Option .options[opt_scroll_on_focus]. Mit ihr kann eingestellt werden, ob ein Kindobjekt, das den Fokus erhält, in den sichtbaren Bereich gescrollt wird.
Zweck der Option
Die Option .options[opt_scroll_on_focus] dient in erster Linie dazu, die Erreichbarkeit von Objekten per Tastaturnavigation zu verbessern und zu ermöglichen, dass sie in bestimmten Konstellationen per Tastatur oder Mausklick den Fokus erhalten können. Damit kann ein konsistenteres Verhalten zwischen Motif- und Windows-Anwendungen erreicht werden.
Allerdings kann durch die Option – aufgrund von Unterschieden zwischen den Plattformen bei der Fokus-Behandlung – weder eine vollständige Konsistenz erzielt werden, noch die Erreichbarkeit von Objekten per Tastatur und ihre Fokussierbarkeit in allen Situationen gewährleistet werden.
Zusammenhang zwischen Objektposition, Sichtbarkeit, Tastaturnavigation und Fokussierbarkeit unter Motif
Unter Motif können nur Objekte, die vollständig sichtbar sind oder in den sichtbaren Bereich gescrollt werden können, den Fokus erhalten. Dies ist das typische Verhalten von Motif-Anwendungen, im Unterschied zu MS Windows. Dabei ist zu beachten, dass ein Kindobjekt in einem Gruppierungsobjekt eventuell vollständig sichtbar ist, aber trotzdem per Tastatur unerreichbar und nicht fokussierbar ist, weil das Gruppierungsobjekt nicht vollständig sichtbar ist.
Aus Gründen der Kompatibilität zwischen den Plattformen ermöglicht es der ISA Dialog Manager auch unter Motif, Kindobjekte durch negative Positionsangaben für die x- und y-Koordinaten der linken oberen Ecke in nicht sichtbaren Bereichen zu positionieren. Motif erlaubt dies eigentlich nicht, sodass der IDM dafür Prüfmechanismen umgehen muss. Als Konsequenz wird dadurch meistens ausgeschlossen, dass die Objekte per Tastaturnavigation erreichbar sind und den Fokus erhalten können.
Empfehlungen
- Der beste Weg, um die Erreichbarkeit von Objekten per Tastaturnavigation und ihre Fokussierbarkeit per Tastatur und Maus zu gewährleisten, besteht darin, sie immer vollständig im sichtbaren Bereich zu positionieren und negative Werte für ihre x- und y-Koordinaten zu vermeiden.
- Wenn dies nicht möglich ist, kann versucht werden, die Tastaturnavigation und Fokussierbarkeit mithilfe von .options[opt_scroll_on_focus] zu verbessern.
Beschreibung der Option
Attribut |
.options[opt_scroll_on_focus] |
Datentyp |
boolean |
Standardwert |
true |
Zugriff |
get, set |
Zulässig bei |
groupbox, layoutbox, notepage, treeview, window |
Plattform |
Motif (Unix) |
IDM-Version |
ab A.05.02.i |
Werte
-
true (Standard)
Der IDM versucht bei Gruppierungsobjekten (Groupbox, Layoutbox, Notepage, Window) mit virtuellem Bereich bzw. beim Treeview, ein Kindobjekt bzw. einen Eintrag, die den Fokus erhalten sollen, in den sichtbaren Bereich zu scrollen.
-
false
Der IDM versucht nicht, zu fokussierende Kinobjekte bzw. Einträge in den sichtbaren Bereich zu scrollen.
Zwar können nicht oder nur teilweise sichtbare Kindobjekte bzw. Einträge bei abgeschaltetem Scrollen den Fokus nicht erhalten, aber Motif erlaubt zumindest, Kindobjekte und Einträge zu fokussieren, die sich bereits vollständig im sichtbaren Bereich befinden.
Hinweis
-
Treeview
Ein Treeview kann bei .options[opt_scroll_on_focus] = false per Tastaturnavigation unerreichbar sein, falls sich der aktive Eintrag außerhalb des sichtbaren Bereichs befindet. Er bleibt aber per Mausklick fokussierbar.
7.4 Kern
- Gnats 11678: Das Ändern eines Attributs an einem Document-Modell löst keine Vererbung des Attributs .version[] mehr aus. Der Fehler konnte zum Löschen eines bestehenden DOM-Baums führen, da beim Ändern von .version[] eine andere Version der XML-Schnittstelle geladen wurde.
- Gnats 11592: Es kommt nicht mehr zu Abstürzen, wenn unter Microsoft Windows die Codepage CP_ucp (iconv) eingestellt wird. Eine Umwandlung in CP_ucp ist aber weiterhin nicht möglich, da es unter MS Windows kein iconv gibt.
7.5 Netz
- Gnats 11660: Die Netzwerk-Darstellungsseite beendet sich nicht mehr mit einem Protokollfehler, wenn ein Nethandler installiert ist, der die Daten geändert hat. Ursache des Problems war, dass die Anwendungsseite eine nicht als DM_NET_CONNECT markierte Anfrage schickte, bevor AppInit aufgerufen wurde.
- Neu: Das Tracing auf der Anwendungsseite kann Texte nun in der Application-Codepage und in der internen Codepage erhalten. Mit dieser Änderung werden Probleme behoben, die sich in bestimmten Situationen aus der Konvertierung zwischen beiden Codepages ergeben können (z. B. unleserliche Format-Strings).
- Neu: Texte können nun in der Application-Codepage und in der internen Codepage empfangen und gesendet werden. Mit dieser Änderung werden Probleme behoben, die sich in bestimmten Situationen aus der Konvertierung zwischen beiden Codepages ergeben können (z. B. Fehlschlagen dynamischer Funktionsaufrufe, weil der Funktionsname bei einer Konvertierung verfälscht wurde).
7.5.1 IPv6-Unterstützung
Die Netzwerk-Option des ISA Dialog Managers (DDM, Distributed Dialog Manager) unterstützt nun das IPv6-Protokoll auf allen Architekturen, die IPv6 nativ unterstützen.
Wenn im Dialogskript eine IPv6-Adresse angegeben werden soll, muss sie – wie bei URLs üblich – in eckige Klammern ('[' und ']') eingeschlossen werden (z. B. "[::1]").
Hinweis
Die Voraussetzung der „nativen“ Unterstützung bedeutet zum Beispiel, dass IPv6 auf MS Windows 2000 nicht unterstützt wird, da die „Microsoft IPv6 Technology Preview for Windows 2000“ andere DLLs verwendet.
7.6 Debugger
- Gnats 11555: Bei der Auswertung von Variablen und Ausdrücken in komplexen Modulstrukturen und Ladekonstellationen verursacht der Debugger keinen Assfail mehr.
7.7 COBOL
-
Gnats 11593: Unnötige Konvertierungen zwischen interner und Application-Codepage und zurück werden nun vermieden, sodass keine Gefahr mehr besteht, Strings durch diese Konvertierungen zu verfälschen.
Das Problem wurde bemerkt, weil sich in einer Anwendung COBOL-Funktionen auf der Anwendungsseite des DDM nicht aufrufen ließen. Sie sollten dynamisch aufgerufen werden (DMufcob_BindThruLoader), wobei eine Application-Codepage eingestellt war, die den ASCII Bereich veränderte (im beobachteten Fall CP_ucp unter Verwendung von iconv).
7.8 USW
-
Neu (Gnats 11389): Die Funktionen DM_SetVectorValue() und DM_GetVectorValue() werden nun auch für USW-Objekte mit indizierten Attributen unterstützt. Der Index (Element „indexed“ des Attribut-Deskriptors) kann dabei vom Typ UCI_VECTOR oder UCI_MATRIX sein.
Datentypen für Objektreferenzierungen im Attribut-Deskriptor
Im Attribut-Deskriptor dürfen als Typ für Objektreferenzierungen nur Datentypen von Ressourcen (DT_color, DT_font, DT_tile usw.) verwendet werden, da das USW-API keinen Zugriff auf beliebige andere Objekte erlaubt. Für andere Werte kann man DT_anyvalue verwenden bzw. die Referenzierungen in benutzerdefinierte Attribute auslagern.
-
Änderung (Gnats 11144): sendEvent() kann nur noch mit Ereignissen aufgerufen werden, die für USW-Klassen gültig sind und für die jeweilige Klasse registriert wurden. Dadurch ist das fehlerhafte Verschicken externer Ereignisse (extevents) über sendEvent() nun nicht mehr möglich.
Änderung bei den Funktionen registerClass() und sendEvent()
Im Events-Parameter (UC_N_events) von registerClass() können nur folgende Ereignisse registriert werden und sind damit in der Ereignis-Maske (evmask in UC_EventInfo) des Parameters event von sendEvent() erlaubt:
EM_activate
EM_changed
EM_charinput
EM_close
EM_cursor_move
EM_dbselect
EM_deactivate
EM_deiconify
EM_deselect
EM_deselect_enter
EM_finish
EM_help
EM_hscroll
EM_iconify
EM_modified
EM_move
EM_open
EM_resize
EM_scroll
EM_select
EM_start
EM_vscroll