X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fqtui%2Fcolumnhandleitem.cpp;h=bfe6ee5fbe44f80edb5f9da486364ace65359381;hp=e8dd97e2e91dc6acab465b771075441228f1d8eb;hb=167ef57a636052f8e18a206e84c3447552e84d2b;hpb=0072d69c3387cad4e393968647e0f2894aed6877 diff --git a/src/qtui/columnhandleitem.cpp b/src/qtui/columnhandleitem.cpp index e8dd97e2..bfe6ee5f 100644 --- a/src/qtui/columnhandleitem.cpp +++ b/src/qtui/columnhandleitem.cpp @@ -18,23 +18,26 @@ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * ***************************************************************************/ +#include "columnhandleitem.h" + +#include #include #include #include #include +#include #include -#include "columnhandleitem.h" - ColumnHandleItem::ColumnHandleItem(qreal w, QGraphicsItem *parent) : QGraphicsItem(parent), _width(w), + _boundingRect(-_width/2, 0, _width, 0), _hover(0), - _timeLine(150), _moving(false), _minXPos(0), - _maxXPos(0) + _maxXPos(0), + _timeLine(150) { setAcceptsHoverEvents(true); setZValue(10); @@ -44,7 +47,10 @@ ColumnHandleItem::ColumnHandleItem(qreal w, QGraphicsItem *parent) } void ColumnHandleItem::setXPos(qreal xpos) { - setPos(xpos - width()/2, 0); + 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,10 @@ 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 { event->ignore(); @@ -117,11 +127,14 @@ void ColumnHandleItem::hoverChanged(qreal value) { void ColumnHandleItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) { Q_UNUSED(option); Q_UNUSED(widget); - - QLinearGradient gradient(0, 0, width(), 0); - gradient.setColorAt(0.25, Qt::transparent); - gradient.setColorAt(0.5, QColor(0, 0, 0, _hover * 200)); - gradient.setColorAt(0.75, Qt::transparent); + + QLinearGradient gradient(boundingRect().topLeft(), boundingRect().topRight()); + QColor rulerColor = QApplication::palette().windowText().color(); + rulerColor.setAlphaF(_hover); + gradient.setColorAt(0, Qt::transparent); + gradient.setColorAt(0.4, rulerColor); + gradient.setColorAt(0.6, rulerColor); + gradient.setColorAt(1, Qt::transparent); painter->fillRect(boundingRect(), gradient); }