X-Git-Url: https://git.brokenzipper.com/gitweb?a=blobdiff_plain;f=openbox%2Fclient.h;h=4ee239f0b3b5c64d7424a3f5cbaab5083feb95fa;hb=4546925b589d30c46f3bced74a02b3d531de894c;hp=afdeac501a34a01717cfdfb3874c04f5a42aff46;hpb=08e42acaadf8868abb94dc75da0daa9c6e4e2d1c;p=chaz%2Fopenbox
diff --git a/openbox/client.h b/openbox/client.h
index afdeac50..4ee239f0 100644
--- a/openbox/client.h
+++ b/openbox/client.h
@@ -118,6 +118,8 @@ struct _ObClient
gchar *icon_title;
/*! Hostname of machine running the client */
gchar *client_machine;
+ /*! The command used to run the program. Pre-XSMP window identification. */
+ gchar *wm_command;
/*! The application that created the window */
gchar *name;
@@ -293,41 +295,18 @@ struct _ObClient
guint32 user_time;
};
-struct _ObAppSettings
-{
- gchar *class;
- gchar *name;
- gchar *role;
-
- Point position;
- gboolean center_x;
- gboolean center_y;
- gboolean pos_given;
-
- guint desktop;
- gint shade;
- gint decor;
- gint focus;
- gint head;
- gint iconic;
- gint skip_pager;
- gint skip_taskbar;
- gint max_horz;
- gint max_vert;
- gint fullscreen;
-
- gint layer;
-};
-
extern GList *client_list;
void client_startup(gboolean reconfig);
void client_shutdown(gboolean reconfig);
-typedef void (*ObClientDestructor)(ObClient *client, gpointer data);
+typedef void (*ObClientCallback)(ObClient *client, gpointer data);
+
+/* Callback functions */
-void client_add_destructor(ObClientDestructor func, gpointer data);
-void client_remove_destructor(ObClientDestructor func);
+/*! Get notified when the client is unmanaged */
+void client_add_destructor(ObClientCallback func, gpointer data);
+void client_remove_destructor(ObClientCallback func);
/*! Manages all existing windows */
void client_manage_all();
@@ -351,10 +330,20 @@ 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 one of an application's helper windows
+ (utilty, menu, etc) */
+gboolean client_helper(ObClient *self);
+
+/*! Return if the client is a type which should be given focus from mouse
+ presses on the *client* window. This doesn't affect clicking on the
+ decorations. This doesn't count for focus cycling, different rules apply to
+ that. */
+gboolean client_mouse_focusable(ObClient *self);
+
+/*! Return if the client is a type which should be given focus from the
+ mouse entering the window. This doesn't count for focus cycling, different
+ rules apply to that. */
+gboolean client_enter_focusable(ObClient *self);
/* Returns if the window is focused */
gboolean client_focused(ObClient *self);
@@ -471,6 +460,9 @@ void client_maximize(ObClient *self, gboolean max, gint dir);
*/
void client_shade(ObClient *self, gboolean shade);
+/*! Set a client window to have decorations or not */
+void client_set_undecorated(ObClient *self, gboolean undecorated);
+
/*! Hilite the window to make the user notice it */
void client_hilite(ObClient *self, gboolean hilite);
@@ -482,7 +474,8 @@ void client_kill(ObClient *self);
/*! Sends the window to the specified desktop
@param donthide If TRUE, the window will not be shown/hidden after its
- desktop has been changed. Generally this should be FALSE. */
+ 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. */
@@ -537,6 +530,10 @@ gboolean client_focus(ObClient *self);
*/
void client_activate(ObClient *self, gboolean here, gboolean user);
+/*! Bring all of its helper windows to its desktop. These are the utility and
+ stuff windows. */
+void client_bring_helper_windows(ObClient *client);
+
/*! Calculates the stacking layer for the client window */
void client_calc_layer(ObClient *self);
@@ -582,8 +579,6 @@ void client_update_normal_hints(ObClient *self);
void client_update_wmhints(ObClient *self);
/*! Updates the window's title and icon title */
void client_update_title(ObClient *self);
-/*! Updates the window's application name and class */
-void client_update_class(ObClient *self);
/*! Updates the strut for the client */
void client_update_strut(ObClient *self);
/*! Updates the window's icons */
@@ -634,10 +629,17 @@ ObClient *client_search_modal_child(ObClient *self);
*/
GSList *client_search_all_top_parents(ObClient *self);
+/*! Returns a list of top-level windows which this is a transient for, and
+ which are in the same layer as this client.
+ It will only contain more than 1 element if the client is transient for its
+ group.
+*/
+GSList *client_search_all_top_parents_layer(ObClient *self);
+
/*! Returns a window's top level parent. This only counts direct parents,
not groups if it is transient for its group.
*/
-ObClient *client_search_top_parent(ObClient *self);
+ObClient *client_search_top_normal_parent(ObClient *self);
/*! Is one client a direct child of another (i.e. not through the group.) */
gboolean client_is_direct_child(ObClient *parent, ObClient *child);
@@ -654,23 +656,16 @@ ObClient *client_search_transient(ObClient *self, ObClient *search);
gint client_directional_edge_search(ObClient *c, ObDirection dir, gboolean hang);
/*! Set a client window to be above/below other clients.
- @layer < 0 indicates the client should be placed below other clients.
- = 0 indicates the client should be placed with other clients.
+ @layer < 0 indicates the client should be placed below other clients.
+ = 0 indicates the client should be placed with other clients.
> 0 indicates the client should be placed above other clients.
*/
void client_set_layer(ObClient *self, gint layer);
-/*! Set a client window to have decorations or not */
-void client_set_undecorated(ObClient *self, gboolean undecorated);
-
guint client_monitor(ObClient *self);
-void client_update_sm_client_id(ObClient *self);
-
ObClient* client_under_pointer();
gboolean client_has_group_siblings(ObClient *self);
-gboolean client_has_application_group_siblings(ObClient *self);
-
#endif