try use the gravity in the WM_NORMAL hint, and fall back to the attribute
This commit is contained in:
parent
4c2f4e7537
commit
b8ae2f393f
1 changed files with 13 additions and 5 deletions
|
@ -93,14 +93,22 @@ Client::~Client()
|
|||
|
||||
void Client::getGravity()
|
||||
{
|
||||
XSizeHints size;
|
||||
XWindowAttributes wattrib;
|
||||
Status ret;
|
||||
long junk;
|
||||
|
||||
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()
|
||||
{
|
||||
|
@ -406,7 +414,7 @@ void Client::updateNormalHints()
|
|||
|
||||
// if the client has a frame, i.e. has already been mapped and is
|
||||
// changing its gravity
|
||||
if (frame && _gravity != oldgravity) {
|
||||
if (_gravity != oldgravity) {
|
||||
// move our idea of the client's position based on its new gravity
|
||||
int x, y;
|
||||
frame->frameGravity(x, y);
|
||||
|
|
Loading…
Reference in a new issue