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.
Dana Jansens danakj@orodu.net
3 files changed,
20 insertions(+),
14 deletions(-)
M
ChangeLog
→
ChangeLog
@@ -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
M
src/Window.cc
→
src/Window.cc
@@ -2804,15 +2804,18 @@ dx -= frame.border_w;
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 @@ break;
} 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 @@ }
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 @@ client.height = frame.height - frame.y_border - (frame.mwm_border_w * 2)
- 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); }
M
src/Window.h
→
src/Window.h
@@ -111,7 +111,7 @@ unsigned int maximized; // 1 = HorizVert, 2 = Vertical, 3 = Horizontal
} 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 @@ y_border, y_handle; // where within frame is the border and handle
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 @@ inline const int &getWorkspaceNumber(void) const { return workspace_number; }
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