X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=openbox%2Fclient.h;h=5847c67f6cfd7b98fa8e88019e9c904bd69caa00;hb=55d2916c1e24e021d9b9692d2373dc4afff4c5c2;hp=bb1d4c9f15d5ca2b9aad35aaff2fdeb85143fb8e;hpb=90cd9c62192194d1b3ab868a77fe56a9b1e215c2;p=chaz%2Fopenbox diff --git a/openbox/client.h b/openbox/client.h index bb1d4c9f..5847c67f 100644 --- a/openbox/client.h +++ b/openbox/client.h @@ -32,7 +32,6 @@ struct _ObFrame; struct _ObGroup; struct _ObSessionState; -struct _ObClientTimeHeap; typedef struct _ObClient ObClient; typedef struct _ObClientIcon ObClientIcon; @@ -117,6 +116,8 @@ struct _ObClient gchar *title; /*! Window title when iconified */ gchar *icon_title; + /*! Hostname of machine running the client */ + gchar *client_machine; /*! The application that created the window */ gchar *name; @@ -192,6 +193,9 @@ struct _ObClient /*! Window decoration and functionality hints */ ObMwmHints mwmhints; + + /*! The client's specified colormap */ + Colormap colormap; /*! Where to place the decorated window in relation to the undecorated window */ @@ -215,6 +219,15 @@ struct _ObClient /*! Notify the window when it receives focus? */ gboolean focus_notify; +#ifdef SYNC + /*! The client wants to sync during resizes */ + gboolean sync_request; + /*! The XSync counter used for synchronizing during resizes */ + guint32 sync_counter; + /*! The value we're waiting for the counter to reach */ + gulong sync_counter_value; +#endif + /*! The window uses shape extension to be non-rectangular? */ gboolean shaped; @@ -301,7 +314,6 @@ struct _ObAppSettings }; extern GList *client_list; -extern struct _ObClientTimeHeap *client_user_times; void client_startup(gboolean reconfig); void client_shutdown(gboolean reconfig); @@ -336,25 +348,27 @@ gboolean client_normal(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. @@ -369,14 +383,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. @@ -391,8 +403,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); @@ -543,6 +554,12 @@ void client_update_transient_for(ObClient *self); /*! Update the protocols that the window supports and adjusts things if they change */ void client_update_protocols(ObClient *self); +#ifdef SYNC +/*! Updates the window's sync request counter for resizes */ +void client_update_sync_request_counter(ObClient *self); +#endif +/*! Updates the window's colormap */ +void client_update_colormap(ObClient *self, Colormap colormap); /*! Updates the WMNormalHints and adjusts things if they change */ void client_update_normal_hints(ObClient *self); @@ -620,9 +637,6 @@ ObClient *client_search_parent(ObClient *self, ObClient *search); NULL is returned if the given search is not a transient of the client. */ ObClient *client_search_transient(ObClient *self, ObClient *search); -/*! Return the "closest" client in the given direction */ -ObClient *client_find_directional(ObClient *c, ObDirection dir); - /*! Return the closest edge in the given direction */ gint client_directional_edge_search(ObClient *c, ObDirection dir, gboolean hang);