summaryrefslogtreecommitdiffstats
path: root/bitbake/lib/bb/ui/crumbs/hobwidget.py
diff options
context:
space:
mode:
authorLiming An <limingx.l.an@intel.com>2012-05-30 20:01:10 +0800
committerRichard Purdie <richard.purdie@linuxfoundation.org>2012-05-30 17:23:30 +0100
commit6609a813bbfa3fe5a0681c4ec7b17f18b846efc7 (patch)
tree33c319ba6dd382c1c5214bb6a41a2fdfa06e8a91 /bitbake/lib/bb/ui/crumbs/hobwidget.py
parentcc3da1236c4f5a26bf2ffd0f0357273f4e070b56 (diff)
downloadpoky-6609a813bbfa3fe5a0681c4ec7b17f18b846efc7.tar.gz
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 rev: e58ba1ad944ea1ba95a5ada80d4c88f0165bd1ca) Signed-off-by: Liming An <limingx.l.an@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'bitbake/lib/bb/ui/crumbs/hobwidget.py')
-rw-r--r--bitbake/lib/bb/ui/crumbs/hobwidget.py51
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 f8e97ad1f8..bd9e2e28e9 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):
400class HobIndicator(gtk.DrawingArea): 400class HobIndicator(gtk.DrawingArea):
401 def __init__(self, count): 401 def __init__(self, count):
402 gtk.DrawingArea.__init__(self) 402 gtk.DrawingArea.__init__(self)
403 403 # Set no window for transparent background
404 # We want to composite the transparent indicator onto the parent 404 self.set_has_window(False)
405 # HBox
406 screen = self.get_screen()
407 rgba = screen.get_rgba_colormap()
408 self.set_colormap(rgba)
409 self.set_app_paintable(True)
410 self.set_size_request(38,38) 405 self.set_size_request(38,38)
411 # We need to pass through button clicks 406 # We need to pass through button clicks
412 self.add_events(gtk.gdk.BUTTON_PRESS_MASK | gtk.gdk.BUTTON_RELEASE_MASK) 407 self.add_events(gtk.gdk.BUTTON_PRESS_MASK | gtk.gdk.BUTTON_RELEASE_MASK)
413 408
414 self.connect('expose-event', self.expose) 409 self.connect('expose-event', self.expose)
415 self.connect_after('realize', self.composite)
416 410
417 self.count = count 411 self.count = count
418 self.color = HobColors.GRAY 412 self.color = HobColors.GRAY
419 413
420 def composite(self, widget):
421 # This property must be set after the widget has been realised
422 self.window.set_composited(True)
423
424 def expose(self, widget, event): 414 def expose(self, widget, event):
425 # Transparent background
426 ctx = widget.window.cairo_create()
427 ctx.set_operator(cairo.OPERATOR_CLEAR)
428 region = gtk.gdk.region_rectangle(event.area)
429
430 ctx.region(region)
431 ctx.fill()
432
433 if self.count and self.count > 0: 415 if self.count and self.count > 0:
434 w = self.allocation.width 416 ctx = widget.window.cairo_create()
435 h = self.allocation.height 417
418 x, y, w, h = self.allocation
436 419
437 ctx.set_operator(cairo.OPERATOR_OVER) 420 ctx.set_operator(cairo.OPERATOR_OVER)
438 ctx.set_source_color(gtk.gdk.color_parse(self.color)) 421 ctx.set_source_color(gtk.gdk.color_parse(self.color))
439 ctx.translate(w/2, h/2) 422 ctx.translate(w/2, h/2)
440 ctx.arc(1, 1, min(w,h)/2 - 2, 0, 2*math.pi) 423 ctx.arc(x, y, min(w,h)/2 - 2, 0, 2*math.pi)
441 ctx.fill_preserve() 424 ctx.fill_preserve()
442 425
443 layout = self.create_pango_layout(str(self.count)) 426 layout = self.create_pango_layout(str(self.count))
444 textw, texth = layout.get_pixel_size() 427 textw, texth = layout.get_pixel_size()
445 x = (w/2)-(textw/2) + 1 428 x = (w/2)-(textw/2) + x
446 y = (h/2) - (texth/2) + 1 429 y = (h/2) - (texth/2) + y
447 ctx.move_to(x, y) 430 ctx.move_to(x, y)
448 self.window.draw_layout(self.style.light_gc[gtk.STATE_NORMAL], int(x), int(y), layout) 431 self.window.draw_layout(self.style.light_gc[gtk.STATE_NORMAL], int(x), int(y), layout)
449 432
@@ -466,24 +449,6 @@ class HobTabLabel(gtk.HBox):
466 self.lbl.set_alignment(0.0, 0.5) 449 self.lbl.set_alignment(0.0, 0.5)
467 self.lbl.show() 450 self.lbl.show()
468 self.pack_end(self.lbl, True, True, 6) 451 self.pack_end(self.lbl, True, True, 6)
469 self.connect_after('expose-event', self.expose_event)
470
471 def expose_event(self, widget, event):
472 # Composite the child indicator onto the Box
473 child = self.indicator
474 ctx = widget.window.cairo_create()
475
476 ctx.set_source_pixmap(child.window, child.allocation.x, child.allocation.y)
477
478 region = gtk.gdk.region_rectangle(child.allocation)
479 r = gtk.gdk.region_rectangle(event.area)
480 region.intersect(r)
481 ctx.region(region)
482 ctx.clip()
483
484 ctx.paint()
485
486 return False
487 452
488 def set_count(self, count): 453 def set_count(self, count):
489 self.indicator.set_count(count) 454 self.indicator.set_count(count)