Clean up the FillToEdge action implementation
[dana/openbox.git] / openbox / client.h
index d68d303..a753b12 100644 (file)
@@ -489,9 +489,21 @@ void client_find_edge_directional(ObClient *self, ObDirection dir,
                                   gint *dest, gboolean *near_edge);
 void client_find_move_directional(ObClient *self, ObDirection dir,
                                   gint *x, gint *y);
-void client_find_resize_directional(ObClient *self, ObDirection side,
-                                    gboolean grow,
-                                    gint *x, gint *y, gint *w, gint *h);
+
+typedef enum {
+    CLIENT_RESIZE_GROW,
+    CLIENT_RESIZE_GROW_IF_NOT_ON_EDGE,
+    CLIENT_RESIZE_SHRINK,
+} ObClientDirectionalResizeType;
+
+/*! Moves the client area passed in to grow/shrink the given edge.
+  @return TRUE if any change was made to the client area.
+*/
+gboolean client_find_resize_directional(
+    ObClient *self,
+    ObDirection side,
+    ObClientDirectionalResizeType resize_type,
+    gint *x, gint *y, gint *w, gint *h);
 
 /*! Fullscreen's or unfullscreen's the client window
   @param fs true if the window should be made fullscreen; false if it should
@@ -645,6 +657,9 @@ void client_update_icons(ObClient *self);
 /*! Updates the window's icon geometry (where to iconify to/from) */
 void client_update_icon_geometry(ObClient *self);
 
+/*! Helper function to convert the ->type member to string representation */
+const gchar *client_type_to_string(ObClient *self);
+
 /*! Set up what decor should be shown on the window and what functions should
   be allowed (ObClient::decorations and ObClient::functions).
   This also updates the NET_WM_ALLOWED_ACTIONS hint.