let the client be moved to a position specified for the *frame*

This commit is contained in:
Dana Jansens 2003-02-03 04:14:54 +00:00
parent f5904cdaaa
commit 9223bfdd67
3 changed files with 12 additions and 10 deletions

View file

@ -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);
} }

View file

@ -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
/*! /*!

View file

@ -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: