2012-01-28 29 views
5

Tôi muốn thực hiện như sau: Tạo toàn màn hình, luôn ở trên cửa sổ pygtk với tiện ích webkit hiển thị một số html, nhưng có hộp đó là hoàn toàn minh bạch, để các cửa sổ dưới đây có thể nhìn thấy. (Điều này có vẻ là có thể: Is it possible to render web content over a clear background using WebKit?)cửa sổ pygtk có hộp bỏ qua tất cả các sự kiện X (chuột) (chuyển chúng qua)

Điều tôi muốn là (đôi khi) chuyển tất cả các sự kiện chuột xảy ra trong hộp trong suốt xuống cửa sổ bên dưới cửa sổ ứng dụng của tôi, để tôi có thể tương tác với chúng bình thường . Vì vậy, không chỉ trực quan minh bạch, mà còn minh bạch cho các sự kiện chuột.

Về mặt lý thuyết, tôi cho rằng tôi có thể nắm bắt tất cả các sự kiện mà tôi quan tâm với Hộp tổ chức sự kiện pygtk, tìm cửa sổ ngay bên dưới của tôi bằng wnck và chuyển sự kiện này tới python-xlib.

Điều này không chính xác có vẻ giống như giải pháp thanh lịch nhất; Có cách nào tốt hơn?

Trả lời

5

Chuyển tiếp sự kiện sẽ không hoạt động tốt như bạn đã đoán; nó tạo ra rất nhiều điều kiện chủng tộc và một số ứng dụng sẽ bỏ qua mọi thứ từ XSendEvent.

Việc bạn có thể làm là đặt mặt nạ hình dạng đầu vào. Xem http://www.x.org/releases/current/doc/xextproto/shape.html và sau đó xem XFixesSetWindowShapeRegion() trong /usr/include/X11/extensions/Xfixes.h cho phép bạn chỉ định hình dạng "loại" (tại đây bạn muốn ShapeInput).

Cái gì như:

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

Khả năng thiết lập ShapeInput là "chỉ" 5-6 tuổi vì vậy nếu bạn quan tâm đến phiên bản cũ thực sự không hấp dẫn của X11, bạn có thể được hosed.

+0

Ah, cảm ơn Havoc! – Rumex

+0

Ngoài ra, khi googling các điều khoản chính xác, tôi đi qua một cái gì đó tương tự: http://stackoverflow.com/questions/4326534/x11-xlib-create-glasspane-window – Rumex

Các vấn đề liên quan