aboutsummaryrefslogtreecommitdiff
path: root/plainqt/style/qtmaemo6menuproxy.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'plainqt/style/qtmaemo6menuproxy.cpp')
-rw-r--r--plainqt/style/qtmaemo6menuproxy.cpp56
1 files changed, 49 insertions, 7 deletions
diff --git a/plainqt/style/qtmaemo6menuproxy.cpp b/plainqt/style/qtmaemo6menuproxy.cpp
index f2ddf36e..dbc57809 100644
--- a/plainqt/style/qtmaemo6menuproxy.cpp
+++ b/plainqt/style/qtmaemo6menuproxy.cpp
@@ -27,20 +27,59 @@
#include <QCloseEvent>
#include <QStyleOption>
#include <QPushButton>
+#include <QPaintEvent>
+#include <QPainter>
#include <duiapplicationmenustyle.h>
+#include <QDebug>
+
+/* unforunately this is required to force widgets drawing it's background, even
+ if there are widget attributes are set, that suppress the drawing!
+*/
+class DrawBackgroundEventFilter : public QObject {
+protected:
+ bool eventFilter(QObject* obj, QEvent* e) {
+ if(QPaintEvent* pe = dynamic_cast<QPaintEvent*>(e)) {
+ if(QWidget* w = qobject_cast<QWidget*>(obj)) {
+ qCritical() << "EventFilter:" << w->objectName() << w->geometry() << pe->rect();
+
+ Q_UNUSED(pe);
+ QPainter p(w);
+ p.setPen(Qt::NoPen);
+ p.setBrush(w->palette().window());
+ p.drawRect(pe->rect());
+ }
+ }
+ return QObject::eventFilter(obj, e);
+ };
+};
QtMaemo6MenuProxy::QtMaemo6MenuProxy(QMenuBar *mb, QWidget *parent)
: QtMaemo6Window(NULL, parent),
m_menuBar(mb)
{
+ //must be set, to activate the compositing
setAttribute(Qt::WA_TranslucentBackground);
-
QPalette palette;
- palette.setBrush(QPalette::Window, QBrush(QColor(0, 0, 0, 192)));
+ palette.setBrush(QPalette::Window, Qt::transparent);
setPalette(palette);
+ QWidget* appArea = new QWidget();
+ appArea->setObjectName("appArea");
+ appArea->installEventFilter(new DrawBackgroundEventFilter());
+
+ appArea->setAttribute(Qt::WA_TranslucentBackground);
+ palette.setBrush(QPalette::Window, QBrush(QColor(0, 0, 0, 192)));
+ appArea->setPalette(palette);
+
+ QGridLayout* gridLayout = new QGridLayout(appArea);
+ gridLayout->setMargin(0);
+ gridLayout->setSpacing(0);
+
m_menu = new QtMaemo6Menu(mb, NULL);
+ m_menu->setAttribute(Qt::WA_TranslucentBackground, false);
+ palette.setBrush(QPalette::Window, QBrush(QColor(0, 0, 0, 0)));
+ m_menu->setPalette(palette);
setCentralWidget(m_menu);
QStyleOption option;
@@ -55,10 +94,13 @@ QtMaemo6MenuProxy::QtMaemo6MenuProxy(QMenuBar *mb, QWidget *parent)
QSpacerItem *bottomSpacer = new QSpacerItem(1, style->paddingBottom());
QSpacerItem *leftSpacer = new QSpacerItem(style->paddingLeft(), 1);
- m_windowLayout->addItem(topSpacer, 0, 0, 1, 3);
- m_windowLayout->addItem(leftSpacer, 1, 0, 1, 1);
- m_windowLayout->addItem(rightSpacer, 1, 2, 1, 1);
- m_windowLayout->addItem(bottomSpacer, 2, 0, 1, 3);
+ gridLayout->addItem(leftSpacer, 0, 0, 1, 1);
+ gridLayout->addWidget(centralWidget(), 0, 1, 1, 1);
+ gridLayout->addItem(rightSpacer, 0, 2, 1, 1);
+ gridLayout->addItem(bottomSpacer, 1, 0, 1, 3);
+
+ m_windowLayout->addItem(topSpacer, 0, 0, 1, 1);
+ m_windowLayout->addWidget(appArea, 1, 0, 1, 1);
}
QtMaemo6MenuProxy::~QtMaemo6MenuProxy()
@@ -69,6 +111,6 @@ QtMaemo6MenuProxy::~QtMaemo6MenuProxy()
void QtMaemo6MenuProxy::mousePressEvent(QMouseEvent *event)
{
- Q_UNUSED(event);
close();
+ QtMaemo6Window::mousePressEvent(event);
}