X-Git-Url: https://git.brokenzipper.com/gitweb?a=blobdiff_plain;f=openbox%2Fclient.h;h=afdeac501a34a01717cfdfb3874c04f5a42aff46;hb=c1a5ad45a8f02cd0728852c3765f411d7b12dec3;hp=69f5aa5fd65f0311cc0eadf673fb2ac22b447066;hpb=ad852b6b56e43bdd7dda1389f54051cf92c0fad9;p=chaz%2Fopenbox diff --git a/openbox/client.h b/openbox/client.h index 69f5aa5f..afdeac50 100644 --- a/openbox/client.h +++ b/openbox/client.h @@ -258,6 +258,9 @@ struct _ObClient /*! Demands attention flag */ gboolean demands_attention; + /*! The urgent flag */ + gboolean urgent; + /*! The layer in which the window will be stacked, windows in lower layers are always below windows in higher layers. */ ObStackingLayer layer; @@ -284,6 +287,9 @@ struct _ObClient /*! The number of icons in icons */ guint nicons; + /* Where the window should iconify to/from */ + Rect icon_geometry; + guint32 user_time; }; @@ -345,28 +351,35 @@ gboolean client_should_show(ObClient *self); to them in a number of places regarding focus or user interaction. */ gboolean client_normal(ObClient *self); +/*! Returns if the window is one of an application's main windows (normal or + dialog type) rather than an accessory window (utilty, menu, etc) or a + non-normal window */ +gboolean client_application(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 + */ +void client_convert_gravity(ObClient *client, gint gravity, gint *x, gint *y, + gint w, gint h); + #define client_move(self, x, y) \ - client_configure(self, OB_CORNER_TOPLEFT, x, y, \ - self->area.width, self->area.height, \ + client_configure(self, x, y, self->area.width, self->area.height, \ TRUE, TRUE) #define client_resize(self, w, h) \ - client_configure(self, OB_CORNER_TOPLEFT, 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(self, OB_CORNER_TOPLEFT, x, y, w, h, TRUE, TRUE) + client_configure(self, x, y, w, h, TRUE, TRUE) -#define client_configure(self, anchor, x, y, w, h, user, final) \ - client_configure_full(self, anchor, x, y, w, h, user, final, FALSE) +#define client_configure(self, x, y, w, h, user, final) \ + client_configure_full(self, x, y, w, h, user, final, FALSE) /*! Figure out where a window will end up and what size it will be if you told it to move/resize to these coordinates. These values are what client_configure_full will give the window. - @param anchor The corner to keep in the same position when resizing. @param x The x coordiante of the new position for the client. @param y The y coordiante of the new position for the client. @param w The width component of the new size for the client. @@ -381,14 +394,12 @@ gboolean client_focused(ObClient *self); program requested change. For program requested changes, the constraints are not checked. */ -void client_try_configure(ObClient *self, ObCorner anchor, - gint *x, gint *y, gint *w, gint *h, +void client_try_configure(ObClient *self, gint *x, gint *y, gint *w, gint *h, gint *logicalw, gint *logicalh, gboolean user); /*! Move and/or resize the window. This also maintains things like the client's minsize, and size increments. - @param anchor The corner to keep in the same position when resizing. @param x The x coordiante of the new position for the client. @param y The y coordiante of the new position for the client. @param w The width component of the new size for the client. @@ -403,8 +414,7 @@ void client_try_configure(ObClient *self, ObCorner anchor, @param force_reply Send a ConfigureNotify to the client regardless of if the position changed. */ -void client_configure_full(ObClient *self, ObCorner anchor, - gint x, gint y, gint w, gint h, +void client_configure_full(ObClient *self, gint x, gint y, gint w, gint h, gboolean user, gboolean final, gboolean force_reply); @@ -580,6 +590,8 @@ void client_update_strut(ObClient *self); void client_update_icons(ObClient *self); /*! Updates the window's user time */ void client_update_user_time(ObClient *self); +/*! Updates the window's icon geometry (where to iconify to/from) */ +void client_update_icon_geometry(ObClient *self); /*! Set up what decor should be shown on the window and what functions should be allowed (ObClient::decorations and ObClient::functions). @@ -659,4 +671,6 @@ ObClient* client_under_pointer(); gboolean client_has_group_siblings(ObClient *self); +gboolean client_has_application_group_siblings(ObClient *self); + #endif