diff options
Diffstat (limited to 'openbox/client.h')
| -rw-r--r-- | openbox/client.h | 112 |
1 files changed, 59 insertions, 53 deletions
diff --git a/openbox/client.h b/openbox/client.h index 65376719..b13cf06c 100644 --- a/openbox/client.h +++ b/openbox/client.h @@ -13,15 +13,20 @@ struct Frame; struct Group; +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) /*! Holds an icon in ARGB format */ -typedef struct Icon { - int width, height; +struct _ObClientIcon +{ + gint width; + gint height; RrPixel32 *data; -} Icon; +}; /*! Possible window types */ typedef enum { @@ -61,7 +66,8 @@ typedef enum { Decor_Close = 1 << 8 /*!< Display a close button */ } Decoration; -typedef struct Client { +struct _ObClient +{ ObWindow obwin; Window window; @@ -83,7 +89,7 @@ typedef struct Client { members of its Group, and is not a valid pointer to be followed in this case. */ - struct Client *transient_for; + ObClient *transient_for; /*! The clients which are transients (children) of this client */ GSList *transients; /*! The desktop on which the window resides (0xffffffff for all @@ -235,10 +241,10 @@ typedef struct Client { int functions; /*! Icons for the client as specified on the client window */ - Icon *icons; + ObClientIcon *icons; /*! The number of icons in icons */ int nicons; -} Client; +}; extern GList *client_list; @@ -252,7 +258,7 @@ void client_manage(Window win); /*! Unmanages all managed windows */ void client_unmanage_all(); /*! Unmanages a given client */ -void client_unmanage(Client *client); +void client_unmanage(ObClient *client); /*! Sets the client list on the root window from the client_list */ void client_set_list(); @@ -260,15 +266,15 @@ void client_set_list(); /*! Determines if the client should be shown or hidden currently. @return TRUE if it should be visible; otherwise, FALSE. */ -gboolean client_should_show(Client *self); +gboolean client_should_show(ObClient *self); /*! Returns if the window should be treated as a normal window. Some windows (desktops, docks, splash screens) have special rules applied to them in a number of places regarding focus or user interaction. */ -gboolean client_normal(Client *self); +gboolean client_normal(ObClient *self); /* Returns if the window is focused */ -gboolean client_focused(Client *self); +gboolean client_focused(ObClient *self); /*! Move and/or resize the window. This also maintains things like the client's minsize, and size increments. @@ -285,16 +291,16 @@ gboolean client_focused(Client *self); interactive move/resize, and then be TRUE for the last call only. */ -void client_configure(Client *self, ObCorner anchor, +void client_configure(ObClient *self, ObCorner anchor, int x, int y, int w, int h, gboolean user, gboolean final); -void client_reconfigure(Client *self); +void client_reconfigure(ObClient *self); /*! Moves a client so that it is on screen if it is entirely out of the viewable screen. */ -void client_move_onscreen(Client *self); +void client_move_onscreen(ObClient *self); /*! Fullscreen's or unfullscreen's the client window @param fs true if the window should be made fullscreen; false if it should @@ -304,7 +310,7 @@ void client_move_onscreen(Client *self); new window that is set to fullscreen. This has no effect when restoring a window from fullscreen. */ -void client_fullscreen(Client *self, gboolean fs, gboolean savearea); +void client_fullscreen(ObClient *self, gboolean fs, gboolean savearea); /*! Iconifies or uniconifies the client window @param iconic true if the window should be iconified; false if it should be @@ -313,7 +319,7 @@ void client_fullscreen(Client *self, gboolean fs, gboolean savearea); be uniconified to the current viewable desktop (true) or to its previous desktop (false) */ -void client_iconify(Client *self, gboolean iconic, gboolean curdesk); +void client_iconify(ObClient *self, gboolean iconic, gboolean curdesk); /*! Maximize or unmaximize the client window @param max true if the window should be maximized; false if it should be @@ -324,35 +330,35 @@ void client_iconify(Client *self, gboolean iconic, gboolean curdesk); new window that is set to fullscreen. This has no effect when unmaximizing a window. */ -void client_maximize(Client *self, gboolean max, int dir, +void client_maximize(ObClient *self, gboolean max, int dir, gboolean savearea); /*! Shades or unshades the client window @param shade true if the window should be shaded; false if it should be unshaded. */ -void client_shade(Client *self, gboolean shade); +void client_shade(ObClient *self, gboolean shade); /*! Request the client to close its window */ -void client_close(Client *self); +void client_close(ObClient *self); /*! Kill the client off violently */ -void client_kill(Client *self); +void client_kill(ObClient *self); /*! Sends the window to the specified desktop @param donthide If TRUE, the window will not be shown/hidden after its desktop has been changed. Generally this should be FALSE. */ -void client_set_desktop(Client *self, guint target, gboolean donthide); +void client_set_desktop(ObClient *self, guint target, gboolean donthide); /*! Validate client, by making sure no Destroy or Unmap events exist in the event queue for the window. @return true if the client is valid; false if the client has already been unmapped/destroyed, and so is invalid. */ -gboolean client_validate(Client *self); +gboolean client_validate(ObClient *self); /*! Sets the wm_state to the specified value */ -void client_set_wm_state(Client *self, long state); +void client_set_wm_state(ObClient *self, long state); /*! Adjusts the window's net_state This should not be called as part of the window mapping process! It is for @@ -360,94 +366,94 @@ void client_set_wm_state(Client *self, long state); client_apply_startup_state is used to do the same things during the mapping process. */ -void client_set_state(Client *self, Atom action, long data1, long data2); +void client_set_state(ObClient *self, Atom action, long data1, long data2); -/* Given a Client, find the client that focus would actually be sent to if - you wanted to give focus to the specified Client. Will return the same - Client passed to it or another Client if appropriate. */ -Client *client_focus_target(Client *self); +/* Given a ObClient, find the client that focus would actually be sent to if + you wanted to give focus to the specified ObClient. Will return the same + ObClient passed to it or another ObClient if appropriate. */ +ObClient *client_focus_target(ObClient *self); /*! Returns what client_focus would return if passed the same client, but without focusing it or modifying the focus order lists. */ -gboolean client_can_focus(Client *self); +gboolean client_can_focus(ObClient *self); /*! Attempt to focus the client window */ -gboolean client_focus(Client *self); +gboolean client_focus(ObClient *self); /*! Remove focus from the client window */ -void client_unfocus(Client *self); +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. */ -void client_activate(Client *self); +void client_activate(ObClient *self); /*! Calculates the stacking layer for the client window */ -void client_calc_layer(Client *self); +void client_calc_layer(ObClient *self); /*! Updates the window's transient status, and any parents of it */ -void client_update_transient_for(Client *self); +void client_update_transient_for(ObClient *self); /*! Update the protocols that the window supports and adjusts things if they change */ -void client_update_protocols(Client *self); +void client_update_protocols(ObClient *self); /*! Updates the WMNormalHints and adjusts things if they change */ -void client_update_normal_hints(Client *self); +void client_update_normal_hints(ObClient *self); /*! Updates the WMHints and adjusts things if they change @param initstate Whether to read the initial_state property from the WMHints. This should only be used during the mapping process. */ -void client_update_wmhints(Client *self); +void client_update_wmhints(ObClient *self); /*! Updates the window's title and icon title */ -void client_update_title(Client *self); +void client_update_title(ObClient *self); /*! Updates the window's application name and class */ -void client_update_class(Client *self); +void client_update_class(ObClient *self); /*! Updates the strut for the client */ -void client_update_strut(Client *self); +void client_update_strut(ObClient *self); /*! Updates the window's icons */ -void client_update_icons(Client *self); +void client_update_icons(ObClient *self); /*! Set up what decor should be shown on the window and what functions should - be allowed (Client::decorations and Client::functions). + be allowed (ObClient::decorations and ObClient::functions). This also updates the NET_WM_ALLOWED_ACTIONS hint. */ -void client_setup_decor_and_functions(Client *self); +void client_setup_decor_and_functions(ObClient *self); -/*! Retrieves the window's type and sets Client->type */ -void client_get_type(Client *self); +/*! Retrieves the window's type and sets ObClient->type */ +void client_get_type(ObClient *self); -Icon *client_icon(Client *self, int w, int h); +ObClientIcon *client_icon(ObClient *self, int w, int h); /*! Searches a client's transients for a focused window. The function does not check for the passed client, only for its transients. If no focused transient is found, NULL is returned. */ -Client *client_search_focus_tree(Client *self); +ObClient *client_search_focus_tree(ObClient *self); /*! Searches a client's transient tree for a focused window. The function searches up the tree and down other branches as well as the passed client's. If no focused client is found, NULL is returned. */ -Client *client_search_focus_tree_full(Client *self); +ObClient *client_search_focus_tree_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. */ -Client *client_search_modal_child(Client *self); +ObClient *client_search_modal_child(ObClient *self); -Client *client_search_top_transient(Client *self); +ObClient *client_search_top_transient(ObClient *self); /*! Return the "closest" client in the given direction */ -Client *client_find_directional(Client *c, ObDirection dir); +ObClient *client_find_directional(ObClient *c, ObDirection dir); /*! Set a client window to be above/below other clients. @layer < 0 indicates the client should be placed below other clients.<br> = 0 indicates the client should be placed with other clients.<br> > 0 indicates the client should be placed above other clients. */ -void client_set_layer(Client *self, int layer); +void client_set_layer(ObClient *self, int layer); -guint client_monitor(Client *self); +guint client_monitor(ObClient *self); #endif |
