summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKimmo Hämäläinen <kimmo.hamalainen@nokia.com>2010-11-12 15:31:16 +0200
committerKimmo Hämäläinen <kimmo.hamalainen@nokia.com>2010-11-12 17:40:35 +0200
commit1a37e0e6988978bbc714f662b7207dad22b38da5 (patch)
tree274492ecae8f8605f738509b573610f659f42d11
parentf34f14153ef1f9835a2322c06bed33ebbd87968f (diff)
fix boundingRect calculations in MDecoratorWindow
-rw-r--r--decorators/mdecorator/mdecoratorwindow.cpp17
1 files changed, 13 insertions, 4 deletions
diff --git a/decorators/mdecorator/mdecoratorwindow.cpp b/decorators/mdecorator/mdecoratorwindow.cpp
index 6b96631..3c5428e 100644
--- a/decorators/mdecorator/mdecoratorwindow.cpp
+++ b/decorators/mdecorator/mdecoratorwindow.cpp
@@ -246,15 +246,24 @@ void MDecoratorWindow::setInputRegion()
{
static XRectangle prev_rect = {0, 0, 0, 0};
QRegion region;
- region += statusBar->geometry().toRect();
+ QRect r_tmp(statusBar->geometry().toRect());
+ region += statusBar->mapToScene(r_tmp).boundingRect().toRect();
if (!only_statusbar) {
- region += navigationBar->geometry().toRect();
- region += homeButtonPanel->geometry().toRect();
- region += escapeButtonPanel->geometry().toRect();
+ r_tmp = QRect(navigationBar->geometry().toRect());
+ region += navigationBar->mapToScene(r_tmp).boundingRect().toRect();
+ r_tmp = QRect(homeButtonPanel->geometry().toRect());
+ region += homeButtonPanel->mapToScene(r_tmp).boundingRect().toRect();
+ r_tmp = QRect(escapeButtonPanel->geometry().toRect());
+ region += escapeButtonPanel->mapToScene(r_tmp).boundingRect().toRect();
}
const QRect fs(QApplication::desktop()->screenGeometry());
decoratorRect = region.boundingRect();
+ // crop it to fullscreen to work around a weird issue
+ if (decoratorRect.width() > fs.width())
+ decoratorRect.setWidth(fs.width());
+ if (decoratorRect.height() > fs.height())
+ decoratorRect.setHeight(fs.height());
if (!only_statusbar && decoratorRect.width() > fs.width() / 2
&& decoratorRect.height() > fs.height() / 2) {