]> git.sur5r.net Git - i3/i3/blobdiff - include/layout.h
Implement the configuration option floating_modifier and document it
[i3/i3] / include / layout.h
index 41d52a3f93da2bb12ecfc42ba034d45472358802..53dfbb9dead58fd1c7ef2115e257e13b2e6fd6d5 100644 (file)
 #ifndef _LAYOUT_H
 #define _LAYOUT_H
 
-void decorate_window(xcb_connection_t *conn, Client *client);
+/**
+ * Gets the unoccupied space (= space which is available for windows which were resized by the user)
+ * This is necessary to render both, customly resized windows and never touched
+ * windows correctly, meaning that the aspect ratio will be maintained when opening new windows.
+ *
+ */
+int get_unoccupied_x(Workspace *workspace);
+
+/**
+ * (Re-)draws window decorations for a given Client onto the given drawable/graphic context.
+ * When in stacking mode, the window decorations are drawn onto an own window.
+ *
+ */
+void decorate_window(xcb_connection_t *conn, Client *client, xcb_drawable_t drawable, xcb_gcontext_t gc, int offset);
+
+/**
+ * Redecorates the given client correctly by checking if it’s in a stacking container and
+ * re-rendering the stack window or just calling decorate_window if it’s not in a stacking
+ * container.
+ *
+ */
+void redecorate_window(xcb_connection_t *conn, Client *client);
+
+/**
+ * Pushes the client’s x and y coordinates to X11
+ *
+ */
+void reposition_client(xcb_connection_t *conn, Client *client);
+
+/**
+ * Pushes the client’s width/height to X11 and resizes the child window
+ *
+ */
+void resize_client(xcb_connection_t *conn, Client *client);
+
+/**
+ * Renders the given container. Is called by render_layout() or individually (for example
+ * when focus changes in a stacking container)
+ *
+ */
+void render_container(xcb_connection_t *conn, Container *container);
+
+/**
+ * Modifies the event mask of all clients on the given workspace to either ignore or to handle
+ * enter notifies. It is handy to ignore notifies because they will be sent when a window is mapped
+ * under the cursor, thus when the user didn’t enter the window actively at all.
+ *
+ */
+void ignore_enter_notify_forall(xcb_connection_t *conn, Workspace *workspace, bool ignore_enter_notify);
+
+/**
+ * Renders the given workspace on the given screen
+ *
+ */
+void render_workspace(xcb_connection_t *conn, i3Screen *screen, Workspace *r_ws);
+
+/**
+ * Renders the whole layout, that is: Go through each screen, each workspace, each container
+ * and render each client. This also renders the bars.
+ *
+ * If you don’t need to render *everything*, you should call render_container on the container
+ * you want to refresh.
+ *
+ */
 void render_layout(xcb_connection_t *conn);
 
 #endif