2012-01-28 9 views
5

Chciałbym wykonać następujące czynności: Stwórz pełny ekran, zawsze w górnym oknie pygtk z widżetem webkit wyświetlającym jakiś html, ale z pudełkiem jest całkowicie przezroczysty, dzięki czemu widoczne są poniższe okna. (Wydaje się to możliwe: Is it possible to render web content over a clear background using WebKit?)Okno pygtk z ramką, która ignoruje wszystkie zdarzenia X (myszy) (przechodzi przez nie)

Chciałbym (czasami) przekazać wszystkie zdarzenia myszy, które pojawiają się w przezroczystym okienku do okien pod oknem mojej aplikacji, aby móc z nimi normalnie wchodzić . Więc nie tylko wizualnie przejrzyste, ale także przezroczyste dla zdarzeń myszy.

Teoretycznie, sądzę, że mogę wychwycić wszystkie zdarzenia, które mnie interesują, za pomocą pygtk Eventbox, znaleźć okno bezpośrednio pod kopalnią z wnck i przekazać to zdarzenie do niego python-xlib.

To nie wydaje się być najbardziej eleganckim rozwiązaniem; czy istnieje lepszy sposób?

Odpowiedz

5

Przekazywanie zdarzeń nie będzie działać tak, jak się wydawało; stwarza to wiele warunków wyścigowych, a niektóre aplikacje będą ignorować rzeczy od XSendEvent.

Co można zrobić, to ustawić maskę kształtu wejściowego. Zobacz http://www.x.org/releases/current/doc/xextproto/shape.html, a następnie spójrz na XFixesSetWindowShapeRegion() w , który pozwala określić kształt "rodzaj" (tutaj chcesz ShapeInput).

Coś jak:

XRectangle rect; 
XserverRegion region = XFixesCreateRegion(display, &rect, 1); 
XFixesSetWindowShapeRegion(display, window, ShapeInput, 0, 0, region); 
XFixesDestroyRegion(display, region); 

Możliwość ustawiania ShapeInput jest „tylko” 5-6 lat, więc jeśli zależy Ci na naprawdę brzydko starych wersji X11, użytkownik może być ladne.

+0

Ah, dzięki Havoc! – Rumex

+0

Ponadto po wpisaniu poprawnych warunków, natknąłem się na coś podobnego: http://stackoverflow.com/questions/4326534/x11-xlib-create-glasspane-window – Rumex

Powiązane problemy