X-Git-Url: https://git.quassel-irc.org/?a=blobdiff_plain;f=src%2Fqtui%2Fcolumnhandleitem.cpp;h=bfe6ee5fbe44f80edb5f9da486364ace65359381;hb=03d6711ea69594e8a4637b4ea20baeb9a109af9c;hp=8f1f9a2eb1a4cdb7bade040e6e18c29f97d6e54d;hpb=c5c74323b6d8f3fc6775ca1d08cb84c602bac58d;p=quassel.git diff --git a/src/qtui/columnhandleitem.cpp b/src/qtui/columnhandleitem.cpp index 8f1f9a2e..bfe6ee5f 100644 --- a/src/qtui/columnhandleitem.cpp +++ b/src/qtui/columnhandleitem.cpp @@ -27,9 +27,12 @@ #include #include +#include + ColumnHandleItem::ColumnHandleItem(qreal w, QGraphicsItem *parent) : QGraphicsItem(parent), _width(w), + _boundingRect(-_width/2, 0, _width, 0), _hover(0), _moving(false), _minXPos(0), @@ -45,6 +48,9 @@ ColumnHandleItem::ColumnHandleItem(qreal w, QGraphicsItem *parent) void ColumnHandleItem::setXPos(qreal xpos) { setPos(xpos, 0); + QRectF sceneBRect = _boundingRect.translated(x(), 0); + _sceneLeft = sceneBRect.left(); + _sceneRight = sceneBRect.right(); } void ColumnHandleItem::setXLimits(qreal min, qreal max) { @@ -55,8 +61,8 @@ void ColumnHandleItem::setXLimits(qreal min, qreal max) { } void ColumnHandleItem::sceneRectChanged(const QRectF &rect) { - if(rect.height() != boundingRect().height()) - prepareGeometryChange(); + prepareGeometryChange(); + _boundingRect = QRectF(-_width/2, rect.y(), _width, rect.height()); } void ColumnHandleItem::mouseMoveEvent(QGraphicsSceneMouseEvent *event) { @@ -87,6 +93,9 @@ void ColumnHandleItem::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) { if(_moving) { _moving = false; setCursor(QCursor(Qt::OpenHandCursor)); + QRectF sceneBRect = _boundingRect.translated(x(), 0); + _sceneLeft = sceneBRect.left(); + _sceneRight = sceneBRect.right(); emit positionChanged(x()); event->accept(); } else { @@ -119,7 +128,7 @@ void ColumnHandleItem::paint(QPainter *painter, const QStyleOptionGraphicsItem * Q_UNUSED(option); Q_UNUSED(widget); - QLinearGradient gradient(0, 0, width(), 0); + QLinearGradient gradient(boundingRect().topLeft(), boundingRect().topRight()); QColor rulerColor = QApplication::palette().windowText().color(); rulerColor.setAlphaF(_hover); gradient.setColorAt(0, Qt::transparent);