]> Dogcows Code - chaz/openbox/blobdiff - openbox/client.h
animate iconify/reestore. yeah.
[chaz/openbox] / openbox / client.h
index 90c6c059d2e82f35856a5c4d04aa72d003e59965..afdeac501a34a01717cfdfb3874c04f5a42aff46 100644 (file)
@@ -116,6 +116,8 @@ struct _ObClient
     gchar *title;
     /*! Window title when iconified */
     gchar *icon_title;
+    /*! Hostname of machine running the client */
+    gchar *client_machine;
 
     /*! The application that created the window */
     gchar *name;
@@ -191,6 +193,9 @@ struct _ObClient
 
     /*! Window decoration and functionality hints */
     ObMwmHints mwmhints;
+
+    /*! The client's specified colormap */
+    Colormap colormap;
   
     /*! Where to place the decorated window in relation to the undecorated
       window */
@@ -214,6 +219,15 @@ struct _ObClient
     /*! Notify the window when it receives focus? */
     gboolean focus_notify;
 
+#ifdef SYNC
+    /*! The client wants to sync during resizes */
+    gboolean sync_request;
+    /*! The XSync counter used for synchronizing during resizes */
+    guint32 sync_counter;
+    /*! The value we're waiting for the counter to reach */
+    gulong sync_counter_value;
+#endif
+
     /*! The window uses shape extension to be non-rectangular? */
     gboolean shaped;
 
@@ -244,6 +258,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;
@@ -270,6 +287,9 @@ struct _ObClient
     /*! The number of icons in icons */
     guint nicons;
 
+    /* Where the window should iconify to/from */
+    Rect icon_geometry;
+
     guint32 user_time;
 };
 
@@ -331,28 +351,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.
@@ -367,14 +394,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.
@@ -389,8 +414,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);
 
@@ -541,6 +565,12 @@ void client_update_transient_for(ObClient *self);
 /*! Update the protocols that the window supports and adjusts things if they
   change */
 void client_update_protocols(ObClient *self);
+#ifdef SYNC
+/*! Updates the window's sync request counter for resizes */
+void client_update_sync_request_counter(ObClient *self);
+#endif
+/*! Updates the window's colormap */
+void client_update_colormap(ObClient *self, Colormap colormap);
 /*! Updates the WMNormalHints and adjusts things if they change */
 void client_update_normal_hints(ObClient *self);
 
@@ -560,6 +590,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).
@@ -618,9 +650,6 @@ ObClient *client_search_parent(ObClient *self, ObClient *search);
   NULL is returned if the given search is not a transient of the client. */
 ObClient *client_search_transient(ObClient *self, ObClient *search);
 
-/*! Return the "closest" client in the given direction */
-ObClient *client_find_directional(ObClient *c, ObDirection dir);
-
 /*! Return the closest edge in the given direction */
 gint client_directional_edge_search(ObClient *c, ObDirection dir, gboolean hang);
 
@@ -642,4 +671,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.030029 seconds and 4 git commands to generate.