X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=openbox%2Fclient.h;h=30d40510f509cf83057a6197f2ebadc3009294fa;hb=f03eef279530d271640a6e146dc4d651921af3dd;hp=5fb26262a9f2b8e29b5b17ada0b4f21c22acfbc1;hpb=1e4215c5c63c53c199a3a5a177607de308c8a3f1;p=chaz%2Fopenbox diff --git a/openbox/client.h b/openbox/client.h index 5fb26262..30d40510 100644 --- a/openbox/client.h +++ b/openbox/client.h @@ -289,13 +289,17 @@ struct _ObClient /*! The number of icons in icons */ guint nicons; - /* Where the window should iconify to/from */ + /*! Where the window should iconify to/from */ Rect icon_geometry; + /*! The time when the client last received user interaction */ guint32 user_time; + /*! A separate window for the client to update it's user_time on */ + Window user_time_window; }; -extern GList *client_list; +extern GList *client_list; +extern GHashTable *client_user_time_window_map; void client_startup(gboolean reconfig); void client_shutdown(gboolean reconfig); @@ -308,19 +312,24 @@ typedef void (*ObClientCallback)(ObClient *client, gpointer data); void client_add_destructor(ObClientCallback func, gpointer data); void client_remove_destructor(ObClientCallback func); -/*! Get notified when the client changes desktop */ -void client_add_desktop_notify(ObClientCallback func, gpointer data); -void client_remove_desktop_notify(ObClientCallback func); - /*! Manages all existing windows */ void client_manage_all(); -/*! Manages a given window */ +/*! Manages a given window +*/ void client_manage(Window win); /*! Unmanages all managed windows */ void client_unmanage_all(); /*! Unmanages a given client */ void client_unmanage(ObClient *client); +/*! This manages a window only so far as is needed to get it's decorations. + This is used when you want to determine a window's decorations before it + is mapped. Call client_fake_unmanage() with the returned client when you + are done with it. */ +ObClient *client_fake_manage(Window win); +/*! Free the stuff created by client_fake_manage() */ +void client_fake_unmanage(ObClient *self); + /*! Sets the client list on the root window from the client_list */ void client_set_list(); @@ -338,12 +347,23 @@ gboolean client_normal(ObClient *self); (utilty, menu, etc) */ gboolean client_helper(ObClient *self); +/*! Return if the client is a type which should be given focus from mouse + presses on the *client* window. This doesn't affect clicking on the + decorations. This doesn't count for focus cycling, different rules apply to + that. */ +gboolean client_mouse_focusable(ObClient *self); + +/*! Return if the client is a type which should be given focus from the + mouse entering the window. This doesn't count for focus cycling, different + rules apply to that. */ +gboolean client_enter_focusable(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, +void client_convert_gravity(ObClient *self, gint gravity, gint *x, gint *y, gint w, gint h); #define client_move(self, x, y) \ @@ -453,6 +473,9 @@ void client_maximize(ObClient *self, gboolean max, gint dir); */ void client_shade(ObClient *self, gboolean shade); +/*! Set a client window to have decorations or not */ +void client_set_undecorated(ObClient *self, gboolean undecorated); + /*! Hilite the window to make the user notice it */ void client_hilite(ObClient *self, gboolean hilite); @@ -522,7 +545,7 @@ void client_activate(ObClient *self, gboolean here, gboolean user); /*! Bring all of its helper windows to its desktop. These are the utility and stuff windows. */ -void client_bring_helper_windows(ObClient *client); +void client_bring_helper_windows(ObClient *self); /*! Calculates the stacking layer for the client window */ void client_calc_layer(ObClient *self); @@ -575,6 +598,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 user time window */ +void client_update_user_time_window(ObClient *self); /*! Updates the window's icon geometry (where to iconify to/from) */ void client_update_icon_geometry(ObClient *self); @@ -584,8 +609,8 @@ void client_update_icon_geometry(ObClient *self); */ void client_setup_decor_and_functions(ObClient *self); -/*! Retrieves the window's type and sets ObClient->type */ -void client_get_type(ObClient *self); +/*! Sets the window's type and transient flag */ +void client_get_type_and_transientness(ObClient *self); const ObClientIcon *client_icon(ObClient *self, gint w, gint h); @@ -646,15 +671,12 @@ ObClient *client_search_transient(ObClient *self, ObClient *search); gint client_directional_edge_search(ObClient *c, ObDirection dir, gboolean hang); /*! Set a client window to be above/below other clients. - @layer < 0 indicates the client should be placed below other clients.
- = 0 indicates the client should be placed with other clients.
+ @layer < 0 indicates the client should be placed below other clients.
+ = 0 indicates the client should be placed with other clients.
> 0 indicates the client should be placed above other clients. */ void client_set_layer(ObClient *self, gint layer); -/*! Set a client window to have decorations or not */ -void client_set_undecorated(ObClient *self, gboolean undecorated); - guint client_monitor(ObClient *self); ObClient* client_under_pointer();