]> Dogcows Code - chaz/openbox/blobdiff - openbox/client.h
updated japanese translation, ui visible strings only
[chaz/openbox] / openbox / client.h
index 3d81b270cc2130f3c6279a02934cf9a1ca8a6e7a..98f9e6e41afd9441537c3daf5a5c1430b868fed8 100644 (file)
@@ -36,10 +36,6 @@ struct _ObSessionState;
 typedef struct _ObClient      ObClient;
 typedef struct _ObClientIcon  ObClientIcon;
 
-/* The value in client.transient_for indicating it is a transient for its
-   group instead of for a single window */
-#define OB_TRAN_GROUP ((void*)~0l)
-
 /*! Holds an icon in ARGB format */
 struct _ObClientIcon
 {
@@ -93,16 +89,13 @@ struct _ObClient
     /*! Saved session data to apply to this client */
     struct _ObSessionState *session;
 
-    /*! Whether or not the client is a transient window. This is guaranteed to 
-      be TRUE if transient_for != NULL, but not guaranteed to be FALSE if
-      transient_for == NULL. */
+    /*! Whether or not the client is a transient window. It may or may not
+      have parents when this is true. */
     gboolean transient;
-    /*! The client which this client is a transient (child) for.
-      A value of TRAN_GROUP signifies that the window is a transient for all
-      members of its ObGroup, and is not a valid pointer to be followed in this
-      case.
-     */
-    ObClient *transient_for;
+    /*! Whether or not the client is transient for its group */
+    gboolean transient_for_group;
+    /*! The client which are parents of this client */
+    GSList *parents;
     /*! The clients which are transients (children) of this client */
     GSList *transients;
     /*! The desktop on which the window resides (0xffffffff for all
@@ -386,13 +379,11 @@ void client_convert_gravity_resize(ObClient *self, gint gravity,
                                    gint w, gint h);
 
 #define client_move(self, x, y) \
-  client_configure(self, x, y, self->area.width, self->area.height, \
-                   self->border_width, TRUE, TRUE)
+  client_configure(self, x, y, self->area.width, self->area.height, TRUE, TRUE)
 #define client_resize(self, w, h) \
-  client_configure(self, self->area.x, self->area.y, w, h, \
-                   self->border_width, 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, x, y, w, h, self->border_width, TRUE, TRUE)
+  client_configure(self, x, y, w, h, TRUE, TRUE)
 
 /*! Figure out where a window will end up and what size it will be if you
   told it to move/resize to these coordinates.
@@ -433,7 +424,7 @@ void client_try_configure(ObClient *self, gint *x, gint *y, gint *w, gint *h,
   @param force_reply Send a ConfigureNotify to the client regardless of if
                      the position changed.
 */
-void client_configure(ObClient *self, gint x, gint y, gint w, gint h, gint b,
+void client_configure(ObClient *self, gint x, gint y, gint w, gint h,
                       gboolean user, gboolean final);
 
 void client_reconfigure(ObClient *self);
@@ -604,14 +595,21 @@ 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).
   This also updates the NET_WM_ALLOWED_ACTIONS hint.
+  @param reconfig When TRUE, the window will be reconfigured to show the
+         changes
 */
-void client_setup_decor_and_functions(ObClient *self);
+void client_setup_decor_and_functions(ObClient *self, gboolean reconfig);
 
 /*! Sets the window's type and transient flag */
 void client_get_type_and_transientness(ObClient *self);
 
 const ObClientIcon *client_icon(ObClient *self, gint w, gint h);
 
+/*! Return TRUE if the client is transient for some other window. Return
+  FALSE if it's not transient or there is no window for it to be
+  transient for */
+gboolean client_has_parent(ObClient *self);
+
 /*! Searches a client's direct parents for a focused window. The function does
   not check for the passed client, only for *ONE LEVEL* of its parents.
   If no focused parentt is found, NULL is returned.
@@ -630,6 +628,11 @@ ObClient *client_search_focus_tree(ObClient *self);
 */
 ObClient *client_search_focus_tree_full(ObClient *self);
 
+/*! Searches a client's group and each member's transients for a focused
+  window.  This doesn't go up the window's transient tree at all. If no
+  focused client is found, NULL is returned. */
+ObClient *client_search_focus_group_full(ObClient *self);
+
 /*! Return a modal child of the client window that can be focused.
     @return A modal child of the client window that can be focused, or 0 if
             none was found.
@@ -649,10 +652,15 @@ GSList *client_search_all_top_parents(ObClient *self);
 */
 GSList *client_search_all_top_parents_layer(ObClient *self);
 
+/*! Returns the client's parent when it is transient for a direct window
+  rather than a group. If it has no parents, or is transient for the
+  group, this returns null */
+ObClient *client_direct_parent(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_normal_parent(ObClient *self);
+ObClient *client_search_top_direct_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);
This page took 0.022387 seconds and 4 git commands to generate.