X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=openbox%2Fclient.h;h=cb6eed53e7ae4d9e5b7ab02308f724f1f2071e13;hb=9d6e3907650f4bc05ebf147aeec92573d7b88758;hp=22a7dd207183d02e381bd35a5ba34a100bb8982b;hpb=829e746b4defb3776050c438fa4fa87e5242eb25;p=chaz%2Fopenbox diff --git a/openbox/client.h b/openbox/client.h index 22a7dd20..cb6eed53 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 @@ -32,8 +33,9 @@ struct _ObFrame; struct _ObGroup; struct _ObSessionState; -typedef struct _ObClient ObClient; -typedef struct _ObClientIcon ObClientIcon; +typedef struct _ObClient ObClient; +typedef struct _ObClientIcon ObClientIcon; +typedef struct _ObAppSettings ObAppSettings; /* The value in client.transient_for indicating it is a transient for its group instead of for a single window */ @@ -209,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; @@ -241,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. */ @@ -267,6 +269,34 @@ struct _ObClient ObClientIcon *icons; /*! The number of icons in icons */ guint nicons; + + guint32 user_time; +}; + +struct _ObAppSettings +{ + gchar *class; + gchar *name; + gchar *role; + + Point position; + gboolean center_x; + gboolean center_y; + gboolean pos_given; + + guint desktop; + 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; @@ -401,6 +431,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); @@ -449,8 +482,10 @@ 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 */ -void client_activate(ObClient *self, gboolean here); +void client_activate(ObClient *self, gboolean here, gboolean user); /*! Calculates the stacking layer for the client window */ void client_calc_layer(ObClient *self); @@ -497,6 +532,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). @@ -547,7 +584,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.