X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;ds=sidebyside;f=openbox%2Fclient.h;h=4421f8fe3e4f4af048076b0699432ddb70f9dbb8;hb=742106511fbaca5ebef385a9c60c427e8dd7a6dd;hp=ecfb17d1faec124404ae21b86416231a080a256f;hpb=4736c257a54409bf3b0ef0d803da650c71684dee;p=chaz%2Fopenbox diff --git a/openbox/client.h b/openbox/client.h index ecfb17d1..4421f8fe 100644 --- a/openbox/client.h +++ b/openbox/client.h @@ -10,15 +10,15 @@ #include #include -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);