X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=openbox%2Fclient.h;h=ac6b3153cf68ad2a10322f6de24c692cd641903d;hb=61b8f5243063622598ea21c26cccc220ea29a50c;hp=b4b165f8035c68c61d2214b4c59fdceb387dc46d;hpb=dacc9dac7a8232180fb824fe2eea7d026def99c9;p=chaz%2Fopenbox diff --git a/openbox/client.h b/openbox/client.h index b4b165f8..ac6b3153 100644 --- a/openbox/client.h +++ b/openbox/client.h @@ -24,14 +24,20 @@ #include "mwm.h" #include "geom.h" #include "stacking.h" +#include "window.h" #include "render/color.h" #include #include +#ifdef HAVE_SYS_TYPES_H +# include /* for pid_t */ +#endif + struct _ObFrame; struct _ObGroup; struct _ObSessionState; +struct _ObPrompt; typedef struct _ObClient ObClient; typedef struct _ObClientIcon ObClientIcon; @@ -77,6 +83,10 @@ struct _ObClient ObWindow obwin; Window window; + /*! If this client is managing an ObPrompt window, then this is set to the + prompt */ + struct _ObPrompt *prompt; + /*! The window's decorations. NULL while the window is being managed! */ struct _ObFrame *frame; @@ -114,6 +124,8 @@ struct _ObClient gchar *client_machine; /*! The command used to run the program. Pre-XSMP window identification. */ gchar *wm_command; + /*! The PID of the process which owns the window */ + pid_t pid; /*! The application that created the window */ gchar *name; @@ -219,6 +231,14 @@ struct _ObClient /*! Notify the window when it receives focus? */ gboolean focus_notify; + /*! Will the client respond to pings? */ + gboolean ping; + /*! Indicates if the client is trying to close but has stopped responding + to pings */ + gboolean not_responding; + /*! We tried to close the window with a SIGTERM */ + gboolean close_tried_term; + #ifdef SYNC /*! The client wants to sync during resizes */ gboolean sync_request; @@ -289,6 +309,9 @@ struct _ObClient /*! Where the window should iconify to/from */ Rect icon_geometry; + + /*! A boolean used for algorithms which need to mark clients as visited */ + gboolean visited; }; extern GList *client_list; @@ -307,8 +330,10 @@ void client_remove_destroy_notify(ObClientCallback func); /*! Manages all existing windows */ void client_manage_all(); /*! Manages a given window + @param prompt This specifies an ObPrompt which is being managed. It is + possible to manage Openbox-owned windows through this. */ -void client_manage(Window win); +void client_manage(Window win, struct _ObPrompt *prompt); /*! Unmanages all managed windows */ void client_unmanage_all(); /*! Unmanages a given client */ @@ -673,7 +698,9 @@ ObClient *client_direct_parent(ObClient *self); */ ObClient *client_search_top_direct_parent(ObClient *self); -/*! Is one client a direct child of another (i.e. not through the group.) */ +/*! Is one client a direct child of another (i.e. not through the group.) + This checks more than one level, so there may be another direct child in + between */ gboolean client_is_direct_child(ObClient *parent, ObClient *child); /*! Search for a parent of a client. This only searches up *ONE LEVEL*, and