let the client be moved to a position specified for the *frame*
This commit is contained in:
parent
f5904cdaaa
commit
9223bfdd67
3 changed files with 12 additions and 10 deletions
|
@ -495,7 +495,7 @@ void Client::updateNormalHints()
|
||||||
// changing its gravity
|
// changing its gravity
|
||||||
if (frame && _gravity != oldgravity) {
|
if (frame && _gravity != oldgravity) {
|
||||||
// move our idea of the client's position based on its new gravity
|
// move our idea of the client's position based on its new gravity
|
||||||
int x, y;
|
int x = frame->rect().x(), y = frame->rect().y();
|
||||||
frame->frameGravity(x, y);
|
frame->frameGravity(x, y);
|
||||||
_area.setPos(x, y);
|
_area.setPos(x, y);
|
||||||
}
|
}
|
||||||
|
@ -1146,9 +1146,11 @@ void Client::internal_resize(Corner anchor, int w, int h, bool user,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void Client::move(int x, int y)
|
void Client::move(int x, int y, bool framepos)
|
||||||
{
|
{
|
||||||
if (!(_functions & Func_Move)) return;
|
if (!(_functions & Func_Move)) return;
|
||||||
|
if (framepos)
|
||||||
|
frame->frameGravity(x, y);
|
||||||
internal_move(x, y);
|
internal_move(x, y);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1386,6 +1388,8 @@ void Client::maximize(bool max, int dir, bool savearea)
|
||||||
_gravity = StaticGravity;
|
_gravity = StaticGravity;
|
||||||
// adjust our idea of position based on StaticGravity, so we stay put
|
// adjust our idea of position based on StaticGravity, so we stay put
|
||||||
// unless asked
|
// unless asked
|
||||||
|
x = frame->rect().x();
|
||||||
|
y = frame->rect().y();
|
||||||
frame->frameGravity(x, y);
|
frame->frameGravity(x, y);
|
||||||
|
|
||||||
if (savearea) {
|
if (savearea) {
|
||||||
|
@ -1471,7 +1475,7 @@ void Client::maximize(bool max, int dir, bool savearea)
|
||||||
if (max) {
|
if (max) {
|
||||||
// because of my little gravity trick in here, we have to set the position
|
// because of my little gravity trick in here, we have to set the position
|
||||||
// of the client to what it really is
|
// of the client to what it really is
|
||||||
int x, y;
|
int x = frame->rect().x(), y = frame->rect().y();
|
||||||
frame->frameGravity(x, y);
|
frame->frameGravity(x, y);
|
||||||
_area.setPos(x, y);
|
_area.setPos(x, y);
|
||||||
}
|
}
|
||||||
|
|
|
@ -621,8 +621,10 @@ BB @param window The window id that the Client class should handle
|
||||||
/*!
|
/*!
|
||||||
@param x The X coordinate to move to.
|
@param x The X coordinate to move to.
|
||||||
@param y The Y coordinate to move to.
|
@param y The Y coordinate to move to.
|
||||||
|
@param bool framepos True if the frame should be moved to the position
|
||||||
|
instead of the client. This makes it ignore the gravity.
|
||||||
*/
|
*/
|
||||||
void move(int x, int y);
|
void move(int x, int y, bool framepos = false);
|
||||||
|
|
||||||
//! Resizes the client window, anchoring it in a given corner
|
//! Resizes the client window, anchoring it in a given corner
|
||||||
/*!
|
/*!
|
||||||
|
|
|
@ -344,6 +344,8 @@ void Frame::adjustSize()
|
||||||
void Frame::adjustPosition()
|
void Frame::adjustPosition()
|
||||||
{
|
{
|
||||||
int x, y;
|
int x, y;
|
||||||
|
x = _client->area().x();
|
||||||
|
y = _client->area().y();
|
||||||
clientGravity(x, y);
|
clientGravity(x, y);
|
||||||
move(x, y);
|
move(x, y);
|
||||||
}
|
}
|
||||||
|
@ -450,9 +452,6 @@ void Frame::releaseClient()
|
||||||
|
|
||||||
void Frame::clientGravity(int &x, int &y)
|
void Frame::clientGravity(int &x, int &y)
|
||||||
{
|
{
|
||||||
x = _client->area().x();
|
|
||||||
y = _client->area().y();
|
|
||||||
|
|
||||||
// horizontal
|
// horizontal
|
||||||
switch (_client->gravity()) {
|
switch (_client->gravity()) {
|
||||||
default:
|
default:
|
||||||
|
@ -509,9 +508,6 @@ void Frame::clientGravity(int &x, int &y)
|
||||||
|
|
||||||
void Frame::frameGravity(int &x, int &y)
|
void Frame::frameGravity(int &x, int &y)
|
||||||
{
|
{
|
||||||
x = rect().x();
|
|
||||||
y = rect().y();
|
|
||||||
|
|
||||||
// horizontal
|
// horizontal
|
||||||
switch (_client->gravity()) {
|
switch (_client->gravity()) {
|
||||||
default:
|
default:
|
||||||
|
|
Loading…
Reference in a new issue