X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=openbox%2Fclient.h;h=e4831b95341af4c09de21b49688681b4dec6826e;hb=959fff5e1cda35b0a1569ef323aab3129db3cb1f;hp=05153eb0008fa14dc0523a1d431c97382bf537c4;hpb=c6dac8539715c12db1e18c13f389c59557270268;p=chaz%2Fopenbox diff --git a/openbox/client.h b/openbox/client.h index 05153eb0..e4831b95 100644 --- a/openbox/client.h +++ b/openbox/client.h @@ -35,7 +35,6 @@ struct _ObSessionState; typedef struct _ObClient ObClient; typedef struct _ObClientIcon ObClientIcon; -typedef struct _ObAppSettings ObAppSettings; /* The value in client.transient_for indicating it is a transient for its group instead of for a single window */ @@ -80,7 +79,6 @@ typedef enum struct _ObClient { ObWindow obwin; - Window window; /*! The window's decorations. NULL while the window is being managed! */ @@ -218,6 +216,10 @@ struct _ObClient we only force it if it tries to go completely offscreen, if neither, we should place the window ourselves when it first appears */ guint positioned; + + /*! Was the window's size requested by the application or the user? + If by the application we don't let it go outside the available area */ + guint sized; /*! Can the window receive input focus? */ gboolean can_focus; @@ -364,10 +366,24 @@ gboolean client_enter_focusable(ObClient *self); /* Returns if the window is focused */ gboolean client_focused(ObClient *self); -/*! Convery a position/size from a given gravity to the client's true gravity +/*! When the client is resized but not moved, figure out the new position + for it based on its gravity: + http://standards.freedesktop.org/wm-spec/wm-spec-1.4.html#id2512541 +*/ +void client_gravity_resize_w(ObClient *self, gint *x, gint oldw, gint neww); + +/*! When the client is resized but not moved, figure out the new position + for it based on its gravity: + http://standards.freedesktop.org/wm-spec/wm-spec-1.4.html#id2512541 +*/ +void client_gravity_resize_h(ObClient *self, gint *y, gint oldh, gint newh); + +/*! Convert a position/size from a given gravity to the client's true gravity, + when the client is only resizing (the reference point doesn't move) */ -void client_convert_gravity(ObClient *self, gint gravity, gint *x, gint *y, - gint w, gint h); +void client_convert_gravity_resize(ObClient *self, gint gravity, + gint *x, gint *y, + gint w, gint h); #define client_move(self, x, y) \ client_configure(self, x, y, self->area.width, self->area.height, TRUE, TRUE)