void QQuickMouseArea::mouseReleaseEvent(QMouseEvent *event) { Q_D(QQuickMouseArea); d->stealMouse = false; if (!d->enabled && !d->pressed) { QQuickItem::mouseReleaseEvent(event); } else { d->saveEvent(event); setPressed(event->button(), false); if (!d->pressed) { // no other buttons are pressed #ifndef QT_NO_DRAGANDDROP if (d->drag) d->drag->setActive(false); #endif // If we don't accept hover, we need to reset containsMouse. if (!acceptHoverEvents()) setHovered(false); QQuickWindow *w = window(); if (w && w->mouseGrabberItem() == this) ungrabMouse(); setKeepMouseGrab(false); } } d->doubleClick = false; }
void QQuickMouseArea::setHoverEnabled(bool h) { if (h == acceptHoverEvents()) return; setAcceptHoverEvents(h); emit hoverEnabledChanged(); }
void QDeclarativeMouseArea::setHoverEnabled(bool h) { Q_D(QDeclarativeMouseArea); if (h == acceptHoverEvents()) return; setAcceptHoverEvents(h); emit hoverEnabledChanged(); if (d->hovered != isUnderMouse()) setHovered(!d->hovered); }
/** * This is a utility method to copy all the attributes of this * TextItem to \a other TextItem. */ void TextItem::copyAttributesTo(TextItem *other) const { other->setDefaultTextColor(defaultTextColor()); other->setHoverBrush(hoverBrush()); other->setAcceptHoverEvents(acceptHoverEvents()); other->setAlignment(alignment()); other->setFont(font()); other->setBold(bold()); other->setItalic(italic()); other->setUnderline(underline()); other->setBackgroundBrush(backgroundBrush()); }
QVariant QDeclarativeMouseArea::itemChange(GraphicsItemChange change, const QVariant &value) { Q_D(QDeclarativeMouseArea); switch (change) { case ItemVisibleHasChanged: if (acceptHoverEvents() && d->hovered != (isVisible() && isUnderMouse())) setHovered(!d->hovered); break; default: break; } return QDeclarativeItem::itemChange(change, value); }
void QDeclarativeMouseArea::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) { Q_D(QDeclarativeMouseArea); if (!d->absorb) { QDeclarativeItem::mouseReleaseEvent(event); } else { d->saveEvent(event); setPressed(false); if (d->drag) d->drag->setActive(false); // If we don't accept hover, we need to reset containsMouse. if (!acceptHoverEvents()) setHovered(false); setKeepMouseGrab(false); } }
void QQuickMouseArea::itemChange(ItemChange change, const ItemChangeData &value) { Q_D(QQuickMouseArea); switch (change) { case ItemVisibleHasChanged: if (acceptHoverEvents() && d->hovered != (isVisible() && isUnderMouse())) { if (!d->hovered) { QPointF cursorPos = QGuiApplicationPrivate::lastCursorPosition; d->lastScenePos = d->window->mapFromGlobal(cursorPos.toPoint()); d->lastPos = mapFromScene(d->lastScenePos); } setHovered(!d->hovered); } break; default: break; } QQuickItem::itemChange(change, value); }
void QDeclarativeMouseArea::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) { Q_D(QDeclarativeMouseArea); d->stealMouse = false; if (!d->absorb) { QDeclarativeItem::mouseReleaseEvent(event); } else { d->saveEvent(event); setPressed(false); if (d->drag) d->drag->setActive(false); // If we don't accept hover, we need to reset containsMouse. if (!acceptHoverEvents()) setHovered(false); QGraphicsScene *s = scene(); if (s && s->mouseGrabberItem() == this) ungrabMouse(); setKeepMouseGrab(false); } d->doubleClick = false; }
/*! \qmlproperty bool QtQuick::MouseArea::hoverEnabled This property holds whether hover events are handled. By default, mouse events are only handled in response to a button event, or when a button is pressed. Hover enables handling of all mouse events even when no mouse button is pressed. This property affects the containsMouse property and the onEntered, onExited and onPositionChanged signals. */ bool QQuickMouseArea::hoverEnabled() const { return acceptHoverEvents(); }
/*! \qmlproperty bool MouseArea::hoverEnabled This property holds whether hover events are handled. By default, mouse events are only handled in response to a button event, or when a button is pressed. Hover enables handling of all mouse events even when no mouse button is pressed. This property affects the containsMouse property and the onEntered, onExited and onPositionChanged signals. */ bool QDeclarativeMouseArea::hoverEnabled() const { return acceptHoverEvents(); }
//--------------------------------------------------------------------------------------------------------------- // context menu //--------------------------------------------------------------------------------------------------------------- void NWEBaseGraphicsItem::addActionsToContextMenu(QMenu* menu) { if(acceptHoverEvents()) menu->addActions(contextMenuActionList_); }
bool KWidget::itemPanel() const { QGraphicsItem::GraphicsItemFlags vals = QGraphicsWidget::flags(); return vals.testFlag(QGraphicsItem::ItemIsPanel) && acceptHoverEvents(); }
void PushButton::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) { if (!styleSheet().isNull() || Theme::defaultTheme()->useNativeWidgetStyle()) { QGraphicsProxyWidget::paint(painter, option, widget); return; } QPixmap bufferPixmap; //Normal button, pressed or not if (isEnabled()) { if (nativeWidget()->isDown() || nativeWidget()->isChecked()) { d->background->setElementPrefix("pressed"); } else { d->background->setElementPrefix("normal"); } //flat or disabled } else if (!isEnabled() || nativeWidget()->isFlat()) { bufferPixmap = QPixmap(rect().size().toSize()); bufferPixmap.fill(Qt::transparent); QPainter buffPainter(&bufferPixmap); d->background->paintFrame(&buffPainter); buffPainter.setCompositionMode(QPainter::CompositionMode_DestinationIn); buffPainter.fillRect(bufferPixmap.rect(), QColor(0, 0, 0, 128)); painter->drawPixmap(0, 0, bufferPixmap); } //if is under mouse draw the animated glow overlay if (!nativeWidget()->isDown() && !nativeWidget()->isChecked() && isEnabled() && acceptHoverEvents() && d->background->hasElementPrefix("active")) { if (d->hoverAnimation->state() == QAbstractAnimation::Running && !isUnderMouse() && !nativeWidget()->isDefault()) { d->background->setElementPrefix("active"); d->background->paintFrame(painter, d->activeRect.topLeft()); } else { painter->drawPixmap( d->activeRect.topLeft(), d->hoverAnimation->property("currentPixmap").value<QPixmap>()); } } else if (isEnabled()) { d->background->paintFrame(painter); } painter->setPen(Plasma::Theme::defaultTheme()->color(Theme::ButtonTextColor)); if (nativeWidget()->isDown()) { painter->translate(QPoint(1, 1)); } QRectF rect = contentsRect(); if (!nativeWidget()->icon().isNull()) { const qreal iconSize = qMin(rect.width(), rect.height()); QPixmap iconPix = nativeWidget()->icon().pixmap(iconSize); if (!isEnabled()) { KIconEffect *effect = KIconLoader::global()->iconEffect(); iconPix = effect->apply(iconPix, KIconLoader::Toolbar, KIconLoader::DisabledState); } QRect pixmapRect; if (nativeWidget()->text().isEmpty()) { pixmapRect = nativeWidget()->style()->alignedRect(option->direction, Qt::AlignCenter, iconPix.size(), rect.toRect()); } else { pixmapRect = nativeWidget()->style()->alignedRect(option->direction, Qt::AlignLeft|Qt::AlignVCenter, iconPix.size(), rect.toRect()); } painter->drawPixmap(pixmapRect.topLeft(), iconPix); if (option->direction == Qt::LeftToRight) { rect.adjust(rect.height(), 0, 0, 0); } else { rect.adjust(0, 0, -rect.height(), 0); } } QFontMetricsF fm(font()); // If the height is too small increase the Height of the button to shall the whole text #192988 if (rect.height() < fm.height()) { rect.setHeight(fm.height()); rect.moveTop(boundingRect().center().y() - rect.height() / 2); } // If there is not enough room for the text make it to fade out if (rect.width() < fm.width(nativeWidget()->text())) { if (bufferPixmap.isNull()) { bufferPixmap = QPixmap(rect.size().toSize()); } bufferPixmap.fill(Qt::transparent); QPainter p(&bufferPixmap); p.setPen(painter->pen()); p.setFont(font()); // Create the alpha gradient for the fade out effect QLinearGradient alphaGradient(0, 0, 1, 0); alphaGradient.setCoordinateMode(QGradient::ObjectBoundingMode); if (option->direction == Qt::LeftToRight) { alphaGradient.setColorAt(0, QColor(0, 0, 0, 255)); alphaGradient.setColorAt(1, QColor(0, 0, 0, 0)); p.drawText(bufferPixmap.rect(), Qt::AlignLeft|Qt::AlignVCenter|Qt::TextShowMnemonic, nativeWidget()->text()); } else { alphaGradient.setColorAt(0, QColor(0, 0, 0, 0)); alphaGradient.setColorAt(1, QColor(0, 0, 0, 255)); p.drawText(bufferPixmap.rect(), Qt::AlignRight|Qt::AlignVCenter|Qt::TextShowMnemonic, nativeWidget()->text()); } p.setCompositionMode(QPainter::CompositionMode_DestinationIn); p.fillRect(bufferPixmap.rect(), alphaGradient); painter->drawPixmap(rect.topLeft(), bufferPixmap); } else { painter->setFont(font()); painter->drawText(rect, Qt::AlignCenter|Qt::TextShowMnemonic, nativeWidget()->text()); } }