]> Dogcows Code - chaz/openbox/blobdiff - openbox/client.h
redo how a window checks if it can activate.
[chaz/openbox] / openbox / client.h
index b046e665d9314d553a30b23e75b336092695c901..ae60181c8b3f6113e6a2a453bc2dfef9b394f774 100644 (file)
@@ -300,10 +300,17 @@ 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);
 
-void client_add_destructor(ObClientDestructor func, gpointer data);
-void client_remove_destructor(ObClientDestructor func);
+/* Callback functions */
+
+/*! Get notified when the client is unmanaged */
+void client_add_destructor(ObClientCallback func, gpointer data);
+void client_remove_destructor(ObClientCallback func);
+
+/*! Get notified when the client changes desktop */
+void client_add_desktop_notify(ObClientCallback func, gpointer data);
+void client_remove_desktop_notify(ObClientCallback func);
 
 /*! Manages all existing windows */
 void client_manage_all();
@@ -327,10 +334,9 @@ 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);
 
 /* Returns if the window is focused */
 gboolean client_focused(ObClient *self);
@@ -458,8 +464,13 @@ 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. */
-void client_set_desktop(ObClient *self, guint target, gboolean donthide);
+         desktop has been changed. Generally this should be FALSE.
+  @param focus_nonintrusive If TRUE, the window will not be moved in the
+         focus order at all. Do this when moving windows to a desktop in
+         the "background" or something. It can be used to make a window share
+         multiple desktops. Generally this should be FALSE. */
+void client_set_desktop(ObClient *self, guint target,
+                        gboolean donthide, gboolean focus_nonintrusive);
 
 /*! Show the client if it should be shown. */
 void client_show(ObClient *self);
@@ -513,6 +524,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);
 
@@ -650,6 +665,8 @@ ObClient* client_under_pointer();
 
 gboolean client_has_group_siblings(ObClient *self);
 
-gboolean client_has_application_group_siblings(ObClient *self);
+/*! Returns if a client has an group siblings which are main application
+  windows (not helper or non-normal windows) */
+gboolean client_has_non_helper_group_siblings(ObClient *self);
 
 #endif
This page took 0.021435 seconds and 4 git commands to generate.