X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=openbox%2Fclient.h;h=69f5aa5fd65f0311cc0eadf673fb2ac22b447066;hb=c8983c42a7c27321d18825f2a130c15e29046f7b;hp=a01c2b0f6083aad80c84105a683f9e23f9cd47ff;hpb=270a5b25df8db500f94a7c29430ebc224ddf18b2;p=chaz%2Fopenbox diff --git a/openbox/client.h b/openbox/client.h index a01c2b0f..69f5aa5f 100644 --- a/openbox/client.h +++ b/openbox/client.h @@ -2,7 +2,7 @@ client.h for the Openbox window manager Copyright (c) 2006 Mikael Magnusson - Copyright (c) 2003 Ben Jansens + Copyright (c) 2003-2007 Dana Jansens This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -114,11 +114,10 @@ struct _ObClient /*! Normal window title */ gchar *title; - /*! The count for the title. When another window with the same title - exists, a count will be appended to it. */ - guint title_count; /*! Window title when iconified */ gchar *icon_title; + /*! Hostname of machine running the client */ + gchar *client_machine; /*! The application that created the window */ gchar *name; @@ -139,6 +138,9 @@ struct _ObClient */ Rect area; + /*! Position of the client window relative to the root window */ + Point root_pos; + /*! Position and size of the window prior to being maximized */ Rect pre_max_area; /*! Position and size of the window prior to being fullscreened */ @@ -191,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 */ @@ -214,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; @@ -347,6 +361,31 @@ gboolean client_focused(ObClient *self); #define client_configure(self, anchor, x, y, w, h, user, final) \ client_configure_full(self, anchor, 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. + @param h The height component of the new size for the client. + @param logicalw Returns the width component of the new logical width. + This value is only returned when the new w or h calculated + differ from the ones passed in. + @param logicalh Returns the height component of the new logical height. + This value is only returned when the new w or h calculated + differ from the ones passed in. + @param user Specifies whether this is a user-requested change or a + 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, + 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. @@ -436,6 +475,12 @@ void client_kill(ObClient *self); desktop has been changed. Generally this should be FALSE. */ void client_set_desktop(ObClient *self, guint target, gboolean donthide); +/*! Show the client if it should be shown. */ +void client_show(ObClient *self); + +/*! Show the client if it should be shown. */ +void client_hide(ObClient *self); + /*! Show the client if it should be shown, and hide it if it should be hidden. This is for example, when switching desktops. */ @@ -473,18 +518,14 @@ gboolean client_can_focus(ObClient *self); */ gboolean client_focus(ObClient *self); -/*! Remove focus from the client window */ -void client_unfocus(ObClient *self); - /*! Activates the client for use, focusing, uniconifying it, etc. To be used when the user deliberately selects a window for use. @param here If true, then the client is brought to the current desktop; otherwise, the desktop is changed to where the client lives. @param user If true, then a user action is what requested the activation; otherwise, it means an application requested it on its own - @param timestamp The time at which the activate was requested. */ -void client_activate(ObClient *self, gboolean here, gboolean user, Time time); +void client_activate(ObClient *self, gboolean here, gboolean user); /*! Calculates the stacking layer for the client window */ void client_calc_layer(ObClient *self); @@ -514,6 +555,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); @@ -532,7 +579,7 @@ void client_update_strut(ObClient *self); /*! Updates the window's icons */ void client_update_icons(ObClient *self); /*! Updates the window's user time */ -void client_update_user_time(ObClient *self, gboolean new_event); +void client_update_user_time(ObClient *self); /*! Set up what decor should be shown on the window and what functions should be allowed (ObClient::decorations and ObClient::functions). @@ -591,9 +638,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);