some code cleanup

fix copyright
    always init a contextaction before trying to use it
    no more unexpected click-throughs
    contextAction() returns the plugin name instead of a pointer

svn path=/trunk/KDE/kdelibs/; revision=1012645
This commit is contained in:
Chani Armitage 2009-08-17 22:31:18 +00:00
parent 5070e300f5
commit ae2378a8da
7 changed files with 35 additions and 18 deletions

View File

@ -4,6 +4,7 @@
* Copyright 2005 by Aaron Seigo <aseigo@kde.org> * Copyright 2005 by Aaron Seigo <aseigo@kde.org>
* Copyright 2007 by Riccardo Iaconelli <riccardo@kde.org> * Copyright 2007 by Riccardo Iaconelli <riccardo@kde.org>
* Copyright 2008 by Ménard Alexis <darktears31@gmail.com> * Copyright 2008 by Ménard Alexis <darktears31@gmail.com>
* Copyright (c) 2009 Chani Armitage <chani@kde.org>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU Library General Public License as * it under the terms of the GNU Library General Public License as

View File

@ -1,6 +1,7 @@
/* /*
* Copyright 2007 by Aaron Seigo <aseigo@kde.org> * Copyright 2007 by Aaron Seigo <aseigo@kde.org>
* Copyright 2008 by Ménard Alexis <darktears31@gmail.com> * Copyright 2008 by Ménard Alexis <darktears31@gmail.com>
* Copyright 2009 Chani Armitage <chani@kde.org>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU Library General Public License as * it under the terms of the GNU Library General Public License as
@ -524,6 +525,10 @@ void Containment::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
void Containment::mousePressEvent(QGraphicsSceneMouseEvent *event) void Containment::mousePressEvent(QGraphicsSceneMouseEvent *event)
{ {
event->ignore(); event->ignore();
QGraphicsItem *item = scene()->itemAt(event->scenePos());
if (item != this) {
return; //no unexpected click-throughs
}
QString trigger = ContextAction::eventToString(event); QString trigger = ContextAction::eventToString(event);
@ -534,10 +539,7 @@ void Containment::mousePressEvent(QGraphicsSceneMouseEvent *event)
} }
if (d->wallpaper && d->wallpaper->isInitialized() && !event->isAccepted()) { if (d->wallpaper && d->wallpaper->isInitialized() && !event->isAccepted()) {
QGraphicsItem *item = scene()->itemAt(event->scenePos()); d->wallpaper->mousePressEvent(event);
if (item == this) {
d->wallpaper->mousePressEvent(event);
}
} }
if (event->isAccepted()) { if (event->isAccepted()) {
@ -551,6 +553,10 @@ void Containment::mousePressEvent(QGraphicsSceneMouseEvent *event)
void Containment::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) void Containment::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
{ {
event->ignore(); event->ignore();
QGraphicsItem *item = scene()->itemAt(event->scenePos());
if (item != this) {
return; //no unexpected click-throughs
}
QString trigger = ContextAction::eventToString(event); QString trigger = ContextAction::eventToString(event);
@ -563,10 +569,7 @@ void Containment::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
} }
if (d->wallpaper && d->wallpaper->isInitialized()) { if (d->wallpaper && d->wallpaper->isInitialized()) {
QGraphicsItem *item = scene()->itemAt(event->scenePos()); d->wallpaper->mouseReleaseEvent(event);
if (item == this) {
d->wallpaper->mouseReleaseEvent(event);
}
} }
if (event->isAccepted() || !isContainment()) { if (event->isAccepted() || !isContainment()) {
@ -614,6 +617,12 @@ void ContainmentPrivate::containmentActions(KMenu &desktopMenu)
QString trigger = "RightButton;NoModifier"; QString trigger = "RightButton;NoModifier";
//get base context actions //get base context actions
if (ContextAction *cAction = contextActions.value(trigger)) { if (ContextAction *cAction = contextActions.value(trigger)) {
if (!cAction->isInitialized()) {
KConfigGroup cfg(&(q->config()), "ContextActions");
KConfigGroup actionConfig = KConfigGroup(&cfg, cAction->pluginName());
cAction->restore(actionConfig);
}
if (cAction->configurationRequired()) { if (cAction->configurationRequired()) {
//it needs configuring //it needs configuring
//FIXME the text could be better. //FIXME the text could be better.
@ -703,6 +712,7 @@ bool ContainmentPrivate::showContextMenu(const QPointF &point, const QPoint &scr
item = 0; item = 0;
} }
//FIXME what if it's a handle?
while (item) { while (item) {
applet = qgraphicsitem_cast<Applet*>(item); applet = qgraphicsitem_cast<Applet*>(item);
if (applet && !applet->isContainment()) { if (applet && !applet->isContainment()) {
@ -1413,6 +1423,12 @@ void Containment::keyPressEvent(QKeyEvent *event)
void Containment::wheelEvent(QGraphicsSceneWheelEvent *event) void Containment::wheelEvent(QGraphicsSceneWheelEvent *event)
{ {
event->ignore();
QGraphicsItem *item = scene()->itemAt(event->scenePos());
if (item != this) {
return; //no unexpected click-throughs
}
QString trigger = ContextAction::eventToString(event); QString trigger = ContextAction::eventToString(event);
if (d->contextActions.contains(trigger)) { if (d->contextActions.contains(trigger)) {
@ -1729,9 +1745,10 @@ QStringList Containment::contextActionTriggers()
return d->contextActions.keys(); return d->contextActions.keys();
} }
ContextAction *Containment::contextAction(QString trigger) QString Containment::contextAction(const QString &trigger)
{ {
return d->contextActions.value(trigger); ContextAction *c = d->contextActions.value(trigger);
return c ? c->pluginName() : QString();
} }
void Containment::setActivity(const QString &activity) void Containment::setActivity(const QString &activity)

View File

@ -1,6 +1,7 @@
/* /*
* Copyright 2007 by Aaron Seigo <aseigo@kde.org> * Copyright 2007 by Aaron Seigo <aseigo@kde.org>
* Copyright 2008 by Ménard Alexis <darktears31@gmail.com> * Copyright 2008 by Ménard Alexis <darktears31@gmail.com>
* Copyright (c) 2009 Chani Armitage <chani@kde.org>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU Library General Public License as * it under the terms of the GNU Library General Public License as
@ -381,10 +382,10 @@ class PLASMA_EXPORT Containment : public Applet
QStringList contextActionTriggers(); QStringList contextActionTriggers();
/** /**
* @return the plugin for the given trigger * @return the plugin name for the given trigger
* @since 4.3 * @since 4.3
*/ */
ContextAction *contextAction(QString trigger); QString contextAction(const QString &trigger);
Q_SIGNALS: Q_SIGNALS:
/** /**

View File

@ -1,6 +1,5 @@
/* /*
* Copyright 2008 by Aaron Seigo <aseigo@kde.org> * Copyright (c) 2009 Chani Armitage <chani@kde.org>
* Copyright 2008 by Petri Damsten <damu@iki.fi>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU Library General Public License as * it under the terms of the GNU Library General Public License as

View File

@ -1,6 +1,5 @@
/* /*
* Copyright 2008 by Aaron Seigo <aseigo@kde.org> * Copyright (c) 2009 Chani Armitage <chani@kde.org>
* Copyright 2008 by Petri Damsten <damu@iki.fi>
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU Library General Public License as * it under the terms of the GNU Library General Public License as

View File

@ -2,6 +2,7 @@
* Copyright 2007 Matt Broadstone <mbroadst@gmail.com> * Copyright 2007 Matt Broadstone <mbroadst@gmail.com>
* Copyright 2007 Aaron Seigo <aseigo@kde.org> * Copyright 2007 Aaron Seigo <aseigo@kde.org>
* Copyright 2007 Riccardo Iaconelli <riccardo@kde.org> * Copyright 2007 Riccardo Iaconelli <riccardo@kde.org>
* Copyright (c) 2009 Chani Armitage <chani@kde.org>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU Library General Public License as * it under the terms of the GNU Library General Public License as

View File

@ -1,6 +1,5 @@
/* /*
* Copyright 2008 by Aaron Seigo <aseigo@kde.org> * Copyright (c) 2009 Chani Armitage <chani@kde.org>
* Copyright 2008 by Petri Damsten <damu@iki.fi>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU Library General Public License as * it under the terms of the GNU Library General Public License as