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
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()) {
}
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()) {
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);
}
- 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);
}
} 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
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:
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