X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=openbox%2Fclient.h;h=a01c2b0f6083aad80c84105a683f9e23f9cd47ff;hb=53109b7592500b71f8c670ea58b0182193ba9a71;hp=e2193e98e2ccd865ee0a14b1785d036e8e1c0ae1;hpb=de1559a09497ae4ead44a6e70b556123a5bab35c;p=chaz%2Fopenbox diff --git a/openbox/client.h b/openbox/client.h index e2193e98..a01c2b0f 100644 --- a/openbox/client.h +++ b/openbox/client.h @@ -1,6 +1,7 @@ /* -*- indent-tabs-mode: nil; tab-width: 4; c-basic-offset: 4; -*- client.h for the Openbox window manager + Copyright (c) 2006 Mikael Magnusson Copyright (c) 2003 Ben Jansens This program is free software; you can redistribute it and/or modify @@ -210,8 +211,6 @@ struct _ObClient /*! Can the window receive input focus? */ gboolean can_focus; - /*! Urgency flag */ - gboolean urgent; /*! Notify the window when it receives focus? */ gboolean focus_notify; @@ -242,6 +241,8 @@ struct _ObClient /*! The window should be underneath other windows of the same type. above takes priority over below. */ gboolean below; + /*! Demands attention flag */ + gboolean demands_attention; /*! The layer in which the window will be stacked, windows in lower layers are always below windows in higher layers. */ @@ -268,14 +269,15 @@ struct _ObClient ObClientIcon *icons; /*! The number of icons in icons */ guint nicons; + + guint32 user_time; }; struct _ObAppSettings { + gchar *class; gchar *name; - gboolean decor; - gboolean shade; - gboolean focus; + gchar *role; Point position; gboolean center_x; @@ -283,9 +285,18 @@ struct _ObAppSettings gboolean pos_given; guint desktop; - guint head; - - guint layer; + gint shade; + gint decor; + gint focus; + gint head; + gint iconic; + gint skip_pager; + gint skip_taskbar; + gint max_horz; + gint max_vert; + gint fullscreen; + + gint layer; }; extern GList *client_list; @@ -386,12 +397,8 @@ 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 be returned to normal state. - @param savearea true to have the client's current size and position saved; - otherwise, they are not. You should not save when mapping a - new window that is set to fullscreen. This has no effect - when restoring a window from fullscreen. */ -void client_fullscreen(ObClient *self, gboolean fs, gboolean savearea); +void client_fullscreen(ObClient *self, gboolean fs); /*! Iconifies or uniconifies the client window @param iconic true if the window should be iconified; false if it should be @@ -406,13 +413,8 @@ void client_iconify(ObClient *self, gboolean iconic, gboolean curdesk); @param max true if the window should be maximized; false if it should be returned to normal size. @param dir 0 to set both horz and vert, 1 to set horz, 2 to set vert. - @param savearea true to have the client's current size and position saved; - otherwise, they are not. You should not save when mapping a - new window that is set to fullscreen. This has no effect - when unmaximizing a window. */ -void client_maximize(ObClient *self, gboolean max, gint dir, - gboolean savearea); +void client_maximize(ObClient *self, gboolean max, gint dir); /*! Shades or unshades the client window @param shade true if the window should be shaded; false if it should be @@ -420,6 +422,9 @@ void client_maximize(ObClient *self, gboolean max, gint dir, */ void client_shade(ObClient *self, gboolean shade); +/*! Hilite the window to make the user notice it */ +void client_hilite(ObClient *self, gboolean hilite); + /*! Request the client to close its window */ void client_close(ObClient *self); @@ -431,6 +436,11 @@ 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, and hide it if it should be + hidden. This is for example, when switching desktops. +*/ +void client_showhide(ObClient *self); + /*! 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 @@ -458,7 +468,9 @@ ObClient *client_focus_target(ObClient *self); without focusing it or modifying the focus order lists. */ gboolean client_can_focus(ObClient *self); -/*! Attempt to focus the client window */ +/*! Attempt to focus the client window + NOTE: You should validate the client before calling this !! (client_validate) +*/ gboolean client_focus(ObClient *self); /*! Remove focus from the client window */ @@ -468,8 +480,11 @@ void client_unfocus(ObClient *self); 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); +void client_activate(ObClient *self, gboolean here, gboolean user, Time time); /*! Calculates the stacking layer for the client window */ void client_calc_layer(ObClient *self); @@ -516,6 +531,8 @@ void client_update_class(ObClient *self); 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); /*! Set up what decor should be shown on the window and what functions should be allowed (ObClient::decorations and ObClient::functions). @@ -552,7 +569,19 @@ ObClient *client_search_focus_tree_full(ObClient *self); */ ObClient *client_search_modal_child(ObClient *self); -ObClient *client_search_top_transient(ObClient *self); +/*! Returns a list of top-level windows which this is a transient for. + It will only contain more than 1 element if the client is transient for its + group. +*/ +GSList *client_search_all_top_parents(ObClient *self); + +/*! Returns a window's top level parent. This only counts direct parents, + not groups if it is transient for its group. +*/ +ObClient *client_search_top_parent(ObClient *self); + +/*! Is one client a direct child of another (i.e. not through the group.) */ +gboolean client_is_direct_child(ObClient *parent, ObClient *child); /*! Search for a parent of a client. This only searches up *ONE LEVEL*, and returns the searched for parent if it is a parent, or NULL if not. */ @@ -566,7 +595,7 @@ ObClient *client_search_transient(ObClient *self, ObClient *search); 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); +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.