made shaded windows snap properly at their bottom, using their shaded height.

window.getHeight() now returns the different/correct value when a window is shaded.
This commit is contained in:
Dana Jansens 2002-04-14 09:39:14 +00:00
parent bb1a97327b
commit d00ef14582
3 changed files with 20 additions and 14 deletions

View file

@ -1,7 +1,11 @@
Changelog for Openbox:
1.0.0:
* added BestFit window placement algorithm/type (Ruhi Bloodworth)
* made shaded windows edge-snap correctly to the
bottom for their size instead for their unshaded
size. (Ben Jansens)
* added BestFit window placement algorithm/type. (Ruhi Bloodworth)
0.99.1:
* forced a redraw of the close button after pressing

View file

@ -2804,15 +2804,18 @@ void OpenboxWindow::motionNotifyEvent(XMotionEvent *me) {
dy -= frame.border_w;
int snap_distance = screen->getEdgeSnapThreshold();
// width/height of the snapping window
unsigned int snap_w = frame.width + (frame.border_w * 2);
unsigned int snap_h = getHeight() + (frame.border_w * 2);
if (snap_distance) {
int drx = screen->getWidth() - (dx + frame.snap_w);
int drx = screen->getWidth() - (dx + snap_w);
if (dx < drx && (dx > 0 && dx < snap_distance) ||
(dx < 0 && dx > -snap_distance) )
dx = 0;
else if ( (drx > 0 && drx < snap_distance) ||
(drx < 0 && drx > -snap_distance) )
dx = screen->getWidth() - frame.snap_w;
dx = screen->getWidth() - snap_w;
int dtty, dbby, dty, dby;
switch (screen->getToolbarPlacement()) {
@ -2831,14 +2834,14 @@ void OpenboxWindow::motionNotifyEvent(XMotionEvent *me) {
}
dty = dy - dtty;
dby = dbby - (dy + frame.snap_h);
dby = dbby - (dy + snap_h);
if ( (dy > 0 && dty < snap_distance) ||
(dy < 0 && dty > -snap_distance) )
dy = dtty;
else if ( (dby > 0 && dby < snap_distance) ||
(dby < 0 && dby > -snap_distance) )
dy = dbby - frame.snap_h;
dy = dbby - snap_h;
}
if (screen->doOpaqueMove()) {
@ -3148,9 +3151,6 @@ void OpenboxWindow::upsize(void) {
frame.width = client.width + (frame.mwm_border_w * 2);
frame.height = frame.y_handle + frame.handle_h;
frame.snap_w = frame.width + (frame.border_w * 2);
frame.snap_h = frame.height + (frame.border_w * 2);
}
@ -3172,9 +3172,6 @@ void OpenboxWindow::downsize(void) {
- frame.handle_h - (decorations.handle ? frame.border_w : 0);
frame.y_handle = frame.border_h + frame.y_border + frame.border_w;
frame.snap_w = frame.width + (frame.border_w * 2);
frame.snap_h = frame.height + (frame.border_w * 2);
}

View file

@ -111,7 +111,7 @@ private:
} flags;
struct _client {
OpenboxWindow *transient_for, // which window are we a transient for?
OpenboxWindow *transient_for, // which window are we a transient for?
*transient; // which window is our transient?
Window window, // the client's window
@ -199,7 +199,7 @@ private:
unsigned int width, height, title_h, label_w, label_h, handle_h,
button_w, button_h, grip_w, grip_h, mwm_border_w, border_h, border_w,
bevel_w, snap_w, snap_h;
bevel_w;
} frame;
protected:
@ -279,7 +279,12 @@ public:
inline const int &getWindowNumber(void) const { return window_number; }
inline const unsigned int &getWidth(void) const { return frame.width; }
inline const unsigned int &getHeight(void) const { return frame.height; }
inline const unsigned int &getHeight(void) const {
if (!flags.shaded)
return frame.height;
else
return frame.title_h;
}
inline const unsigned int &getClientHeight(void) const
{ return client.height; }
inline const unsigned int &getClientWidth(void) const