X-Git-Url: https://git.brokenzipper.com/gitweb?a=blobdiff_plain;f=openbox%2Fclient.h;h=610c8cd4f93e59a03ee3b68bbf5ae9b7d2a35be7;hb=c8fa3a6028a4187675d4ffeee07485ed3caae38b;hp=7001765f60b0e830c3ea86d0afdb1b49e0bb5ab5;hpb=11cde9683d8d722d34c8b730d6bdd73fe73b080b;p=chaz%2Fopenbox diff --git a/openbox/client.h b/openbox/client.h index 7001765f..610c8cd4 100644 --- a/openbox/client.h +++ b/openbox/client.h @@ -263,6 +263,9 @@ gboolean client_normal(ObClient *self); /* Returns if the window is focused */ gboolean client_focused(ObClient *self); +#define client_configure(self, anchor, x, y, w, h, user, final) \ + client_configure_full(self, anchor, x, y, w, h, user, final, FALSE) + /*! Move and/or resize the window. This also maintains things like the client's minsize, and size increments. @param anchor The corner to keep in the same position when resizing. @@ -277,17 +280,38 @@ gboolean client_focused(ObClient *self); configuration. e.g. Final should be FALSE if doing an interactive move/resize, and then be TRUE for the last call only. + @param force_reply Send a ConfigureNotify to the client regardless of if + the position changed. */ -void client_configure(ObClient *self, ObCorner anchor, - int x, int y, int w, int h, - gboolean user, gboolean final); +void client_configure_full(ObClient *self, ObCorner anchor, + int x, int y, int w, int h, + gboolean user, gboolean final, + gboolean force_reply); void client_reconfigure(ObClient *self); +/*! Finds coordinates to keep a client on the screen. + @param self The client + @param x The x coord of the client, may be changed. + @param y The y coord of the client, may be changed. + @param w The width of the client. + @param w The height of the client. + @param rude Be rude about it. If false, it is only moved if it is entirely + not visible. If true, then make sure the window is inside the + struts if possible. + @return true if the client was moved to be on-screen; false if not. +*/ +gboolean client_find_onscreen(ObClient *self, int *x, int *y, int w, int h, + gboolean rude); + /*! Moves a client so that it is on screen if it is entirely out of the viewable screen. + @param self The client to move + @param rude Be rude about it. If false, it is only moved if it is entirely + not visible. If true, then make sure the window is inside the + struts if possible. */ -void client_move_onscreen(ObClient *self); +void client_move_onscreen(ObClient *self, gboolean rude); /*! Fullscreen's or unfullscreen's the client window @param fs true if the window should be made fullscreen; false if it should @@ -445,4 +469,6 @@ void client_set_layer(ObClient *self, int layer); guint client_monitor(ObClient *self); +gchar* client_get_sm_client_id(ObClient *self); + #endif