Fórumok
python gtk-ban behúzom egy gtk.Socket() widget-be egy másik processz ablakját.
ez a program nyitna egy új ablakot (ugyanaz a processz), xwininfo-val látszik, hogy létezik az ablak, viszont a gtk beágyazás miatt nem jelenik meg.
kapok róla a beágyazó programban valahol valamilyen eventet hogy létrejött egy toplevel Window? hogy aztán reparent-elni* tudjam?
hogy kéne láthatóvá tenni?
* az nem az, de nem tom hogy hívják
Hozzászólások
annyival tudom pontosítani a helyzetet, hogy a beágyazott program
newwindow = gtk_plug_new(wid);
-val nyitja az új ablakot, ahol a newwindow a meg nem jelenő ablakom, a wid a Socket id-ja, amibe már egy ablak bele van ágyazva.
~~~~~~~~
deb http://deb.uucp.hu/ wheezy yazzy repack
lehetséges-e egyszerre több Plug egy Socket-ban?
ha nem, akkor hogy jöhetet létre a newwindow?
hol kéne eventet kapnom arról, hogy a Socket új Plug-ot kapott?
~~~~~~~~
deb http://deb.uucp.hu/ wheezy yazzy repack
félmegoldás, az is csúnya:
kell hozzá a wnck modul,
minden új ablakot figyelek a desktopon,
amelyiknek a pidje azonos a beágyazott progim pidjével, azt behúzom egy másik gtk.Sock-ba (tehát nem abba amibe már be van húzva az első ablak).
~~~~~~~~
deb http://deb.uucp.hu/ wheezy yazzy repack
feléleszteném a thread-et, mert egy szorosan ehhez kapcsolódó hibába futottam.
az ablak behúzása gtk.Socket widget-be sikerült a Socket.add_id(window.get_xid()) hívással ... bizonyos környezetben!
ha nem fut ablakkezelő (csak a csupasz X11), akkor Socket.add_id -vel behúzza a kívánt ablakot.
ha mondjuk fluxbox fut, akkor is.
ha icewm fut mint ablakkezelő, akkor is végbemegy a Socket.add_id, meg is kapja az 'embedded' signal-t, de utána egyből szabályosan bezárja az a behúzott ablakot.
még érdekesebb, hogy az embeddelés az ellenkező irányba ebben az esetben is működik. tehát ha pl. xterm -into kapcsolójával a beágyazandó ablak folyamata embeddeli magát.
hogy tudom megállapítani, mitől záródik be icewm alatt az ablak?
~~~~~~~~
deb http://deb.uucp.hu/ wheezy yazzy repack