let the client be moved to a position specified for the *frame*
Dana Jansens danakj@orodu.net
3 files changed,
12 insertions(+),
10 deletions(-)
M
src/client.cc
→
src/client.cc
@@ -495,7 +495,7 @@ // if the client has a frame, i.e. has already been mapped and is
// changing its gravity if (frame && _gravity != oldgravity) { // 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); _area.setPos(x, y); }@@ -1146,9 +1146,11 @@ internal_move(x, y);
} -void Client::move(int x, int y) +void Client::move(int x, int y, bool framepos) { if (!(_functions & Func_Move)) return; + if (framepos) + frame->frameGravity(x, y); internal_move(x, y); }@@ -1386,6 +1388,8 @@ // when maximizing, put the client where we want, NOT the frame!
_gravity = StaticGravity; // adjust our idea of position based on StaticGravity, so we stay put // unless asked + x = frame->rect().x(); + y = frame->rect().y(); frame->frameGravity(x, y); if (savearea) {@@ -1471,7 +1475,7 @@ _gravity = g;
if (max) { // because of my little gravity trick in here, we have to set the position // of the client to what it really is - int x, y; + int x = frame->rect().x(), y = frame->rect().y(); frame->frameGravity(x, y); _area.setPos(x, y); }
M
src/client.hh
→
src/client.hh
@@ -621,8 +621,10 @@ //! Move the client window
/*! @param x The X 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 /*!
M
src/frame.cc
→
src/frame.cc
@@ -344,6 +344,8 @@
void Frame::adjustPosition() { int x, y; + x = _client->area().x(); + y = _client->area().y(); clientGravity(x, y); move(x, y); }@@ -450,9 +452,6 @@
void Frame::clientGravity(int &x, int &y) { - x = _client->area().x(); - y = _client->area().y(); - // horizontal switch (_client->gravity()) { default:@@ -509,9 +508,6 @@
void Frame::frameGravity(int &x, int &y) { - x = rect().x(); - y = rect().y(); - // horizontal switch (_client->gravity()) { default: