]> Dogcows Code - chaz/openbox/blobdiff - openbox/client.h
hover theme elements for window titlebar buttons
[chaz/openbox] / openbox / client.h
index ecfb17d1faec124404ae21b86416231a080a256f..4421f8fe3e4f4af048076b0699432ddb70f9dbb8 100644 (file)
 #include <glib.h>
 #include <X11/Xlib.h>
 
-struct Frame;
-struct Group;
+struct _ObFrame;
+struct _ObGroup;
 
 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 TRAN_GROUP ((void*)~0l)
+#define OB_TRAN_GROUP ((void*)~0l)
 
 /*! Holds an icon in ARGB format */
 struct _ObClientIcon
@@ -53,21 +53,6 @@ typedef enum
     OB_CLIENT_FUNC_CLOSE      = 1 << 6  /*!< Allow to be closed */
 } ObFunctions;
 
-/*! The decorations the client window wants to be displayed on it */
-typedef enum {
-    Decor_Titlebar    = 1 << 0, /*!< Display a titlebar */
-    Decor_Handle      = 1 << 1, /*!< Display a handle (bottom) */
-    Decor_Border      = 1 << 2, /*!< Display a border */
-    Decor_Icon        = 1 << 3, /*!< Display the window's icon */
-    Decor_Iconify     = 1 << 4, /*!< Display an iconify button */
-    Decor_Maximize    = 1 << 5, /*!< Display a maximize button */
-    /*! Display a button to toggle the window's placement on
-      all desktops */
-    Decor_AllDesktops = 1 << 6,
-    Decor_Shade       = 1 << 7, /*!< Displays a shade button */
-    Decor_Close       = 1 << 8  /*!< Display a close button */
-} Decoration;
-
 struct _ObClient
 {
     ObWindow obwin;
@@ -75,20 +60,20 @@ struct _ObClient
     Window  window;
 
     /*! The window's decorations. NULL while the window is being managed! */
-    struct Frame *frame;
+    struct _ObFrame *frame;
 
     /*! The number of unmap events to ignore on the window */
     int ignore_unmaps;
 
     /*! The id of the group the window belongs to */
-    struct Group *group;
+    struct _ObGroup *group;
     /*! 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. */
     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 Group, and is not a valid pointer to be followed in this
+      members of its ObGroup, and is not a valid pointer to be followed in this
       case.
      */
     ObClient *transient_for;
@@ -223,18 +208,18 @@ struct _ObClient
 
     /*! The layer in which the window will be stacked, windows in lower layers
       are always below windows in higher layers. */
-    StackLayer layer;
+    ObStackingLayer layer;
 
-    /*! A bitmask of values in the Decoration enum
+    /*! A bitmask of values in the ObFrameDecorations enum
       The values in the variable are the decorations that the client wants to
       be displayed around it.
     */
     guint decorations;
 
-    /*! A bitmask of values in the Decoration enum.
-      Specifies the decorations that should NOT be displayed on the client.
+    /*! A user option. When this is set to FALSE the client will not ever
+      be decorated.
     */
-    guint disabled_decorations;
+    gboolean decorate;
 
     /*! A bitmask of values in the ObFunctions enum
       The values in the variable specify the ways in which the user is allowed
@@ -299,10 +284,28 @@ void client_configure(ObClient *self, ObCorner anchor,
 
 void client_reconfigure(ObClient *self);
 
+/*! Finds coordinates to keep a client on the screen.
+  @param self The client
+  @param x The x coord of the client, may be changed.
+  @param y The y coord of the client, may be changed.
+  @param w The width of the client.
+  @param w The height of the client.
+  @param rude Be rude about it. If false, it is only moved if it is entirely
+              not visible. If true, then make sure the window is inside the
+              struts if possible.
+  @return true if the client was moved to be on-screen; false if not.
+*/
+gboolean client_find_onscreen(ObClient *self, int *x, int *y, int w, int h,
+                              gboolean rude);
+
 /*! Moves a client so that it is on screen if it is entirely out of the
   viewable screen.
+  @param self The client to move
+  @param rude Be rude about it. If false, it is only moved if it is entirely
+              not visible. If true, then make sure the window is inside the
+              struts if possible.
 */
-void client_move_onscreen(ObClient *self);
+void client_move_onscreen(ObClient *self, gboolean rude);
 
 /*! Fullscreen's or unfullscreen's the client window
   @param fs true if the window should be made fullscreen; false if it should
@@ -446,6 +449,8 @@ ObClient *client_search_modal_child(ObClient *self);
 
 ObClient *client_search_top_transient(ObClient *self);
 
+ObClient *client_search_transient(ObClient *self, ObClient *search);
+
 /*! Return the "closest" client in the given direction */
 ObClient *client_find_directional(ObClient *c, ObDirection dir);
 
This page took 0.025965 seconds and 4 git commands to generate.