//! The window uses shape extension to be non-rectangular?
bool _shaped;
+ //! If the window has a modal child window, then this will point to it
+ Client *_modal_child;
+
//! The window is modal, so it must be processed before any windows it is
//! related to can be focused
bool _modal;
by sending it to any other valid desktop.
*/
void setDesktop(long desktop);
+ //! Set whether the window is modal or not
+ /*!
+ This adjusts references in parents etc to match.
+ */
+ void setModal(bool modal);
//! Calculates the stacking layer for the client window
void calcLayer();
/*!
@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.
+ */
+ void fullscreen(bool fs, bool savearea);
+
+ //! Maximize or unmaximize the client window
+ /*!
+ @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.
*/
- void fullscreen(bool fs);
+ void maximize(bool max, int dir, bool savearea);
//! Internal version of the Client::move function
/*!
void internal_resize(Corner anchor, int w, int h, bool user = true,
int x = INT_MIN, int y = INT_MIN);
+ //! Attempts to find and return a modal child of this window, recursively.
+ Client *findModalChild(Client *skip = 0) const;
+
public:
#ifndef SWIG
//! Constructs a new Client object around a specified window id
//! Return the client this window is transient for
inline Client *transientFor() const { return _transient_for; }
+ //! Returns the window which is a modal child of this window
+ inline Client *modalChild() const { return _modal_child; }
+
//! Returns if the window is modal
/*!
If the window is modal, then no other windows that it is related to can get
focus while it exists/remains modal.
*/
inline bool modal() const { return _modal; }
- //! Returns if the window is shaded
+ //! The window should not be displayed by pagers
+ inline bool skipPager() const { return _skip_pager; }
+ //! The window should not be displayed by taskbars
+ inline bool skipTaskbar() const { return _skip_taskbar; }
+ //! Returns if the window is shaded
/*!
When the window is shaded, only its titlebar is visible.
*/
//! Returns the window's stacking layer
inline StackLayer layer() const { return _layer; }
+ //! Returns the logical size of the window
+ /*!
+ The "logical" size of the window is refers to the user's perception of the
+ size of the window, and is the value that should be displayed to the user.
+ For example, with xterms, this value it the number of characters being
+ displayed in the terminal, instead of the number of pixels.
+ */
+ const otk::Point &logicalSize() const { return _logical_size; }
+
//! Applies the states requested when the window mapped
/*!
This should be called only once, during the window mapping process. It
//! Returns the client's strut definition
inline const otk::Strut &strut() const { return _strut; }
- //! Move the client window
+ //! Move the window (actually, its frame) to a position.
/*!
+ This moves the window so that the top-left corner of its frame will be at
+ the position specified.
@param x The X coordinate to move to.
@param y The Y coordinate to move to.
*/
*/
void resize(Corner anchor, int w, int h);
+ //! Reapplies the maximized state to the window
+ /*!
+ Use this to make the window readjust its maximized size to new
+ surroundings (struts, etc).
+ */
+ void remaximize();
+
//! Choose a mask of decorations to not display on the client
/*!
Pass a value of 0 to the function to turn all decorations back on. Note