Ignore:
Timestamp:
01/09/13 14:31:07 (15 months ago)
Author:
Ales Erjavec <ales.erjavec@…>
Branch:
default
Message:

Fixed ArrowAnnotation.adjustGeometry to include the arrow shape bounding rect.

When the ArrowAnnotation was vertical or horizontal it became unselectable
(a null bounding rect/geometry).

File:
1 edited

Legend:

Unmodified
Added
Removed
  • Orange/OrangeCanvas/canvas/items/annotationitem.py

    r11230 r11255  
    55    QGraphicsItem, QGraphicsPathItem, QGraphicsWidget, QGraphicsTextItem, 
    66    QGraphicsDropShadowEffect, QPainterPath, QPainterPathStroker, 
    7     QPolygonF, QColor, QPen, QBrush 
     7    QPolygonF, QColor, QPen 
    88) 
    99 
     
    421421            self.__line = line 
    422422 
     423            # local item coordinate system 
    423424            geom = self.geometry().translated(-self.pos()) 
    424425 
     
    435436            self.__line = line 
    436437 
     438            # parent item coordinate system 
    437439            geom.translate(self.pos()) 
    438440            self.setGeometry(geom) 
    439441 
     442    def line(self): 
     443        """Return the arrow base line. 
     444        """ 
     445        return QLineF(self.__line) 
     446 
    440447    def setColor(self, color): 
     448        """Set arrow brush color. 
     449        """ 
    441450        if self.__color != color: 
    442451            self.__color = QColor(color) 
     
    444453 
    445454    def color(self): 
     455        """Return the arrow brush color. 
     456        """ 
    446457        return QColor(self.__color) 
     458 
     459    def setLineWidth(self, lineWidth): 
     460        """Set the arrow line width. 
     461        """ 
     462        self.__arrowItem.setLineWidth(lineWidth) 
     463 
     464    def lineWidth(self): 
     465        """Return the arrow line width. 
     466        """ 
     467        return self.__arrowItem.lineWidth() 
    447468 
    448469    def adjustGeometry(self): 
     
    451472 
    452473        """ 
     474        # local system coordinate 
    453475        geom = self.geometry().translated(-self.pos()) 
    454476        line = self.__line 
    455         line_rect = QRectF(line.p1(), line.p2()).normalized() 
     477 
     478        arrow_rect = self.__arrowItem.shape().boundingRect() 
     479 
    456480        if geom.isNull() and not line.isNull(): 
    457481            geom = QRectF(0, 0, 1, 1) 
    458         if not (geom.contains(line_rect)): 
    459             geom = geom.united(line_rect) 
    460         geom = geom.intersected(line_rect) 
     482 
     483        if not (geom.contains(arrow_rect)): 
     484            geom = geom.united(arrow_rect) 
     485 
     486        geom = geom.intersected(arrow_rect) 
    461487        diff = geom.topLeft() 
    462488        line = QLineF(line.p1() - diff, line.p2() - diff) 
     
    465491        self.setLine(line) 
    466492 
    467     def line(self): 
    468         return QLineF(self.__line) 
    469  
    470     def setLineWidth(self, lineWidth): 
    471         """Set the arrow line width. 
    472         """ 
    473         self.__arrowItem.setLineWidth(lineWidth) 
    474  
    475     def lineWidth(self): 
    476         """Return the arrow line width. 
    477         """ 
    478         return self.__arrowItem.lineWidth() 
    479  
    480493    def shape(self): 
    481494        arrow_shape = self.__arrowItem.shape() 
Note: See TracChangeset for help on using the changeset viewer.