X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=openbox%2Fclient.h;h=82a565f3fd692f7e64200f8789a5be66081b2ff6;hb=7d164842e0d0c3138401fad0dafc6f21bba0a04f;hp=3dcf62fc3a8952bf0f5d6762eceb98827611e5af;hpb=2ca83f67137c41ecd7d2cc2742b79aa8b2d7c8a8;p=chaz%2Fopenbox diff --git a/openbox/client.h b/openbox/client.h index 3dcf62fc..82a565f3 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 */ @@ -73,13 +72,13 @@ typedef enum OB_CLIENT_FUNC_FULLSCREEN = 1 << 5, /*!< Allow to be made fullscreen */ OB_CLIENT_FUNC_CLOSE = 1 << 6, /*!< Allow to be closed */ OB_CLIENT_FUNC_ABOVE = 1 << 7, /*!< Allow to be put in lower layer */ - OB_CLIENT_FUNC_BELOW = 1 << 8 /*!< Allow to be put in higher layer */ + OB_CLIENT_FUNC_BELOW = 1 << 8, /*!< Allow to be put in higher layer */ + OB_CLIENT_FUNC_UNDECORATE = 1 << 9 /*!< Allow to be undecorated */ } ObFunctions; struct _ObClient { ObWindow obwin; - Window window; /*! The window's decorations. NULL while the window is being managed! */ @@ -363,18 +362,31 @@ 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_full(self, x, y, self->area.width, self->area.height, \ - TRUE, TRUE) + client_configure(self, x, y, self->area.width, self->area.height, TRUE, TRUE) #define client_resize(self, w, h) \ - client_configure_full(self, self->area.x, self->area.y, w, h, TRUE, TRUE) + client_configure(self, self->area.x, self->area.y, w, h, TRUE, TRUE) #define client_move_resize(self, x, y, w, h) \ - client_configure_full(self, x, y, w, h, TRUE, TRUE) + client_configure(self, x, y, w, h, TRUE, TRUE) /*! Figure out where a window will end up and what size it will be if you told it to move/resize to these coordinates. @@ -415,8 +427,8 @@ void client_try_configure(ObClient *self, gint *x, gint *y, gint *w, gint *h, @param force_reply Send a ConfigureNotify to the client regardless of if the position changed. */ -void client_configure_full(ObClient *self, gint x, gint y, gint w, gint h, - gboolean user, gboolean final); +void client_configure(ObClient *self, gint x, gint y, gint w, gint h, + gboolean user, gboolean final); void client_reconfigure(ObClient *self);