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 <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
|
||||||
|
|
||||||
|
@ -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);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user