maximizing fixes and simplification
This commit is contained in:
parent
16df453856
commit
0571837e50
1 changed files with 8 additions and 21 deletions
|
@ -1378,20 +1378,11 @@ void Client::maximize(bool max, int dir, bool savearea)
|
||||||
if (dir == 2 && !_max_vert) return;
|
if (dir == 2 && !_max_vert) return;
|
||||||
}
|
}
|
||||||
|
|
||||||
int g = _gravity;
|
|
||||||
|
|
||||||
const otk::Rect &a = openbox->screen(_screen)->area();
|
const otk::Rect &a = openbox->screen(_screen)->area();
|
||||||
int x = _area.x(), y = _area.y(), w = _area.width(), h = _area.height();
|
int x = frame->rect().x(), y = frame->rect().y(),
|
||||||
|
w = _area.width(), h = _area.height();
|
||||||
|
|
||||||
if (max) {
|
if (max) {
|
||||||
// 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) {
|
if (savearea) {
|
||||||
long dimensions[4];
|
long dimensions[4];
|
||||||
long *readdim;
|
long *readdim;
|
||||||
|
@ -1429,7 +1420,7 @@ void Client::maximize(bool max, int dir, bool savearea)
|
||||||
w = a.width();
|
w = a.width();
|
||||||
}
|
}
|
||||||
if (dir == 0 || dir == 2) { // vert
|
if (dir == 0 || dir == 2) { // vert
|
||||||
y = a.y() + frame->size().top;
|
y = a.y();
|
||||||
h = a.height() - frame->size().top - frame->size().bottom;
|
h = a.height() - frame->size().top - frame->size().bottom;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
@ -1461,24 +1452,20 @@ void Client::maximize(bool max, int dir, bool savearea)
|
||||||
h = a.height() / 2;
|
h = a.height() / 2;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
otk::Property::erase(_window, otk::Property::atoms.openbox_premax);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (dir == 0 || dir == 1) // horz
|
if (dir == 0 || dir == 1) // horz
|
||||||
_max_horz = max;
|
_max_horz = max;
|
||||||
if (dir == 0 || dir == 2) // vert
|
if (dir == 0 || dir == 2) // vert
|
||||||
_max_vert = max;
|
_max_vert = max;
|
||||||
|
|
||||||
|
if (!_max_horz && !_max_vert)
|
||||||
|
otk::Property::erase(_window, otk::Property::atoms.openbox_premax);
|
||||||
|
|
||||||
changeState(); // change the state hints on the client
|
changeState(); // change the state hints on the client
|
||||||
|
|
||||||
|
frame->frameGravity(x, y); // figure out where the client should be going
|
||||||
internal_resize(TopLeft, w, h, true, x, y);
|
internal_resize(TopLeft, w, h, true, x, y);
|
||||||
_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 = frame->rect().x(), y = frame->rect().y();
|
|
||||||
frame->frameGravity(x, y);
|
|
||||||
_area.setPos(x, y);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue