#include "geom.h"
#include "stacking.h"
#include "window.h"
-#include "render/color.h"
+#include "obrender/color.h"
#include <glib.h>
#include <X11/Xlib.h>
gchar *class;
/*! The specified role of the window, used for identification */
gchar *role;
+ /*! The application that created the window's group. */
+ gchar *group_name;
+ /*! The class of the window's group, can used for grouping */
+ gchar *group_class;
/*! The session client id for the window. *This can be NULL!* */
gchar *sm_client_id;
Rect pre_max_area;
/*! Position and size of the window prior to being fullscreened */
Rect pre_fullscreen_area;
+ /*! Remember if the window was maximized before going fullscreen */
+ gboolean pre_fullscreen_max_horz,
+ pre_fullscreen_max_vert;
/*! The window's strut
The strut defines areas of the screen that are marked off-bounds for
/*! Get notified when the client is unmanaged */
void client_add_destroy_notify(ObClientCallback func, gpointer data);
void client_remove_destroy_notify(ObClientCallback func);
+void client_remove_destroy_notify_data(ObClientCallback func, gpointer data);
-/*! Manages all existing windows */
-void client_manage_all();
/*! Manages a given window
@param prompt This specifies an ObPrompt which is being managed. It is
possible to manage Openbox-owned windows through this.
*/
void client_manage(Window win, struct _ObPrompt *prompt);
/*! Unmanages all managed windows */
-void client_unmanage_all();
+void client_unmanage_all(void);
/*! Unmanages a given client */
void client_unmanage(ObClient *client);
void client_fake_unmanage(ObClient *self);
/*! Sets the client list on the root window from the client_list */
-void client_set_list();
+void client_set_list(void);
/*! Determines if the client should be shown or hidden currently.
@return TRUE if it should be visible; otherwise, FALSE.
(utilty, menu, etc) */
gboolean client_helper(ObClient *self);
+/*! Returns true if the window occupies space in the monitor conceptually, or
+ false if it does not and its presence should be ignored when possible. */
+gboolean client_occupies_space(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
*/
void client_fullscreen(ObClient *self, gboolean fs);
+/*! Determine if the window, using the given client-area, would be considered
+ as an "oldschool fullscreen" window, that is, if it is filling a whole
+ monitor. */
+gboolean client_is_oldfullscreen(const ObClient *self, const Rect *area);
+
/*! Iconifies or uniconifies the client window
@param iconic true if the window should be iconified; false if it should be
restored.
#endif
/*! Updates the window's colormap */
void client_update_colormap(ObClient *self, Colormap colormap);
+/*! Updates the requested opacity for the window from the client. */
+void client_update_opacity(ObClient *self);
/*! Updates the WMNormalHints and adjusts things if they change */
void client_update_normal_hints(ObClient *self);
transient for */
gboolean client_has_parent(ObClient *self);
+/*! Return TRUE if the client has some transient children, and FALSE otherwise.
+*/
+gboolean client_has_children(ObClient *self);
+
/*! Searches a client's immediate parents for a focused window. The function
does not check for the passed client, only for *ONE LEVEL* of its parents.
If no focused parent is found, NULL is returned.
guint client_monitor(ObClient *self);
-ObClient* client_under_pointer();
+ObClient* client_under_pointer(void);
gboolean client_has_group_siblings(ObClient *self);
+/*! Returns TRUE if the client has a transient child, a parent, or a
+ group member. Returns FALSE otherwise.
+*/
+gboolean client_has_relative(ObClient *self);
+
/*! Returns TRUE if the client is running on the same machine as Openbox */
gboolean client_on_localhost(ObClient *self);