add a contextMenuEvent to Widget so that we get proper context menu propagation by default

svn path=/trunk/KDE/kdebase/workspace/libs/plasma/; revision=714171
This commit is contained in:
Aaron J. Seigo 2007-09-18 21:19:10 +00:00
parent bf23b56b8a
commit fe13964089
2 changed files with 30 additions and 0 deletions

View File

@ -30,6 +30,7 @@
#include <QPainter> #include <QPainter>
#include <QPixmapCache> #include <QPixmapCache>
#include <QStyleOptionGraphicsItem> #include <QStyleOptionGraphicsItem>
#include <QGraphicsSceneContextMenuEvent>
#include <KDebug> #include <KDebug>
@ -407,5 +408,33 @@ void Widget::reparent(Widget *w)
update(); update();
} }
void Widget::contextMenuEvent(QGraphicsSceneContextMenuEvent *contextMenuEvent)
{
//kDebug() << "context menu event!";
if (!scene()) {
return;
}
Widget* item = dynamic_cast<Widget*>(parentItem());
if (!item) {
QGraphicsItem::contextMenuEvent(contextMenuEvent);
return;
}
while (item && item->parentItem()) {
item = dynamic_cast<Widget*>(parentItem()); //item->parentItem();
}
if (!item) {
QGraphicsItem::contextMenuEvent(contextMenuEvent);
return;
}
item->contextMenuEvent(contextMenuEvent);
contextMenuEvent->accept();
return;
//QGraphicsScene::contextMenuEvent(contextMenuEvent);
}
} // Plasma namespace } // Plasma namespace

View File

@ -255,6 +255,7 @@ protected:
* @param widget the parent QWidget (most likely the Corona) * @param widget the parent QWidget (most likely the Corona)
*/ */
virtual void paintWidget(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0); virtual void paintWidget(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0);
void contextMenuEvent(QGraphicsSceneContextMenuEvent *contextMenuEvent);
private: private:
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0); void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0);