all repos — openbox @ 9223bfdd67ff39e4aaf72be1a0b4341033fc12c8

openbox fork - make it a bit more like ryudo

let the client be moved to a position specified for the *frame*
Dana Jansens danakj@orodu.net
commit

9223bfdd67ff39e4aaf72be1a0b4341033fc12c8

parent

f5904cdaaafa95e8ab6ffde212dfc6b7478b4e32

3 files changed, 12 insertions(+), 10 deletions(-)

jump to
M src/client.ccsrc/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.hhsrc/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.ccsrc/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: