Re: KMenu title patch
- Date: Wed, 30 Apr 2008 00:59:37 +0200
- From: Rafael Fernández López <ereslibre@xxxxxxx>
- Subject: Re: KMenu title patch
Hi all, Attached is my proposal. Through an event filter. Do you want me to commit this ? Regards, Rafael Fernández López GPG Fingerprint: B9F4 4730 43F8 FFDD CC5E BA8E 724E 406E 3F01 D070
Index: kdeui/widgets/kmenu.cpp
===================================================================
--- kdeui/widgets/kmenu.cpp (revisión: 802558)
+++ kdeui/widgets/kmenu.cpp (copia de trabajo)
@@ -21,6 +21,7 @@
#include "kmenu.h"
#include "khbox.h"
+#include <QtCore/QObject>
#include <QtCore/QPointer>
#include <QtCore/QTimer>
#include <QtGui/QApplication>
@@ -40,24 +41,8 @@
class KMenu::KMenuPrivate
{
public:
- KMenuPrivate (KMenu *_parent)
- : parent(_parent)
- , noMatches(false)
- , shortcuts(false)
- , autoExec(false)
- , lastHitAction(0L)
- , mouseButtons(Qt::NoButton)
- , keyboardModifiers(Qt::NoModifier)
- , ctxMenu(0)
- , highlightedAction(0)
- {
- resetKeyboardVars();
- }
-
- ~KMenuPrivate ()
- {
- delete ctxMenu;
- }
+ KMenuPrivate (KMenu *_parent);
+ ~KMenuPrivate ();
void resetKeyboardVars(bool noMatches = false);
void actionHovered(QAction* action);
@@ -82,8 +67,54 @@
// support for RMB menus on menus
QMenu* ctxMenu;
QPointer<QAction> highlightedAction;
+
+ class EventSniffer;
+ EventSniffer *eventSniffer;
};
+class KMenu::KMenuPrivate::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) {
+ return false;
+ }
+
+ event->accept();
+ return true;
+ }
+};
+
+KMenu::KMenuPrivate::KMenuPrivate (KMenu *_parent)
+ : parent(_parent)
+ , noMatches(false)
+ , shortcuts(false)
+ , autoExec(false)
+ , lastHitAction(0L)
+ , mouseButtons(Qt::NoButton)
+ , keyboardModifiers(Qt::NoModifier)
+ , ctxMenu(0)
+ , highlightedAction(0)
+ , eventSniffer(new EventSniffer)
+{
+ resetKeyboardVars();
+}
+
+KMenu::KMenuPrivate::~KMenuPrivate ()
+{
+ delete ctxMenu;
+ delete eventSniffer;
+}
+
/**
* custom variant type for QAction::data of kmenu context menus
@@ -143,6 +174,7 @@
QWidgetAction *action = new QWidgetAction(this);
QToolButton *titleButton = new QToolButton(this);
+ titleButton->installEventFilter(d->eventSniffer);
titleButton->setDefaultAction(buttonAction);
titleButton->setDown(true); // prevent hover style changes in some styles
titleButton->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
Attachment:
signature.asc
Description: This is a digitally signed message part.
>> Visit http://mail.kde.org/mailman/listinfo/kde-devel#unsub to unsubscribe <<
- Follow-Ups:
- Re: KMenu title patch
- From: Rafael Fernández López
- Re: KMenu title patch
- References:
- KMenu title patch
- From: alessandro diaferia
- Re: KMenu title patch
- From: Urs Wolfer
- KMenu title patch
- Prev by Date: dolphin crash
- Next by Date: Re: KMenu title patch
- Previous by thread: Re: KMenu title patch
- Next by thread: Re: KMenu title patch
- Index(es):