summaryrefslogtreecommitdiffstats
path: root/src/gui/widgets/qmenubar_x11.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/gui/widgets/qmenubar_x11.cpp')
-rw-r--r--src/gui/widgets/qmenubar_x11.cpp24
1 files changed, 24 insertions, 0 deletions
diff --git a/src/gui/widgets/qmenubar_x11.cpp b/src/gui/widgets/qmenubar_x11.cpp
index ca227a6c4c..37c085fc4a 100644
--- a/src/gui/widgets/qmenubar_x11.cpp
+++ b/src/gui/widgets/qmenubar_x11.cpp
@@ -48,6 +48,8 @@
#include "qmenu.h"
#include "qmenubar.h"
+#include <private/qfactoryloader_p.h>
+
QT_BEGIN_NAMESPACE
QX11MenuBar::~QX11MenuBar()
@@ -109,6 +111,28 @@ bool QX11MenuBar::menuBarEventFilter(QObject *, QEvent *)
return false;
}
+struct QX11MenuBarFactory : public QPlatformMenuBarFactoryInterface
+{
+ QAbstractPlatformMenuBar *create() { return new QX11MenuBar; }
+ virtual QStringList keys() const { return QStringList(); }
+};
+
+QPlatformMenuBarFactoryInterface *qt_guiPlatformMenuBarFactory()
+{
+ static QPlatformMenuBarFactoryInterface *factory = 0;
+ if (!factory) {
+#ifndef QT_NO_LIBRARY
+ QFactoryLoader loader(QPlatformMenuBarFactoryInterface_iid, QLatin1String("/menubar"));
+ factory = qobject_cast<QPlatformMenuBarFactoryInterface *>(loader.instance(QLatin1String("default")));
+#endif // QT_NO_LIBRARY
+ if(!factory) {
+ static QX11MenuBarFactory def;
+ factory = &def;
+ }
+ }
+ return factory;
+}
+
QT_END_NAMESPACE
#endif // QT_NO_MENUBAR