diff options
author | Kimmo Hämäläinen <kimmo.hamalainen@nokia.com> | 2010-11-12 15:31:16 +0200 |
---|---|---|
committer | Kimmo Hämäläinen <kimmo.hamalainen@nokia.com> | 2010-11-12 17:40:35 +0200 |
commit | 1a37e0e6988978bbc714f662b7207dad22b38da5 (patch) | |
tree | 274492ecae8f8605f738509b573610f659f42d11 | |
parent | f34f14153ef1f9835a2322c06bed33ebbd87968f (diff) |
fix boundingRect calculations in MDecoratorWindow
-rw-r--r-- | decorators/mdecorator/mdecoratorwindow.cpp | 17 |
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) { |