[bitbake-devel] [PATCH 1/1] Hob: Fixed a compatible issue for indicator icon view
Wang, Shane
shane.wang at intel.com
Wed May 30 03:11:58 UTC 2012
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:
> 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 <limingx.l.an at intel.com>
> ---
> bitbake/lib/bb/ui/crumbs/hobwidget.py | 51 +++++---------------------------
> 1 files changed, 8 insertions(+), 43 deletions(-)
> diff --git a/bitbake/lib/bb/ui/crumbs/hobwidget.py
> 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)
> -
> - # 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)
More information about the bitbake-devel
mailing list