]> Dogcows Code - chaz/openbox/blobdiff - openbox/client.h
playing a bit with grabs
[chaz/openbox] / openbox / client.h
index a01c2b0f6083aad80c84105a683f9e23f9cd47ff..69f5aa5fd65f0311cc0eadf673fb2ac22b447066 100644 (file)
@@ -2,7 +2,7 @@
 
    client.h for the Openbox window manager
    Copyright (c) 2006        Mikael Magnusson
-   Copyright (c) 2003        Ben Jansens
+   Copyright (c) 2003-2007   Dana Jansens
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -114,11 +114,10 @@ struct _ObClient
 
     /*! Normal window title */
     gchar *title;
-    /*! The count for the title. When another window with the same title
-      exists, a count will be appended to it. */
-    guint title_count;
     /*! Window title when iconified */
     gchar *icon_title;
+    /*! Hostname of machine running the client */
+    gchar *client_machine;
 
     /*! The application that created the window */
     gchar *name;
@@ -139,6 +138,9 @@ struct _ObClient
     */
     Rect area;
 
+    /*! Position of the client window relative to the root window */
+    Point root_pos;
+
     /*! Position and size of the window prior to being maximized */
     Rect pre_max_area;
     /*! Position and size of the window prior to being fullscreened */
@@ -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;
 
@@ -347,6 +361,31 @@ gboolean client_focused(ObClient *self);
 #define client_configure(self, anchor, x, y, w, h, user, final) \
   client_configure_full(self, anchor, 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.
+  @param h The height component of the new size for the client.
+  @param logicalw Returns the width component of the new logical width.
+                  This value is only returned when the new w or h calculated
+                  differ from the ones passed in.
+  @param logicalh Returns the height component of the new logical height.
+                  This value is only returned when the new w or h calculated
+                  differ from the ones passed in.
+  @param user Specifies whether this is a user-requested change or a
+              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,
+                          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.
@@ -436,6 +475,12 @@ void client_kill(ObClient *self);
          desktop has been changed. Generally this should be FALSE. */
 void client_set_desktop(ObClient *self, guint target, gboolean donthide);
 
+/*! Show the client if it should be shown. */
+void client_show(ObClient *self);
+
+/*! Show the client if it should be shown. */
+void client_hide(ObClient *self);
+
 /*! Show the client if it should be shown, and hide it if it should be
   hidden. This is for example, when switching desktops.
 */
@@ -473,18 +518,14 @@ gboolean client_can_focus(ObClient *self);
 */
 gboolean client_focus(ObClient *self);
 
-/*! Remove focus from the client window */
-void client_unfocus(ObClient *self);
-
 /*! Activates the client for use, focusing, uniconifying it, etc. To be used
   when the user deliberately selects a window for use.
   @param here If true, then the client is brought to the current desktop;
               otherwise, the desktop is changed to where the client lives.
   @param user If true, then a user action is what requested the activation;
               otherwise, it means an application requested it on its own
-  @param timestamp The time at which the activate was requested.
 */
-void client_activate(ObClient *self, gboolean here, gboolean user, Time time);
+void client_activate(ObClient *self, gboolean here, gboolean user);
 
 /*! Calculates the stacking layer for the client window */
 void client_calc_layer(ObClient *self);
@@ -514,6 +555,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);
 
@@ -532,7 +579,7 @@ void client_update_strut(ObClient *self);
 /*! Updates the window's icons */
 void client_update_icons(ObClient *self);
 /*! Updates the window's user time */
-void client_update_user_time(ObClient *self, gboolean new_event);
+void client_update_user_time(ObClient *self);
 
 /*! Set up what decor should be shown on the window and what functions should
   be allowed (ObClient::decorations and ObClient::functions).
@@ -591,9 +638,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);
 
This page took 0.02543 seconds and 4 git commands to generate.