Hob: bug-fixes
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
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
@@ -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
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.Signed-off-by Liming An <[email protected]>--- 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.pyindex 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 Falsedef
set_count(self, count):
self.indicator.set_count(count)