Index: plugins/extensions/dockers/advancedcolorselector/kis_shade_selector_line.h =================================================================== --- plugins/extensions/dockers/advancedcolorselector/kis_shade_selector_line.h +++ plugins/extensions/dockers/advancedcolorselector/kis_shade_selector_line.h @@ -84,7 +84,9 @@ int m_lineHeight; bool m_displayHelpText; qreal m_mouseX; - bool m_isDown; + QPoint m_ev; + qreal m_width; + friend class KisShadeSelectorLineComboBox; Index: plugins/extensions/dockers/advancedcolorselector/kis_shade_selector_line.cpp =================================================================== --- plugins/extensions/dockers/advancedcolorselector/kis_shade_selector_line.cpp +++ plugins/extensions/dockers/advancedcolorselector/kis_shade_selector_line.cpp @@ -44,8 +44,10 @@ setParam(0, 0, 0, 0, 0, 0); updateSettings(); setMouseTracking(true); - m_mouseX=width()+14; - m_isDown=false; + m_mouseX=width()/2; + // m_isDown=false; + m_ev.setX(0); + m_ev.setY(5); } KisShadeSelectorLine::KisShadeSelectorLine(qreal hueDelta, qreal satDelta, qreal valDelta, @@ -58,8 +60,10 @@ { setParam(hueDelta, satDelta, valDelta, hueShift, satShift, valShift); updateSettings(); - m_mouseX=width()+14; - m_isDown=false; + m_mouseX=width()/2; + //m_isDown=false; + m_ev.setX(0); + m_ev.setY(5); } KisShadeSelectorLine::~KisShadeSelectorLine() @@ -81,7 +85,7 @@ { m_realColor = color; m_realColor.convertTo(m_parentProxy->colorSpace()); - m_mouseX=width()+14; + m_mouseX=width()/2; update(); } @@ -160,7 +164,7 @@ qreal saturation = qBound(0., baseSaturation + (i * saturationStep) + m_saturationShift, 1.); qreal value = qBound(0., baseValue + (i * valueStep) + m_valueShift, 1.); - if ((i<=5)&&(i>=-5)) + if (qAbs(i) <= 5) { hue = baseHue; saturation=baseSaturation; @@ -186,8 +190,10 @@ wpainter.setPen(QColor(75,75,75)); wpainter.drawRect(renderedImage.width()/2-4,0,8,renderedImage.height()-1); wpainter.setPen(QColor(175,175,175)); - wpainter.drawRect(m_mouseX-5,0,10,renderedImage.height()-1); + m_ev.setX(qBound(5.0,m_mouseX,m_width-5)); + wpainter.drawRect(m_ev.x()-5,0,10,renderedImage.height()-1); emit update(); + m_width=width(); if(m_displayHelpText) { QString helpText(i18n("delta h=%1 s=%2 v=%3 shift h=%4 s=%5 v=%6", @@ -206,8 +212,9 @@ { QSize m_old = e->oldSize(); QSize m_new = e->size(); - int m_nWidth = m_new.QSize::width(); - int m_oWidth = m_old.QSize::width(); + int m_nWidth = m_new.width(); + int m_oWidth = m_old.width(); + m_width=width(); m_mouseX = m_mouseX*m_nWidth/m_oWidth; @@ -222,16 +229,19 @@ m_parentProxy->showColorPreview(); e->accept(); m_mouseX=e->x(); - m_isDown=true; - + + } void KisShadeSelectorLine::mouseMoveEvent(QMouseEvent *e) { - KoColor color(Acs::pickColor(m_realPixelCache, e->pos())); - m_parentProxy->updateColorPreview(color); - if(m_isDown==true){ + + if (e->buttons() & Qt::LeftButton){ m_mouseX=e->x(); + m_ev.setX(qBound(5.0,m_mouseX,m_width-5)); + m_ev.setY(5); + KoColor color(Acs::pickColor(m_realPixelCache, m_ev)); + m_parentProxy->updateColorPreview(color); } } @@ -242,14 +252,16 @@ return; } - if (!rect().contains(e->pos())) { + /* if (!rect().contains(e->pos())) { e->accept(); return; } - m_isDown=false; - - KoColor color(Acs::pickColor(m_realPixelCache, e->pos())); - + */ + m_mouseX=e->x(); + m_ev.setX(qBound(5.0,m_mouseX,m_width-5)); + m_ev.setY(5); + KoColor color(Acs::pickColor(m_realPixelCache, m_ev)); + m_parentProxy->updateColorPreview(color); Acs::ColorRole role = Acs::buttonToRole(e->button()); KConfigGroup cfg = KSharedConfig::openConfig()->group("advancedColorSelector");