diff --git a/geometry.cpp b/geometry.cpp
index 26eed0a34e..3b6b6bb81c 100644
--- a/geometry.cpp
+++ b/geometry.cpp
@@ -32,6 +32,7 @@ along with this program. If not, see .
#include
#include
#include
+#include
#include
#include "placement.h"
@@ -875,6 +876,11 @@ void Client::checkWorkspacePosition()
{
if( isDesktop())
{
+ if (geometry() == workspace()->clientArea( ScreenArea, this ))
+ {
+ return;
+ }
+
QRect area = workspace()->clientArea( FullArea, this );
if( geometry() != area )
setGeometry( area );
diff --git a/manage.cpp b/manage.cpp
index 0bb627df67..585a4816e4 100644
--- a/manage.cpp
+++ b/manage.cpp
@@ -33,6 +33,7 @@ along with this program. If not, see .
#include "notifications.h"
#include
+#include
#include "rules.h"
#include "group.h"
@@ -235,8 +236,11 @@ bool Client::manage( Window w, bool isMapped )
if ( isDesktop() )
{
// desktops are treated slightly special
- geom = workspace()->clientArea( FullArea, geom.center(), desktop());
- placementDone = true;
+ if (geom != workspace()->clientArea( ScreenArea, geom.center(), desktop()))
+ {
+ geom = workspace()->clientArea( FullArea, geom.center(), desktop());
+ placementDone = true;
+ }
}
bool usePosition = false;