try use the gravity in the WM_NORMAL hint, and fall back to the attribute

This commit is contained in:
Dana Jansens 2003-01-17 02:48:29 +00:00
parent 4c2f4e7537
commit b8ae2f393f

View file

@ -93,13 +93,21 @@ Client::~Client()
void Client::getGravity() void Client::getGravity()
{ {
XSizeHints size;
XWindowAttributes wattrib; XWindowAttributes wattrib;
Status ret; Status ret;
long junk;
ret = XGetWindowAttributes(**otk::display, _window, &wattrib);
assert(ret != BadWindow);
_gravity = wattrib.win_gravity; if (XGetWMNormalHints(**otk::display, _window, &size, &junk) &&
size.flags & PWinGravity)
// first try the normal hints
_gravity = size.win_gravity;
else {
// then fall back to the attribute
ret = XGetWindowAttributes(**otk::display, _window, &wattrib);
assert(ret != BadWindow);
_gravity = wattrib.win_gravity;
}
} }
void Client::getDesktop() void Client::getDesktop()
@ -406,7 +414,7 @@ void Client::updateNormalHints()
// if the client has a frame, i.e. has already been mapped and is // if the client has a frame, i.e. has already been mapped and is
// changing its gravity // changing its gravity
if (frame && _gravity != oldgravity) { if (_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, y;
frame->frameGravity(x, y); frame->frameGravity(x, y);