Z-Order GUI Problem

Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Neue Antwort erstellen

 

Macintosh

Betreff: Z-Order GUI Problem

BeitragMi, Dez 29, 2010 0:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi.

Ich Programmiere mir grade mein eigene GUI-modul.
Nur habe ich ein Problem mit der Z-Order, der Fenster, bzw. allen Views.

Meine Fenster habe eine methode toFront(), i der sie auch der "child - liste" des parent-vies heraus genommen werden, und dann als letztes view wieder eingefügt werden.
Dadurch werden sie als letztes gezeichnet und sind auch ganz oben.

die Methode wird bei einem klich auf das fenster aufgerufen.
Das Problem: Befinden sich mehrere Fenster übereinander, so stürzt das programm ab, weil dich alle fenster in den vordergrund bringen wollen.
Flushe ich meine mouseHit - variable, nachdem ein fenster angeklickt wurde, klappt es eig, nur das sich die fenster dann "abwechseln", denn das hinterste fenster bekommt ja das "event" der maus zu erst.

ich müsste die liste(n) jedes view's also umkehren, und das bei jedem update der GUI, was natürlich sau langsam wird.
Gibt es da irgend eine gute idee?

Bzw. wie löst ihr das?

Hoffe man kann verstehen um was es geht.

Danke :)

Thunder

BeitragMi, Dez 29, 2010 0:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich gehe die Liste immer einmal richtig rum und einmal in die andere Richtung durch (ohne Umdrehen) - das eine Mal zeichnend, das andere Mal updatend. Hier ist der "Hack", den ich meistens dazu verwende (etwas unschön):
BlitzMax: [AUSKLAPPEN]
Local w:TLink
w=windowlist.lastlink()
Repeat
' hier w.value() speichern und verwenden
w=w.prevlink()
Until w=Null

Sollte so funktionieren, ist jetzt nur aus dem Kopf aufgeschrieben.

mfg Thunder

Edit: Die While-Schleife ist sicher eine gute Idee Very Happy Ich habe sie in dem Fall nicht reingetan, weil ich um beide Schleifen (die For-Schleife und Repeat-Schleife) normalerweise eine If-Abfrage habe, die beide nur dann ausführt, wenn die Liste zumindest ein Element hat.
Meine Sachen: https://bitbucket.org/chtisgit https://github.com/chtisgit
  • Zuletzt bearbeitet von Thunder am Mi, Dez 29, 2010 2:29, insgesamt einmal bearbeitet

mpmxyz

BeitragMi, Dez 29, 2010 1:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Um kein Problem bei leeren Listen zu haben, würde ich eher eine While-Schleife benutzen:
BlitzMax: [AUSKLAPPEN]
Local windowLink:TLink
windowLink=windowList.LastLink()
While windowLink
'das selbe in grün
windowLink=windowLink.PrevLink()
Wend

Ansonsten wäre dies eine gute Lösung.
mfG
mpmxyz
Moin Moin!
Projekte: DBPC CodeCruncher Mandelbrot-Renderer

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group