Introduce a virtual AbstractClient::updateQuickTileMode(QuickTileMode)

New method is used to modify the quick tile mode state directly.
Preparation step for moving the quick tile handling to AbstractClient.
This commit is contained in:
Martin Gräßlin 2015-10-13 14:31:10 +02:00
parent fa18d60e9e
commit 9f2b4c7d14
4 changed files with 17 additions and 6 deletions

View file

@ -1011,6 +1011,10 @@ AbstractClient::QuickTileMode AbstractClient::quickTileMode() const
return QuickTileNone;
}
void AbstractClient::updateQuickTileMode(QuickTileMode)
{
}
int AbstractClient::borderBottom() const
{
return 0;

View file

@ -552,6 +552,7 @@ protected:
return m_electricMaximizing;
}
QRect electricBorderMaximizeGeometry(QPoint pos, int desktop);
virtual void updateQuickTileMode(QuickTileMode newMode);
// geometry handling
void checkOffscreenPosition(QRect *geom, const QRect &screenArea);

View file

@ -496,6 +496,7 @@ protected:
bool belongsToDesktop() const override;
bool isActiveFullScreen() const override;
void setGeometryRestore(const QRect &geo) override;
void updateQuickTileMode(QuickTileMode newMode) override;
private Q_SLOTS:
void delayedSetShortcut();
@ -828,6 +829,11 @@ inline Client::QuickTileMode Client::quickTileMode() const
return (Client::QuickTileMode)quick_tile_mode;
}
inline void Client::updateQuickTileMode(QuickTileMode newMode)
{
quick_tile_mode = newMode;
}
inline bool Client::isFullScreen() const
{
return fullscreen_mode != FullScreenNone;

View file

@ -1621,7 +1621,7 @@ void Client::configureRequest(int value_mask, int rx, int ry, int rw, int rh, in
// however, the user shall be able to force obedience despite and also disobedience in general
ignore = rules()->checkIgnoreGeometry(ignore);
if (!ignore) { // either we're not max'd / q'tiled or the user allowed the client to break that - so break it.
quick_tile_mode = QuickTileNone;
updateQuickTileMode(QuickTileNone);
max_mode = MaximizeRestore;
emit quickTileModeChanged();
} else if (!app_noborder && quickTileMode() == QuickTileNone &&
@ -2276,7 +2276,7 @@ void Client::changeMaximize(bool vertical, bool horizontal, bool adjust)
} else if ((old_mode == MaximizeVertical && max_mode == MaximizeRestore) ||
(old_mode == MaximizeFull && max_mode == MaximizeHorizontal)) {
// Modifying geometry of a tiled window
quick_tile_mode = QuickTileNone; // Exit quick tile mode without restoring geometry
updateQuickTileMode(QuickTileNone); // Exit quick tile mode without restoring geometry
}
}
@ -2355,7 +2355,7 @@ void Client::changeMaximize(bool vertical, bool horizontal, bool adjust)
if (!clientArea.contains(geom_restore.center())) // Not restoring to the same screen
Placement::self()->place(this, clientArea);
info->setState(0, NET::Max);
quick_tile_mode = QuickTileNone;
updateQuickTileMode(QuickTileNone);
break;
}
@ -2403,9 +2403,9 @@ void Client::changeMaximize(bool vertical, bool horizontal, bool adjust)
}
setGeometry(r, geom_mode);
if (options->electricBorderMaximize() && r.top() == clientArea.top())
quick_tile_mode = QuickTileMaximize;
updateQuickTileMode(QuickTileMaximize);
else
quick_tile_mode = QuickTileNone;
updateQuickTileMode(QuickTileNone);
info->setState(NET::Max, NET::Max);
break;
}
@ -2655,7 +2655,7 @@ bool Client::startMoveResize()
if (quickTileMode() != QuickTileNone && mode != PositionCenter) { // Cannot use isResize() yet
// Exit quick tile mode when the user attempts to resize a tiled window
quick_tile_mode = QuickTileNone; // Do so without restoring original geometry
updateQuickTileMode(QuickTileNone); // Do so without restoring original geometry
geom_restore = geometry();
emit quickTileModeChanged();
}