[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    KDE/kdelibs/plasma
From:       Chani Armitage <chanika () gmail ! com>
Date:       2009-09-30 23:07:43
Message-ID: 1254352063.867267.627.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 1029866 by chani:

rightclick on popupapplet's dialog behaves like
rightclick on the applet itself

 M  +13 -0     containment.cpp  
 M  +1 -0      containment.h  
 M  +11 -0     popupapplet.cpp  
 M  +6 -0      private/containment_p.h  


--- trunk/KDE/kdelibs/plasma/containment.cpp #1029865:1029866
@@ -751,6 +751,19 @@
     return false;
 }
 
+bool ContainmentPrivate::showAppletContextMenu(Applet *applet, const QPoint \
&screenPos) +{
+    KMenu desktopMenu;
+    appletActions(desktopMenu, applet, true);
+
+    if (!desktopMenu.isEmpty()) {
+        desktopMenu.exec(screenPos);
+        return true;
+    }
+
+    return false;
+}
+
 void Containment::setFormFactor(FormFactor formFactor)
 {
     if (d->formFactor == formFactor) {
--- trunk/KDE/kdelibs/plasma/containment.h #1029865:1029866
@@ -593,6 +593,7 @@
         friend class CoronaPrivate;
         friend class ContainmentPrivate;
         friend class ContainmentActions;
+        friend class PopupApplet;
         ContainmentPrivate *const d;
 };
 
--- trunk/KDE/kdelibs/plasma/popupapplet.cpp #1029865:1029866
@@ -41,6 +41,7 @@
 #include "plasma/private/extenderitemmimedata_p.h"
 #include "plasma/corona.h"
 #include "plasma/containment.h"
+#include "plasma/private/containment_p.h"
 #include "plasma/dialog.h"
 #include "plasma/extenders/extender.h"
 #include "plasma/extenders/extenderitem.h"
@@ -419,6 +420,16 @@
     }
     */
 
+    if (watched == d->dialog && event->type() == QEvent::ContextMenu) {
+        //pass it up to the applet
+        //well, actually we have to pass it to the *containment*
+        //because all the code for showing an applet's contextmenu is actually in \
Containment. +        Containment *c = containment();
+        if (c) {
+            return c->d->showAppletContextMenu(this, \
static_cast<QContextMenuEvent*>(event)->globalPos()); +        }
+    }
+
     return Applet::eventFilter(watched, event);
 }
 
--- trunk/KDE/kdelibs/plasma/private/containment_p.h #1029865:1029866
@@ -132,6 +132,12 @@
 
     Applet *appletAt(const QPointF &point);
 
+    /**
+     * force the contextmenu for @p applet to be shown at @p screenPos
+     * @since 4.4
+     */
+    bool showAppletContextMenu(Applet *applet, const QPoint &screenPos);
+
     Containment *q;
     FormFactor formFactor;
     Location location;


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic