SelectionToggle::SelectionToggle(QWidget* parent) :
QAbstractButton(parent),
m_isHovered(false),
+ m_leftMouseButtonPressed(false),
m_fadingValue(0),
m_icon(),
m_fadingTimeLine(0)
break;
case QEvent::MouseMove:
- if (m_isHovered) {
+ if (m_leftMouseButtonPressed) {
// Don't forward mouse move events to the viewport,
// otherwise a rubberband selection will be shown when
// clicking on the selection toggle and moving the mouse
update();
}
-void SelectionToggle::paintEvent(QPaintEvent* event)
+void SelectionToggle::mousePressEvent(QMouseEvent* event)
{
- QPainter painter(this);
- painter.setClipRect(event->rect());
- painter.setRenderHint(QPainter::Antialiasing);
-
- // draw an alpha blended circle as background
- const QPalette& palette = parentWidget()->palette();
+ QAbstractButton::mousePressEvent(event);
+ m_leftMouseButtonPressed = (event->buttons() & Qt::LeftButton);
+}
- const QBrush& backgroundBrush = palette.brush(QPalette::Normal, QPalette::Window);
- QColor background = backgroundBrush.color();
- background.setAlpha(m_fadingValue / 2);
- painter.setBrush(background);
+void SelectionToggle::mouseReleaseEvent(QMouseEvent* event)
+{
+ QAbstractButton::mouseReleaseEvent(event);
+ m_leftMouseButtonPressed = (event->buttons() & Qt::LeftButton);
+}
- const QBrush& foregroundBrush = palette.brush(QPalette::Normal, QPalette::WindowText);
- QColor foreground = foregroundBrush.color();
- foreground.setAlpha(m_fadingValue / 4);
- painter.setPen(foreground);
+void SelectionToggle::resizeEvent(QResizeEvent* event)
+{
+ QAbstractButton::resizeEvent(event);
+ setIconOverlay(isChecked());
+}
- painter.drawEllipse(0, 0, width(), height());
+void SelectionToggle::paintEvent(QPaintEvent* event)
+{
+ QPainter painter(this);
+ painter.setClipRect(event->rect());
// draw the icon overlay
if (m_isHovered) {
const char* icon = checked ? "list-remove" : "list-add";
m_icon = KIconLoader::global()->loadIcon(icon,
KIconLoader::NoGroup,
- KIconLoader::SizeSmall);
+ qMin(width(), height()));
update();
}