summaryrefslogtreecommitdiff
path: root/devel/libdbusmenu-qt/files/patch-src__dbusmenuimporter.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'devel/libdbusmenu-qt/files/patch-src__dbusmenuimporter.cpp')
-rw-r--r--devel/libdbusmenu-qt/files/patch-src__dbusmenuimporter.cpp80
1 files changed, 80 insertions, 0 deletions
diff --git a/devel/libdbusmenu-qt/files/patch-src__dbusmenuimporter.cpp b/devel/libdbusmenu-qt/files/patch-src__dbusmenuimporter.cpp
new file mode 100644
index 000000000000..c252a3d9f8cc
--- /dev/null
+++ b/devel/libdbusmenu-qt/files/patch-src__dbusmenuimporter.cpp
@@ -0,0 +1,80 @@
+--- ./src/dbusmenuimporter.cpp.orig 2010-09-23 10:08:35.000000000 +0000
++++ ./src/dbusmenuimporter.cpp 2010-11-12 14:49:39.000000000 +0000
+@@ -32,6 +32,8 @@
+ #include <QSignalMapper>
+ #include <QTime>
+ #include <QTimer>
++#include <QToolButton>
++#include <QWidgetAction>
+
+ // Local
+ #include "dbusmenuitem_p.h"
+@@ -41,7 +43,6 @@
+
+ //#define BENCHMARK
+ #ifdef BENCHMARK
+-#include <QTime>
+ static QTime sChrono;
+ #endif
+
+@@ -66,6 +67,29 @@
+ DBusMenuImporterMethod m_method;
+ };
+
++class EventSniffer : public QObject
++{
++public:
++ EventSniffer(QObject *parent = 0)
++ : QObject(parent) { }
++
++ ~EventSniffer() { }
++
++ bool eventFilter(QObject *object, QEvent *event)
++ {
++ Q_UNUSED(object);
++
++ if (event->type() == QEvent::Paint ||
++ event->type() == QEvent::KeyPress ||
++ event->type() == QEvent::KeyRelease) {
++ return false;
++ }
++
++ event->accept();
++ return true;
++ }
++};
++
+ class DBusMenuImporterPrivate
+ {
+ public:
+@@ -143,8 +167,30 @@
+ group->addAction(action);
+ }
+ }
++
++ bool isMenuTitle = map.take("x-kde-title").toBool();
++
+ updateAction(action, map, map.keys());
+
++ if (isMenuTitle) {
++ QAction *buttonAction = action;
++ QFont font = buttonAction->font();
++ font.setBold(true);
++ buttonAction->setFont(font);
++ buttonAction->setEnabled(true);
++
++ QWidgetAction *action = new QWidgetAction(parent);
++ action->setObjectName("kmenu_title");
++ QToolButton *titleButton = new QToolButton(0);
++ EventSniffer *eventSniffer = new EventSniffer(titleButton);
++ titleButton->installEventFilter(eventSniffer); // prevent clicks on the title of the menu
++ titleButton->setDefaultAction(buttonAction);
++ titleButton->setDown(true); // prevent hover style changes in some styles
++ titleButton->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
++ action->setDefaultWidget(titleButton);
++ return action;
++ }
++
+ return action;
+ }
+