struct _ObFrame;
struct _ObGroup;
struct _ObSessionState;
+struct _ObPrompt;
typedef struct _ObClient ObClient;
typedef struct _ObClientIcon ObClientIcon;
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;
/*! 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;
void client_add_destroy_notify(ObClientCallback func, gpointer data);
void client_remove_destroy_notify(ObClientCallback func);
-/*! Manages a given window */
-void client_manage(Window win);
+/*! 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, struct _ObPrompt *prompt);
/*! Unmanages all managed windows */
void client_unmanage_all();
/*! Unmanages a given client */
*/
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