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:
parent
bf23b56b8a
commit
fe13964089
@ -30,6 +30,7 @@
|
||||
#include <QPainter>
|
||||
#include <QPixmapCache>
|
||||
#include <QStyleOptionGraphicsItem>
|
||||
#include <QGraphicsSceneContextMenuEvent>
|
||||
|
||||
#include <KDebug>
|
||||
|
||||
@ -407,5 +408,33 @@ void Widget::reparent(Widget *w)
|
||||
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
|
||||
|
||||
|
@ -255,6 +255,7 @@ protected:
|
||||
* @param widget the parent QWidget (most likely the Corona)
|
||||
*/
|
||||
virtual void paintWidget(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0);
|
||||
void contextMenuEvent(QGraphicsSceneContextMenuEvent *contextMenuEvent);
|
||||
|
||||
private:
|
||||
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0);
|
||||
|
Loading…
x
Reference in New Issue
Block a user