From 06011ef27e9370ac83898da0b4c8aee538e378e3 Mon Sep 17 00:00:00 2001 From: "Aaron J. Seigo" Date: Fri, 25 Jan 2008 01:41:16 +0000 Subject: [PATCH] put the applet's menu items first, put remove at the end. svn path=/trunk/KDE/kdebase/workspace/libs/plasma/; revision=766021 --- containment.cpp | 80 ++++++++++++++++++++++++++----------------------- 1 file changed, 42 insertions(+), 38 deletions(-) diff --git a/containment.cpp b/containment.cpp index 9038bb7ce..8de9a64ae 100644 --- a/containment.cpp +++ b/containment.cpp @@ -226,7 +226,48 @@ void Containment::contextMenuEvent(QGraphicsSceneContextMenuEvent* event) KMenu desktopMenu; //kDebug() << "context menu event " << (QObject*)applet; - if (!applet) { + if (applet) { + bool hasEntries = false; + + QList actions = applet->contextActions(); + if (!actions.isEmpty()) { + foreach(QAction* action, actions) { + desktopMenu.addAction(action); + } + hasEntries = true; + } + + if (applet->hasConfigurationInterface()) { + QAction* configureApplet = new QAction(i18n("%1 Settings", applet->name()), &desktopMenu); + configureApplet->setIcon(KIcon("configure")); + connect(configureApplet, SIGNAL(triggered(bool)), + applet, SLOT(showConfigurationInterface())); + desktopMenu.addAction(configureApplet); + hasEntries = true; + } + + if (scene() && !static_cast(scene())->isImmutable()) { + if (hasEntries) { + desktopMenu.addSeparator(); + } + + QAction* closeApplet = new QAction(i18n("Remove this %1", applet->name()), &desktopMenu); + QVariant appletV; + appletV.setValue((QObject*)applet); + closeApplet->setData(appletV); + closeApplet->setIcon(KIcon("edit-delete")); + connect(closeApplet, SIGNAL(triggered(bool)), + this, SLOT(destroyApplet())); + desktopMenu.addAction(closeApplet); + hasEntries = true; + } + + if (!hasEntries) { + Applet::contextMenuEvent(event); + kDebug() << "no entries"; + return; + } + } else { if (!scene() || (static_cast(scene())->isImmutable() && !KAuthorized::authorizeKAction("unlock_desktop"))) { //kDebug() << "immutability"; Applet::contextMenuEvent(event); @@ -246,43 +287,6 @@ void Containment::contextMenuEvent(QGraphicsSceneContextMenuEvent* event) foreach(QAction* action, actions) { desktopMenu.addAction(action); } - } else { - bool hasEntries = false; - if (applet->hasConfigurationInterface()) { - QAction* configureApplet = new QAction(i18n("%1 Settings", applet->name()), &desktopMenu); - configureApplet->setIcon(KIcon("configure")); - connect(configureApplet, SIGNAL(triggered(bool)), - applet, SLOT(showConfigurationInterface())); - desktopMenu.addAction(configureApplet); - hasEntries = true; - } - - if (scene() && !static_cast(scene())->isImmutable()) { - QAction* closeApplet = new QAction(i18n("Remove this %1", applet->name()), &desktopMenu); - QVariant appletV; - appletV.setValue((QObject*)applet); - closeApplet->setData(appletV); - closeApplet->setIcon(KIcon("edit-delete")); - connect(closeApplet, SIGNAL(triggered(bool)), - this, SLOT(destroyApplet())); - desktopMenu.addAction(closeApplet); - hasEntries = true; - } - - QList actions = applet->contextActions(); - if (!actions.isEmpty()) { - desktopMenu.addSeparator(); - foreach(QAction* action, actions) { - desktopMenu.addAction(action); - } - hasEntries = true; - } - - if (!hasEntries) { - Applet::contextMenuEvent(event); - kDebug() << "no entries"; - return; - } } event->accept();