diff --git a/shell_client.cpp b/shell_client.cpp --- a/shell_client.cpp +++ b/shell_client.cpp @@ -960,14 +960,15 @@ if (isFullScreen()) { setGeometry(workspace()->clientArea(FullScreenArea, this)); } else { - if (!m_geomFsRestore.isNull()) { + if (m_geomFsRestore.isValid()) { int currentScreen = screen(); setGeometry(QRect(m_geomFsRestore.topLeft(), adjustedSize(m_geomFsRestore.size()))); if( currentScreen != screen()) workspace()->sendClientToScreen( this, currentScreen ); } else { - // does this ever happen? - setGeometry(workspace()->clientArea(MaximizeArea, this)); + // this can happen when the window was first shown already fullscreen, + // so let the client set the size by itself + setGeometry(QRect(QPoint(0, 0), QSize(0, 0))); } } updateWindowRules(Rules::Fullscreen|Rules::Position|Rules::Size);