Ignore:
Timestamp:
10/15/12 16:22:30 (18 months ago)
Author:
Ales Erjavec <ales.erjavec@…>
Branch:
default
Message:

Fixed LinkItem hover events handling.

File:
1 edited

Legend:

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

    r11102 r11121  
    66from PyQt4.QtGui import ( 
    77    QGraphicsItem, QGraphicsEllipseItem, QGraphicsPathItem, QGraphicsObject, 
    8     QGraphicsDropShadowEffect, 
    9     QPen, QBrush, QColor, QPainterPath 
     8    QGraphicsDropShadowEffect, QPen, QBrush, QColor, QPainterPath 
    109) 
    1110 
    12 from PyQt4.QtCore import ( 
    13     Qt, QPointF, QRectF 
    14 ) 
     11from PyQt4.QtCore import Qt, QPointF 
    1512 
    1613from .nodeitem import SHADOW_COLOR 
     
    4138        self.__hover = False 
    4239 
    43     def hoverEnterEvent(self, event): 
    44         self.setHoverState(True) 
    45         return QGraphicsPathItem.hoverEnterEvent(self, event) 
    46  
    47     def hoverLeaveEvent(self, event): 
    48         self.setHoverState(False) 
    49         return QGraphicsPathItem.hoverLeaveEvent(self, event) 
     40    def linkItem(self): 
     41        """Return the :class:`LinkItem` instance this curve belongs to. 
     42 
     43        """ 
     44        return self.__canvasLink 
    5045 
    5146    def setHoverState(self, state): 
    5247        self.__hover = state 
    53         self._update() 
    54         self.__canvasLink.setHoverState(state) 
    55  
    56     def _update(self): 
     48        self.__update() 
     49 
     50    def itemChange(self, change, value): 
     51        if change == QGraphicsItem.ItemEnabledHasChanged: 
     52            # Update the pen style 
     53            self.__update() 
     54 
     55        return QGraphicsPathItem.itemChange(self, change, value) 
     56 
     57    def __update(self): 
    5758        shadow_enabled = self.__hover 
    5859        if self.shadow.isEnabled() != shadow_enabled: 
     
    109110        self.setFlag(QGraphicsItem.ItemHasNoContents, True) 
    110111        self.setAcceptedMouseButtons(Qt.RightButton) 
     112        self.setAcceptHoverEvents(True) 
    111113 
    112114        self.setZValue(self.Z_VALUE) 
     
    228230 
    229231    def __updateCurve(self): 
     232        self.prepareGeometryChange() 
    230233        if self.sourceAnchor and self.sinkAnchor: 
    231234            source_pos = self.sourceAnchor.anchorScenePos() 
     
    252255        self.__updateCurve() 
    253256 
    254     # TODO: This item should control the hover state not its child. 
    255     #       (use sceneEventFilter on curveItem??). 
    256257    def setHoverState(self, state): 
    257258        if self.hover != state: 
     
    259260            self.sinkIndicator.setHoverState(state) 
    260261            self.sourceIndicator.setHoverState(state) 
     262            self.curveItem.setHoverState(state) 
     263 
     264    def hoverEnterEvent(self, event): 
     265        self.setHoverState(True) 
     266        return QGraphicsPathItem.hoverEnterEvent(self, event) 
     267 
     268    def hoverLeaveEvent(self, event): 
     269        self.setHoverState(False) 
     270        return QGraphicsPathItem.hoverLeaveEvent(self, event) 
    261271 
    262272    def boundingRect(self): 
    263         return QRectF() 
    264  
    265     def setEnabled(self, enabled): 
    266         QGraphicsObject.setEnabled(self, enabled) 
    267         self.curveItem._update() 
     273        return self.childrenBoundingRect() 
     274 
     275    def shape(self): 
     276        return self.curveItem.shape() 
Note: See TracChangeset for help on using the changeset viewer.