From ab8ceb0c223c6521b112668df4580e93027e38e0 Mon Sep 17 00:00:00 2001
From: Sebastian Koslowski <koslowski@kit.edu>
Date: Sat, 30 Jul 2016 14:31:05 +0200
Subject: grc: gtk3: draw ports before blocks and simplyfied draw code

---
 grc/gui/Block.py | 23 +++++++++++++----------
 1 file changed, 13 insertions(+), 10 deletions(-)

(limited to 'grc/gui/Block.py')

diff --git a/grc/gui/Block.py b/grc/gui/Block.py
index d1f67d6586..65039943d3 100644
--- a/grc/gui/Block.py
+++ b/grc/gui/Block.py
@@ -107,12 +107,10 @@ class Block(CoreBlock, Element):
 
     def create_shapes(self):
         """Update the block, parameters, and ports when a change occurs."""
-        self.clear()
-
         if self.is_horizontal():
-            self.areas.append([0, 0, self.width, self.height])
+            self.area = [0, 0, self.width, self.height]
         elif self.is_vertical():
-            self.areas.append([0, 0, self.height, self.width])
+            self.area = [0, 0, self.height, self.width]
 
         bussified = self.current_bus_structure['source'], self.current_bus_structure['sink']
         for ports, has_busses in zip((self.active_sources, self.active_sinks), bussified):
@@ -241,19 +239,24 @@ class Block(CoreBlock, Element):
         else:
             self._comment_layout = None
 
-    def draw(self, widget, cr, border_color=None, bg_color=None):
+    def draw(self, widget, cr):
         """
         Draw the signal block with label and inputs/outputs.
         """
-        bg_color = self._bg_color
         border_color = Colors.HIGHLIGHT_COLOR if self.highlighted else self._border_color
-        # draw main block
-        Element.draw(self, widget, cr, border_color, bg_color)
-        for port in self.active_ports():
+        cr.translate(*self.coordinate)
+
+        for port in self.active_ports():  # ports first
             cr.save()
-            port.draw(widget, cr, border_color, bg_color)
+            port.draw(widget, cr, border_color)
             cr.restore()
 
+        cr.rectangle(*self.area)
+        cr.set_source_rgb(*self._bg_color)
+        cr.fill_preserve()
+        cr.set_source_rgb(*border_color)
+        cr.stroke()
+
         # title and params label
         if self.is_vertical():
             cr.rotate(-math.pi / 2)
-- 
cgit v1.2.3