Skip to contentSkip to conversation

Hob: bug-fixes

PATCH In review Liming An 2 participants 3 messages May 25, 2012 – May 30, 2012

lore
Share & tools
lore

Liming An

author
#0 lore raw

cover Hob: bug-fixes

The following changes since commit 17f3435f68932056c44f4f8a2ba7838225eac396:

Hob:fixed the issue of primary button is not an 'orange hob button' (2012-05-25 18:33:34 +0800)

are available in the git repository at:
git://git.pokylinux.org/poky-contrib limx/hob-bug-fixes-continue
http://git.pokylinux.org/cgit.cgi/poky-contrib/log/?h=limx/hob-bug-fixes-continue

Liming An (1):
Hob: Fixed a compatible issue for indicator icon view

 bitbake/lib/bb/ui/crumbs/hobwidget.py |   51 +++++---------------------------
 1 files changed, 8 insertions(+), 43 deletions(-)
Signature · 1 line
1.7.5.4
author
#1 lore raw

PATCH 1/1 Hob: Fixed a compatible issue for indicator icon view

Because some screen not support the alpha visual channel, so the function 'screen.get_rgba_colormap()' will return None, it's a compatible issue, so change it by another way.

---
 bitbake/lib/bb/ui/crumbs/hobwidget.py |   51 +++++---------------------------
 1 files changed, 8 insertions(+), 43 deletions(-)
bitbake/lib/bb/ui/crumbs/hobwidget.py +8 -43
index f8e97ad..bd9e2e2 100644
@@ -400,50 +400,33 @@ class HobInfoButton(gtk.EventBox):
 class HobIndicator(gtk.DrawingArea):
     def __init__(self, count):
         gtk.DrawingArea.__init__(self)
-
-        # We want to composite the transparent indicator onto the parent
-        # HBox
-        screen = self.get_screen()
-        rgba = screen.get_rgba_colormap()
-        self.set_colormap(rgba)
-        self.set_app_paintable(True)
+        # Set no window for transparent background
+        self.set_has_window(False)
         self.set_size_request(38,38)
         # We need to pass through button clicks
         self.add_events(gtk.gdk.BUTTON_PRESS_MASK | gtk.gdk.BUTTON_RELEASE_MASK)
 
         self.connect('expose-event', self.expose)
-        self.connect_after('realize', self.composite)
 
         self.count = count
         self.color = HobColors.GRAY
 
-    def composite(self, widget):
-        # This property must be set after the widget has been realised
-        self.window.set_composited(True)
-
     def expose(self, widget, event):
-        # Transparent background
-        ctx = widget.window.cairo_create()
-        ctx.set_operator(cairo.OPERATOR_CLEAR)
-        region = gtk.gdk.region_rectangle(event.area)
-
-        ctx.region(region)
-        ctx.fill()
-
         if self.count and self.count > 0:
-            w = self.allocation.width
-            h = self.allocation.height
+            ctx = widget.window.cairo_create()
+
+            x, y, w, h = self.allocation
 
             ctx.set_operator(cairo.OPERATOR_OVER)
             ctx.set_source_color(gtk.gdk.color_parse(self.color))
             ctx.translate(w/2, h/2)
-            ctx.arc(1, 1, min(w,h)/2 - 2, 0, 2*math.pi)
+            ctx.arc(x, y, min(w,h)/2 - 2, 0, 2*math.pi)
             ctx.fill_preserve()
 
             layout = self.create_pango_layout(str(self.count))
             textw, texth = layout.get_pixel_size()
-            x = (w/2)-(textw/2) + 1
-            y = (h/2) - (texth/2) + 1
+            x = (w/2)-(textw/2) + x
+            y = (h/2) - (texth/2) + y
             ctx.move_to(x, y)
             self.window.draw_layout(self.style.light_gc[gtk.STATE_NORMAL], int(x), int(y), layout)
 
@@ -466,24 +449,6 @@ class HobTabLabel(gtk.HBox):
         self.lbl.set_alignment(0.0, 0.5)
         self.lbl.show()
         self.pack_end(self.lbl, True, True, 6)
-        self.connect_after('expose-event', self.expose_event)
-
-    def expose_event(self, widget, event):
-        # Composite the child indicator onto the Box
-        child = self.indicator
-        ctx = widget.window.cairo_create()
-
-        ctx.set_source_pixmap(child.window, child.allocation.x, child.allocation.y)
-
-        region = gtk.gdk.region_rectangle(child.allocation)
-        r = gtk.gdk.region_rectangle(event.area)
-        region.intersect(r)
-        ctx.region(region)
-        ctx.clip()
-
-        ctx.paint()
-
-        return False
 
     def set_count(self, count):
         self.indicator.set_count(count)
