don't toggle the popup on activate, but actually show it
also set the state on needsattention. if the view of the applet is not the same for its containment, call popupposition with the parent of the applet rather than the applet itself. this fixes the popup appearing at funny places for applets in systemtray, like devicenotifier svn path=/trunk/KDE/kdelibs/; revision=1115260
This commit is contained in:
parent
daffafb9fe
commit
fbe946ca4c
@ -61,7 +61,7 @@ PopupApplet::PopupApplet(QObject *parent, const QVariantList &args)
|
||||
int iconSize = IconSize(KIconLoader::Desktop);
|
||||
resize(iconSize, iconSize);
|
||||
disconnect(this, SIGNAL(activate()), (Applet*)this, SLOT(setFocus()));
|
||||
connect(this, SIGNAL(activate()), this, SLOT(togglePopup()));
|
||||
connect(this, SIGNAL(activate()), this, SLOT(appletActivated()));
|
||||
setAcceptDrops(true);
|
||||
}
|
||||
|
||||
@ -430,6 +430,12 @@ void PopupAppletPrivate::popupConstraintsEvent(Plasma::Constraints constraints)
|
||||
emit q->sizeHintChanged(Qt::PreferredSize);
|
||||
}
|
||||
|
||||
void PopupAppletPrivate::appletActivated()
|
||||
{
|
||||
q->setStatus(Plasma::NeedsAttentionStatus);
|
||||
q->showPopup();
|
||||
}
|
||||
|
||||
void PopupApplet::mousePressEvent(QGraphicsSceneMouseEvent *event)
|
||||
{
|
||||
if (!d->icon && !d->popupLostFocus && event->buttons() == Qt::LeftButton) {
|
||||
@ -772,7 +778,11 @@ void PopupAppletPrivate::updateDialogPosition()
|
||||
QSize s = dialog->size();
|
||||
QPoint pos = view->mapFromScene(q->scenePos());
|
||||
|
||||
pos = corona->popupPosition(q, s);
|
||||
if (!q->containment() || view == q->containment()->view()) {
|
||||
pos = corona->popupPosition(q, s);
|
||||
} else {
|
||||
pos = corona->popupPosition(q->parentItem(), s);
|
||||
}
|
||||
|
||||
bool reverse = false;
|
||||
if (q->formFactor() == Plasma::Vertical) {
|
||||
|
@ -168,6 +168,7 @@ private:
|
||||
Q_PRIVATE_SLOT(d, void dialogSizeChanged())
|
||||
Q_PRIVATE_SLOT(d, void dialogStatusChanged(bool))
|
||||
Q_PRIVATE_SLOT(d, void updateDialogPosition())
|
||||
Q_PRIVATE_SLOT(d, void appletActivated())
|
||||
|
||||
friend class Applet;
|
||||
friend class AppletPrivate;
|
||||
|
@ -43,6 +43,7 @@ public:
|
||||
void popupConstraintsEvent(Plasma::Constraints constraints);
|
||||
void checkExtenderAppearance(Plasma::FormFactor f);
|
||||
KConfigGroup popupConfigGroup();
|
||||
void appletActivated();
|
||||
|
||||
PopupApplet *q;
|
||||
Plasma::IconWidget *icon;
|
||||
|
Loading…
Reference in New Issue
Block a user