gint w, gint h);
#define client_move(self, x, y) \
- client_configure(self, x, y, self->area.width, self->area.height, TRUE, TRUE)
+ client_configure(self, x, y, self->area.width, self->area.height, \
+ self->border_width, TRUE, TRUE)
#define client_resize(self, w, h) \
- client_configure(self, self->area.x, self->area.y, w, h, TRUE, TRUE)
+ client_configure(self, self->area.x, self->area.y, w, h, \
+ self->border_width, TRUE, TRUE)
#define client_move_resize(self, x, y, w, h) \
- client_configure(self, x, y, w, h, TRUE, TRUE)
+ client_configure(self, x, y, w, h, self->border_width, TRUE, TRUE)
/*! Figure out where a window will end up and what size it will be if you
told it to move/resize to these coordinates.
@param force_reply Send a ConfigureNotify to the client regardless of if
the position changed.
*/
-void client_configure(ObClient *self, gint x, gint y, gint w, gint h,
+void client_configure(ObClient *self, gint x, gint y, gint w, gint h, gint b,
gboolean user, gboolean final);
void client_reconfigure(ObClient *self);
stuff windows. */
void client_bring_helper_windows(ObClient *self);
+/*! Bring all of its modal windows to its desktop. */
+void client_bring_modal_windows(ObClient *self);
+
/*! Calculates the stacking layer for the client window */
void client_calc_layer(ObClient *self);
const ObClientIcon *client_icon(ObClient *self, gint w, gint h);
+/*! Return TRUE if the client is transient for some other window. Return
+ FALSE if it's not transient or there is no window for it to be
+ transient for */
+gboolean client_has_parent(ObClient *self);
+
/*! Searches a client's direct parents for a focused window. The function does
not check for the passed client, only for *ONE LEVEL* of its parents.
If no focused parentt is found, NULL is returned.