Signature · 1 line
1.7.5.4
#2 lore raw

Re: [PATCH 1/1] Hob: Fixed a compatible issue for indicator icon view

ACK, I am OK with that and have tested on Ubuntu 10.04. CC Josh.

But one more thing, can you test set_action_widget() mentioned by Josh to see how we can replace it with something else, Liming? It seems that doesn't work on Ubuntu 10.04.

--
Shane

Liming An wrote on 2012-05-25:

Quoted 89 lines

Because some screen not support the alpha visual channel, so the function 'screen.get_rgba_colormap()' will return None, it's a compatible issue, so change it by another way.

---
 bitbake/lib/bb/ui/crumbs/hobwidget.py |   51 +++++---------------------------
 1 files changed, 8 insertions(+), 43 deletions(-)
(quoted diff) +0 -0

b/bitbake/lib/bb/ui/crumbs/hobwidget.py index f8e97ad..bd9e2e2 100644 --- a/bitbake/lib/bb/ui/crumbs/hobwidget.py +++ b/bitbake/lib/bb/ui/crumbs/hobwidget.py @@ -400,50 +400,33 @@ class HobInfoButton(gtk.EventBox):
class HobIndicator(gtk.DrawingArea):

     def __init__(self, count):
         gtk.DrawingArea.__init__(self)
bitbake/lib/bb/ui/crumbs/hobwidget.py +2 -7
-
-        # We want to composite the transparent indicator onto the parent
-        # HBox
-        screen = self.get_screen()
-        rgba = screen.get_rgba_colormap()
-        self.set_colormap(rgba)
-        self.set_app_paintable(True)
+        # Set no window for transparent background
+        self.set_has_window(False)
         self.set_size_request(38,38)
         # We need to pass through button clicks
         self.add_events(gtk.gdk.BUTTON_PRESS_MASK |

gtk.gdk.BUTTON_RELEASE_MASK)

self.connect('expose-event', self.expose)

bitbake/lib/bb/ui/crumbs/hobwidget.py +6 -18
-        self.connect_after('realize', self.composite)
 
         self.count = count
         self.color = HobColors.GRAY
-    def composite(self, widget):
-        # This property must be set after the widget has been realised
-        self.window.set_composited(True)
-
     def expose(self, widget, event):
-        # Transparent background
-        ctx = widget.window.cairo_create()
-        ctx.set_operator(cairo.OPERATOR_CLEAR)
-        region = gtk.gdk.region_rectangle(event.area)
-
-        ctx.region(region)
-        ctx.fill()
-
         if self.count and self.count > 0:
-            w = self.allocation.width
-            h = self.allocation.height
+            ctx = widget.window.cairo_create()
+
+            x, y, w, h = self.allocation
 
             ctx.set_operator(cairo.OPERATOR_OVER)
             ctx.set_source_color(gtk.gdk.color_parse(self.color))
             ctx.translate(w/2, h/2)
-            ctx.arc(1, 1, min(w,h)/2 - 2, 0, 2*math.pi)
+            ctx.arc(x, y, min(w,h)/2 - 2, 0, 2*math.pi)
             ctx.fill_preserve()
 
             layout = self.create_pango_layout(str(self.count))
             textw, texth = layout.get_pixel_size()
-            x = (w/2)-(textw/2) + 1
-            y = (h/2) - (texth/2) + 1
+            x = (w/2)-(textw/2) + x
+            y = (h/2) - (texth/2) + y
             ctx.move_to(x, y)

self.window.draw_layout(self.style.light_gc[gtk.STATE_NORMAL], int(x), int(y), layout)

bitbake/lib/bb/ui/crumbs/hobwidget.py +0 -1
@@ -466,24 +449,6 @@ class HobTabLabel(gtk.HBox):
         self.lbl.set_alignment(0.0, 0.5)
         self.lbl.show()
         self.pack_end(self.lbl, True, True, 6)
-        self.connect_after('expose-event', self.expose_event) - -   

def expose_event(self, widget, event): - # Composite the child
indicator onto the Box - child = self.indicator - ctx =
widget.window.cairo_create() - - ctx.set_source_pixmap(child.window, child.allocation.x,
child.allocation.y) - - region =
gtk.gdk.region_rectangle(child.allocation) - r =
gtk.gdk.region_rectangle(event.area) - region.intersect(r) -
ctx.region(region) - ctx.clip() - - ctx.paint() - -
return False

def set_count(self, count):
self.indicator.set_count(count)