]> Dogcows Code - chaz/openbox/blobdiff - openbox/client.h
Merge branch 'master' into chaz
[chaz/openbox] / openbox / client.h
index 8126abe2d2fa76bb9c701d7fb09ff38b6c871b0b..a946f274bc906a19cab39ca66dfa7f8251eb3de3 100644 (file)
@@ -25,7 +25,7 @@
 #include "geom.h"
 #include "stacking.h"
 #include "window.h"
-#include "render/color.h"
+#include "obrender/color.h"
 
 #include <glib.h>
 #include <X11/Xlib.h>
@@ -73,6 +73,7 @@ struct _ObClient
 {
     ObWindow obwin;
     Window  window;
+    gboolean managed;
 
     /*! If this client is managing an ObPrompt window, then this is set to the
       prompt */
@@ -126,6 +127,10 @@ struct _ObClient
     gchar *class;
     /*! The specified role of the window, used for identification */
     gchar *role;
+    /*! The application that created the window's group. */
+    gchar *group_name;
+    /*! The class of the window's group, can used for grouping */
+    gchar *group_class;
     /*! The session client id for the window. *This can be NULL!* */
     gchar *sm_client_id;
 
@@ -146,6 +151,9 @@ struct _ObClient
     Rect pre_max_area;
     /*! Position and size of the window prior to being fullscreened */
     Rect pre_fullscreen_area;
+    /*! Remember if the window was maximized before going fullscreen */
+    gboolean pre_fullscreen_max_horz,
+             pre_fullscreen_max_vert;
 
     /*! The window's strut
       The strut defines areas of the screen that are marked off-bounds for
@@ -260,6 +268,8 @@ struct _ObClient
     gboolean max_vert;
     /*! The window is maximized to fill the screen horizontally */
     gboolean max_horz;
+    /*! The window is semi-transparent */
+    guint8 opacity;
     /*! The window should not be displayed by pagers */
     gboolean skip_pager;
     /*! The window should not be displayed by taskbars */
@@ -322,6 +332,7 @@ typedef void (*ObClientCallback)(ObClient *client, gpointer data);
 /*! Get notified when the client is unmanaged */
 void client_add_destroy_notify(ObClientCallback func, gpointer data);
 void client_remove_destroy_notify(ObClientCallback func);
+void client_remove_destroy_notify_data(ObClientCallback func, gpointer data);
 
 /*! Manages a given window
   @param prompt This specifies an ObPrompt which is being managed.  It is
@@ -358,6 +369,10 @@ gboolean client_normal(ObClient *self);
   (utilty, menu, etc) */
 gboolean client_helper(ObClient *self);
 
+/*! Returns true if the window occupies space in the monitor conceptually, or
+  false if it does not and its presence should be ignored when possible. */
+gboolean client_occupies_space(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
@@ -486,6 +501,11 @@ void client_find_resize_directional(ObClient *self, ObDirection side,
 */
 void client_fullscreen(ObClient *self, gboolean fs);
 
+/*! Determine if the window, using the given client-area, would be considered
+  as an "oldschool fullscreen" window, that is, if it is filling a whole
+  monitor. */
+gboolean client_is_oldfullscreen(const ObClient *self, const Rect *area);
+
 /*! Iconifies or uniconifies the client window
   @param iconic true if the window should be iconified; false if it should be
                 restored.
@@ -530,6 +550,9 @@ void client_kill(ObClient *self);
 void client_set_desktop(ObClient *self, guint target, gboolean donthide,
                         gboolean dontraise);
 
+/*! Adjust the client opacity */
+void client_set_opacity(ObClient *self, guint8 opacity);
+
 /*! Show the client if it should be shown. Returns if the window is shown. */
 gboolean client_show(ObClient *self);
 
@@ -607,6 +630,8 @@ void client_update_sync_request_counter(ObClient *self);
 #endif
 /*! Updates the window's colormap */
 void client_update_colormap(ObClient *self, Colormap colormap);
+/*! Updates the requested opacity for the window from the client. */
+void client_update_opacity(ObClient *self);
 /*! Updates the WMNormalHints and adjusts things if they change */
 void client_update_normal_hints(ObClient *self);
 
@@ -648,6 +673,10 @@ RrImage* client_icon(ObClient *self);
   transient for */
 gboolean client_has_parent(ObClient *self);
 
+/*! Return TRUE if the client has some transient children, and FALSE otherwise.
+*/
+gboolean client_has_children(ObClient *self);
+
 /*! Searches a client's immediate parents for a focused window. The function
   does not check for the passed client, only for *ONE LEVEL* of its parents.
   If no focused parent is found, NULL is returned.
@@ -732,6 +761,11 @@ ObClient* client_under_pointer(void);
 
 gboolean client_has_group_siblings(ObClient *self);
 
+/*! Returns TRUE if the client has a transient child, a parent, or a
+  group member.  Returns FALSE otherwise.
+*/
+gboolean client_has_relative(ObClient *self);
+
 /*! Returns TRUE if the client is running on the same machine as Openbox */
 gboolean client_on_localhost(ObClient *self);
 
This page took 0.021717 seconds and 4 git commands to generate.