Hallo,
wie stelle ich fest, dass der Window-Manager (hier Gnome) mein Fenster auf dem X-Server schließen möchte. Bisher ist es so, dass, wenn man den Schließen-Button in der Fensterleiste klickt das Fenster einfach abgeschossen wird und danach kracht es in meinem Programm, heißt ich kann es nicht regulär beenden.
Unter Windows gibt es z.B. das "DestroyWindow" (oä) -Event, womit ich auf das Schließen noch innerhalb des Eventloop reagieren kann.
add:
Es gibt ein 'DestroyNotify'-Event, dass beim Schließen des Fensters eigentlich kommen sollte. Es kommt aber nicht. Um sicherzugehen, dass ich auch alle Events kriege, habe ich einmal die Maske auf Maximum 0x0ffffff gesetzt und alle Events ausgeben lassen. Da wird mir alles angezeigt, nur beim Schließen des Fensters kommt keine Vorwarnung. Stattdessen lande ich direkt im Errorhandler und da ist das Kind eigentich schon in den Brunnen gefallen! Es muss doch einen sauberen Weg geben,dass Programm zu beenden, der Window-Manager muss mir doch die Mögichkeit geben, noch aufzuräumen und. evtl. Dateien zu schließen etc. Ich find aber auch keine Hilfe im Netz.
add:
Ich werde einfach nicht fündig. Ich dachte eigentlich, dass das Basics sind. Ich verwende in meinem Eventloop 'XNextEvent()'. Die Funktion blockt, bis ein Event, dass in der Suchmaske ist, auftaucht. Das funktoniert ganz hervorragend, bis einer das blöde 'x'zum Schließen im Fensterrahmen klickt. Dann nämlich geht es ab in den Errorhandler (offenbar zerstört der Window-Manager mein Fenster auf dem Server, gibt mir aber keine Nachricht - Manager eben! ) und anschließend killt die X-Client-Bibliothek wegen verlorener Verbindung meinen Prozess. Das nenn ich 'kurzen Prozess'!! Einfach den Stecker rausziehen und laufengehen, das haben wir gern
lg
crischi.
Xlib Quit durch Window-Manager
- crischi
- Beiträge: 93
- Registriert: 08.02.2010 20:44:10
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Chemnitz
Xlib Quit durch Window-Manager
"The optimist proclaims that we live in the best of all possible worlds, and the pessimist fears this is true", James Branch Cabell