22PlacementTracker::WindowData PlacementTracker::dataForWindow(
Window *window)
 const 
   48        saveQuickTile(window);
 
   51        saveFullscreen(window);
 
   54        saveInteractionCounter(window);
 
   56    WindowData data = dataForWindow(window);
 
   57    m_data[m_currentKey][window] = data;
 
   58    m_savedWindows.push_back(window);
 
 
   63    if (m_savedWindows.contains(window)) {
 
   64        disconnect(window, 
nullptr, 
this, 
nullptr);
 
   65        for (
auto &dataMap : m_data) {
 
   66            dataMap.remove(window);
 
   68        m_savedWindows.removeOne(window);
 
 
   74    if (key == m_currentKey) {
 
   77    auto &dataMap = m_data[key];
 
   78    auto &oldDataMap = m_data[m_currentKey];
 
   79    const auto outputs = m_workspace->
outputs();
 
   82    for (
const auto window : std::as_const(m_savedWindows)) {
 
   83        const auto it = dataMap.find(window);
 
   84        if (it != dataMap.end()) {
 
   85            const WindowData &newData = it.value();
 
   95                if (
const auto it = m_lastRestoreData.find(window); it != m_lastRestoreData.end()) {
 
  105                if (
const auto oldData = oldDataMap.find(window); oldData != oldDataMap.end()) {
 
  106                    restore = std::none_of(outputs.begin(), outputs.end(), [&oldData](
const auto output) {
 
  107                        return output->uuid() == oldData->outputUuid;
 
  115                if (newData.quickTile || newData.maximize) {
 
  120                if (newData.fullscreen) {
 
  121                    window->
moveResize(newData.fullscreenGeometryRestore);
 
  124                if (newData.quickTile || newData.maximize || newData.fullscreen) {
 
  126                    const auto outputIt = std::find_if(outputs.begin(), outputs.end(), [&newData](
const auto output) {
 
  127                        return output->uuid() == newData.outputUuid;
 
  129                    if (outputIt != outputs.end()) {
 
  135                m_lastRestoreData[window] = dataForWindow(window);
 
  139        dataMap[window] = dataForWindow(window);
 
 
  150void PlacementTracker::saveGeometry(
Window *window)
 
  152    if (m_inhibitCount == 0) {
 
  153        auto &data = m_data[m_currentKey][window];
 
  159void PlacementTracker::saveInteractionCounter(
Window *window)
 
  161    if (m_inhibitCount == 0) {
 
  162        m_data[m_currentKey][window].interactiveMoveResizeCount = window->interactiveMoveResizeCount();
 
  166void PlacementTracker::saveMaximize(
Window *window)
 
  168    if (m_inhibitCount == 0) {
 
  169        auto &data = m_data[m_currentKey][window];
 
  170        data.maximize = window->maximizeMode();
 
  171        data.geometryRestore = window->geometryRestore();
 
  175void PlacementTracker::saveQuickTile(
Window *window)
 
  177    if (m_inhibitCount == 0) {
 
  178        auto &data = m_data[m_currentKey][window];
 
  179        data.quickTile = window->quickTileMode();
 
  180        data.geometryRestore = window->geometryRestore();
 
  184void PlacementTracker::saveFullscreen(
Window *window)
 
  186    if (m_inhibitCount == 0) {
 
  187        auto &data = m_data[m_currentKey][window];
 
  188        data.fullscreen = window->isFullScreen();
 
  189        data.fullscreenGeometryRestore = window->fullscreenGeometryRestore();
 
  200    Q_ASSERT(m_inhibitCount > 0);
 
 
  205#include "moc_placementtracker.cpp" 
void remove(Window *window)
void restore(const QString &key)
void init(const QString &key)
PlacementTracker(Workspace *workspace)
void moveResize(const QRectF &rect)
QRectF fullscreenGeometryRestore() const
virtual void setFullScreen(bool set)
virtual bool isFullScreen() const
uint32_t interactiveMoveResizeCount() const
void setQuickTileMode(QuickTileMode mode, bool keyboard=false)
virtual bool isUnmanaged() const
void interactiveMoveResizeFinished()
void sendToOutput(Output *output)
bool isAppletPopup() const
virtual MaximizeMode requestedMaximizeMode() const
QuickTileMode quickTileMode() const
void quickTileModeChanged()
Output * moveResizeOutput() const
QRectF moveResizeGeometry() const
QRectF geometryRestore() const
void frameGeometryChanged(const QRectF &oldGeometry)
bool isSpecialWindow() const
Q_INVOKABLE void setMaximize(bool vertically, bool horizontally)
QList< Output * > outputs() const
@ MaximizeVertical
The window is maximized vertically.