[kupfer: 37/67] ui: Transparent window frame if compositing



commit f57e33a4ba672cf9f197eecd9898757e5cef98cb
Author: Ulrik Sverdrup <ulrik sverdrup gmail com>
Date:   Wed Mar 16 22:49:02 2011 +0100

    ui: Transparent window frame if compositing

 kupfer/ui/browser.py |   23 +++++++++++++++++++++--
 1 files changed, 21 insertions(+), 2 deletions(-)
---
diff --git a/kupfer/ui/browser.py b/kupfer/ui/browser.py
index 7a7902e..fd4710f 100644
--- a/kupfer/ui/browser.py
+++ b/kupfer/ui/browser.py
@@ -1670,6 +1670,10 @@ class WindowController (pretty.OutputMixin):
 			topbar.pack_start(title_align, True, True)
 			topbar.pack_start(button_box, False, False)
 			topbar.show_all()
+			screen = gtk.gdk.screen_get_default()
+			rgba = screen.get_rgba_colormap()
+			if rgba:
+				self.window.set_colormap(rgba)
 
 		self.window.set_title(version.PROGRAM_NAME)
 		self.window.set_icon_name(version.ICON_NAME)
@@ -1720,18 +1724,33 @@ class WindowController (pretty.OutputMixin):
 		cr = widget.window.cairo_create()
 		w,h = widget.allocation.width, widget.allocation.height
 
+
 		region = gtk.gdk.region_rectangle(event.area)
 		cr.region(region)
 		cr.clip()
 
+		def rgba_from_gdk(c, alpha):
+			return (c.red/65535.0, c.green/65535.0, c.blue/65535.0, alpha)
+
+		if widget.is_composited():
+			cr.set_operator(cairo.OPERATOR_CLEAR)
+			cr.rectangle(0,0,w,h)
+			cr.fill()
+			cr.rectangle(0,0,w,h)
+			cr.set_operator(cairo.OPERATOR_OVER)
+			c = widget.style.bg[widget.get_state()]
+			cr.set_source_rgba(*rgba_from_gdk(c, 0.8))
+			cr.fill()
+
 		c = widget.style.dark[gtk.STATE_SELECTED]
-		cr.set_operator(cairo.OPERATOR_SOURCE)
-		cr.set_source_rgba(c.red/65535.0, c.green/65535.0, c.blue/65535.0, 0.7)
+		cr.set_operator(cairo.OPERATOR_OVER)
+		cr.set_source_rgba(*rgba_from_gdk(c, 0.7))
 
 		make_rounded_rect(cr, 0, 0, w, h, 10)
 		cr.set_line_width(2.5)
 		cr.stroke()
 
+
 	def _size_allocate(self, widget, allocation):
 		if self._use_window_decorations:
 			return



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]