* set the state on mouse down for the whole icon

* don't go all clicky on the icon when a hover button claims the click

svn path=/trunk/KDE/kdebase/workspace/libs/plasma/; revision=693519
This commit is contained in:
Aaron J. Seigo 2007-07-28 08:22:44 +00:00
parent 258a1684a6
commit 24f6601a48

View File

@ -658,28 +658,34 @@ void Icon::mousePressEvent(QGraphicsSceneMouseEvent *event)
action->event(event->type(), event->pos()); action->event(event->type(), event->pos());
} }
d->state = Private::PressedState;
QGraphicsItem::mousePressEvent(event); QGraphicsItem::mousePressEvent(event);
} }
void Icon::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) void Icon::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
{ {
bool inside = boundingRect().contains(event->pos()); bool inside = boundingRect().contains(event->pos());
bool wasClicked = d->state == Private::PressedState && inside; Private::ButtonState was = d->state;
if (inside) { if (inside) {
d->state = Private::HoverState; d->state = Private::HoverState;
foreach (IconAction *action, d->cornerActions) { foreach (IconAction *action, d->cornerActions) {
action->event(event->type(), event->pos()); if (action->event(event->type(), event->pos())) {
inside = false;
break;
}
} }
} else { } else {
d->state = Private::NoState; d->state = Private::NoState;
} }
if (wasClicked) { if (was == Private::PressedState) {
emit pressed(false); emit pressed(false);
emit clicked();
if (inside) {
emit clicked();
}
} }
QGraphicsItem::mouseReleaseEvent(event); QGraphicsItem::mouseReleaseEvent(event);