]> Dogcows Code - chaz/openbox/blobdiff - openbox/client.h
change the perapp settings "head" option to "monitor" i think its easier to understand.
[chaz/openbox] / openbox / client.h
index 69f5aa5fd65f0311cc0eadf673fb2ac22b447066..2863a98f5dde5a1d7059c506a74664303e8c631f 100644 (file)
@@ -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;
@@ -258,6 +260,9 @@ struct _ObClient
     /*! Demands attention flag */
     gboolean demands_attention;
 
+    /*! The urgent flag */
+    gboolean urgent;
+
     /*! The layer in which the window will be stacked, windows in lower layers
       are always below windows in higher layers. */
     ObStackingLayer layer;
@@ -284,33 +289,10 @@ struct _ObClient
     /*! The number of icons in icons */
     guint nicons;
 
-    guint32 user_time;
-};
-
-struct _ObAppSettings
-{
-    gchar *class;
-    gchar *name;
-    gchar *role;
-
-    Point position;
-    gboolean center_x;
-    gboolean center_y;
-    gboolean pos_given;
+    /* Where the window should iconify to/from */
+    Rect icon_geometry;
 
-    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;
+    guint32 user_time;
 };
 
 extern GList *client_list;
@@ -345,28 +327,35 @@ 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 focused */
 gboolean client_focused(ObClient *self);
 
+/*! Convery a position/size from a given gravity to the client's true gravity
+ */
+void client_convert_gravity(ObClient *client, gint gravity, gint *x, gint *y,
+                            gint w, gint h);
+
 #define client_move(self, x, y) \
-  client_configure(self, OB_CORNER_TOPLEFT, x, y, \
-                   self->area.width, self->area.height, \
+  client_configure(self, x, y, self->area.width, self->area.height, \
                    TRUE, TRUE)
 #define client_resize(self, w, h) \
-  client_configure(self, OB_CORNER_TOPLEFT, self->area.x, self->area.y, \
-                   w, h, TRUE, TRUE)
+  client_configure(self, self->area.x, self->area.y, w, h, TRUE, TRUE)
 #define client_move_resize(self, x, y, w, h) \
-  client_configure(self, OB_CORNER_TOPLEFT, x, y, w, h, TRUE, TRUE)
+  client_configure(self, x, y, w, h, TRUE, TRUE)
 
-#define client_configure(self, anchor, x, y, w, h, user, final) \
-  client_configure_full(self, anchor, x, y, w, h, user, final, FALSE)
+#define client_configure(self, x, y, w, h, user, final) \
+  client_configure_full(self, x, y, w, h, user, final, FALSE)
 
 /*! Figure out where a window will end up and what size it will be if you
   told it to move/resize to these coordinates.
 
   These values are what client_configure_full will give the window.
 
-  @param anchor The corner to keep in the same position when resizing.
   @param x The x coordiante of the new position for the client.
   @param y The y coordiante of the new position for the client.
   @param w The width component of the new size for the client.
@@ -381,14 +370,12 @@ gboolean client_focused(ObClient *self);
               program requested change. For program requested changes, the
               constraints are not checked.
 */
-void client_try_configure(ObClient *self, ObCorner anchor,
-                          gint *x, gint *y, gint *w, gint *h,
+void client_try_configure(ObClient *self, gint *x, gint *y, gint *w, gint *h,
                           gint *logicalw, gint *logicalh,
                           gboolean user);
 
 /*! Move and/or resize the window.
   This also maintains things like the client's minsize, and size increments.
-  @param anchor The corner to keep in the same position when resizing.
   @param x The x coordiante of the new position for the client.
   @param y The y coordiante of the new position for the client.
   @param w The width component of the new size for the client.
@@ -403,8 +390,7 @@ void client_try_configure(ObClient *self, ObCorner anchor,
   @param force_reply Send a ConfigureNotify to the client regardless of if
                      the position changed.
 */
-void client_configure_full(ObClient *self, ObCorner anchor,
-                           gint x, gint y, gint w, gint h,
+void client_configure_full(ObClient *self, gint x, gint y, gint w, gint h,
                            gboolean user, gboolean final,
                            gboolean force_reply);
 
@@ -572,6 +558,8 @@ 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 command used to run the program */
+void client_update_command(ObClient *self);
 /*! Updates the window's application name and class */
 void client_update_class(ObClient *self);
 /*! Updates the strut for the client */
@@ -580,6 +568,8 @@ void client_update_strut(ObClient *self);
 void client_update_icons(ObClient *self);
 /*! Updates the window's user time */
 void client_update_user_time(ObClient *self);
+/*! Updates the window's icon geometry (where to iconify to/from) */
+void client_update_icon_geometry(ObClient *self);
 
 /*! Set up what decor should be shown on the window and what functions should
   be allowed (ObClient::decorations and ObClient::functions).
@@ -622,10 +612,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);
@@ -659,4 +656,6 @@ ObClient* client_under_pointer();
 
 gboolean client_has_group_siblings(ObClient *self);
 
+gboolean client_has_application_group_siblings(ObClient *self);
+
 #endif
This page took 0.02657 seconds and 4 git commands to generate.