#include "geom.h"
#include "stacking.h"
#include "window.h"
-#include "render/color.h"
+#include "obrender/color.h"
#include <glib.h>
#include <X11/Xlib.h>
{
ObWindow obwin;
Window window;
+ gboolean managed;
/*! If this client is managing an ObPrompt window, then this is set to the
prompt */
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
/*! The window uses shape extension to be non-rectangular? */
gboolean shaped;
+ /*! The window uses shape extension to have non-rectangular input? */
+ gboolean shaped_input;
/*! The window is modal, so it must be processed before any windows it is
related to can be focused */
client_configure(self, self->area.x, self->area.y, w, h, TRUE, TRUE, FALSE)
#define client_move_resize(self, x, y, w, h) \
client_configure(self, x, y, w, h, TRUE, TRUE, FALSE)
-
-/*! Make a client reconfigure so that it will honour its current max/min sizes
- and other bounds.
- @param force If TRUE, then a ConfigureNotify event will be sent to the client
- even if nothing has changed.
-*/
-void client_reconfigure(ObClient *self, gboolean force);
+#define client_reconfigure(self, force) \
+ client_configure(self, ((ObClient*)self)->area.x, ((ObClient*)self)->area.y, \
+ ((ObClient*)self)->area.width, \
+ ((ObClient*)self)->area.height, FALSE, TRUE, force)
/*! Figure out where a window will end up and what size it will be if you
told it to move/resize to these coordinates.
/*! Activates the client for use, focusing, uniconifying it, etc. To be used
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 desktop If true, and the window is on another desktop, it will still
+ be activated.
+ @param here If true, and the window is on another desktop, it will be moved
+ to the current desktop, otherwise the desktop will switch to
+ where the window is.
@param raise If true, the client is brought to the front.
@param unshade If true, the client is unshaded (if it is shaded)
@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, gboolean raise,
- gboolean unshade, gboolean user);
+void client_activate(ObClient *self, gboolean desktop, gboolean here,
+ gboolean raise, gboolean unshade, gboolean user);
/*! Bring all of its helper windows to its desktop. These are the utility and
stuff windows. */
/*! Sets the window's type and transient flag */
void client_get_type_and_transientness(ObClient *self);
+/*! Gets the motif wm hints */
+void client_get_mwm_hints(ObClient *self);
/*! Returns a client's icon set, or its parents (recursively) if it doesn't
have one