X-Git-Url: https://git.sur5r.net/?p=i3%2Fi3;a=blobdiff_plain;f=include%2Fcon.h;h=2c991b0cb6ec90b91ccbe82fc314a7f3edfe6e9c;hp=6cd1ef3e41eca1ad90c3af125ecae7fa10161675;hb=HEAD;hpb=8e520deb898004303ff889f9636418201ba0dffd diff --git a/include/con.h b/include/con.h index 6cd1ef3e..2c991b0c 100644 --- a/include/con.h +++ b/include/con.h @@ -20,7 +20,8 @@ */ Con *con_new_skeleton(Con *parent, i3Window *window); -/* A wrapper for con_new_skeleton, to retain the old con_new behaviour +/** + * A wrapper for con_new_skeleton, to retain the old con_new behaviour * */ Con *con_new(Con *parent, i3Window *window); @@ -38,6 +39,12 @@ void con_free(Con *con); */ void con_focus(Con *con); +/** + * Sets input focus to the given container and raises it to the top. + * + */ +void con_activate(Con *con); + /** * Closes the given container. * @@ -114,6 +121,14 @@ Con *con_parent_with_orientation(Con *con, orientation_t orientation); */ Con *con_get_fullscreen_con(Con *con, fullscreen_mode_t fullscreen_mode); +/** + * Returns the fullscreen node that covers the given workspace if it exists. + * This is either a CF_GLOBAL fullscreen container anywhere or a CF_OUTPUT + * fullscreen container in the workspace. + * + */ +Con *con_get_fullscreen_covering_ws(Con *ws); + /** * Returns true if the container is internal, such as __i3_scratch * @@ -165,6 +180,13 @@ Con *con_by_window_id(xcb_window_t window); */ Con *con_by_con_id(long target); +/** + * Returns true if the given container (still) exists. + * This can be used, e.g., to make sure a container hasn't been closed in the meantime. + * + */ +bool con_exists(Con *con); + /** * Returns the container with the given frame ID or NULL if no such container * exists. @@ -199,7 +221,7 @@ void con_mark_toggle(Con *con, const char *mark, mark_mode_t mode); */ void con_mark(Con *con, const char *mark, mark_mode_t mode); -/* +/** * Removes marks from containers. * If con is NULL, all containers are considered. * If name is NULL, this removes all existing marks. @@ -215,6 +237,22 @@ void con_unmark(Con *con, const char *name); */ Con *con_for_window(Con *con, i3Window *window, Match **store_match); +/** + * Iterate over the container's focus stack and return an array with the + * containers inside it, ordered from higher focus order to lowest. + * + */ +Con **get_focus_order(Con *con); + +/** + * Clear the container's focus stack and re-add it using the provided container + * array. The function doesn't check if the provided array contains the same + * containers with the previous focus stack but will not add floating containers + * in the new focus stack if container is not a workspace. + * + */ +void set_focus_order(Con *con, Con **focus_order); + /** * Returns the number of children of this container. * @@ -307,7 +345,16 @@ void con_move_to_workspace(Con *con, Con *workspace, bool fix_coordinates, * visible workspace on the given output. * */ -void con_move_to_output(Con *con, Output *output); +void con_move_to_output(Con *con, Output *output, bool fix_coordinates); + +/** + * Moves the given container to the currently focused container on the + * visible workspace on the output specified by the given name. + * The current output for the container is used to resolve relative names + * such as left, right, up, down. + * + */ +bool con_move_to_output_name(Con *con, const char *name, bool fix_coordinates); /** * Moves the given container to the given mark. @@ -356,7 +403,7 @@ Con *con_descend_focused(Con *con); */ Con *con_descend_tiling_focused(Con *con); -/* +/** * Returns the leftmost, rightmost, etc. container in sub-tree. For example, if * direction is D_LEFT, then we return the rightmost container and if direction * is D_RIGHT, we return the leftmost container. This is because if we are