diff options
Diffstat (limited to 'sway/layout.c')
-rw-r--r-- | sway/layout.c | 46 |
1 files changed, 24 insertions, 22 deletions
diff --git a/sway/layout.c b/sway/layout.c index e2f31848..fdd2fe6b 100644 --- a/sway/layout.c +++ b/sway/layout.c @@ -296,7 +296,7 @@ void move_container(swayc_t *container, enum movement_direction dir) { sway_log(L_DEBUG, "container:%p, parent:%p, child %p,", container,parent,child); if (parent->layout == layout - || layout == L_NONE /* accept any layout for next/prev direction */ + || (layout == L_NONE && parent->type == C_CONTAINER) /* accept any layout for next/prev direction */ || (parent->layout == L_TABBED && layout == L_HORIZ) || (parent->layout == L_STACKED && layout == L_VERT) || is_auto_layout(parent->layout)) { @@ -321,16 +321,16 @@ void move_container(swayc_t *container, enum movement_direction dir) { } // if move command makes container change from master to slave // (or the contrary), reset its geometry an the one of the replaced item. - if (parent->nb_master && - (size_t) parent->children->length > parent->nb_master) { + if (parent->nb_master + && (size_t)parent->children->length > parent->nb_master) { swayc_t *swap_geom = NULL; // if child is being promoted/demoted, it will swap geometry // with the sibling being demoted/promoted. if ((dir == MOVE_NEXT && desired == 0) - || (dir == MOVE_PREV && (size_t) desired == parent->nb_master - 1)) { + || (dir == MOVE_PREV && (size_t)desired == parent->nb_master - 1)) { swap_geom = parent->children->items[parent->nb_master - 1]; - } else if ((dir == MOVE_NEXT && (size_t) desired == parent->nb_master) - || (dir == MOVE_PREV && desired == parent->children->length - 1)) { + } else if ((dir == MOVE_NEXT && (size_t)desired == parent->nb_master) + || (dir == MOVE_PREV && desired == parent->children->length - 1)) { swap_geom = parent->children->items[parent->nb_master]; } if (swap_geom) { @@ -837,9 +837,9 @@ static void apply_tabbed_or_stacked_layout(swayc_t *container, double x, double height); static void apply_auto_layout(swayc_t *container, const double x, const double y, - const double width, const double height, - enum swayc_layouts group_layout, - bool master_first); + const double width, const double height, + enum swayc_layouts group_layout, + bool master_first); static void arrange_windows_r(swayc_t *container, double width, double height) { int i; @@ -972,11 +972,11 @@ static void arrange_windows_r(swayc_t *container, double width, double height) { case L_HORIZ: default: apply_horiz_layout(container, x, y, width, height, 0, - container->children->length); + container->children->length); break; case L_VERT: apply_vert_layout(container, x, y, width, height, 0, - container->children->length); + container->children->length); break; case L_TABBED: case L_STACKED: @@ -1007,7 +1007,7 @@ static void arrange_windows_r(swayc_t *container, double width, double height) { if (swayc_is_fullscreen(view)) { wlc_view_bring_to_front(view->handle); } else if (!container->focused || - !swayc_is_fullscreen(container->focused)) { + !swayc_is_fullscreen(container->focused)) { wlc_view_bring_to_front(view->handle); } } @@ -1068,8 +1068,8 @@ void apply_horiz_layout(swayc_t *container, const double x, const double y, } void apply_vert_layout(swayc_t *container, const double x, const double y, - const double width, const double height, const int start, - const int end) { + const double width, const double height, const int start, + const int end) { int i; double scale = 0; // Calculate total height @@ -1121,7 +1121,7 @@ void apply_vert_layout(swayc_t *container, const double x, const double y, } void apply_tabbed_or_stacked_layout(swayc_t *container, double x, double y, - double width, double height) { + double width, double height) { int i; swayc_t *focused = NULL; for (i = 0; i < container->children->length; ++i) { @@ -1141,9 +1141,9 @@ void apply_tabbed_or_stacked_layout(swayc_t *container, double x, double y, } void apply_auto_layout(swayc_t *container, const double x, const double y, - const double width, const double height, - enum swayc_layouts group_layout, - bool master_first) { + const double width, const double height, + enum swayc_layouts group_layout, + bool master_first) { // Auto layout "container" in width x height @ x, y // using "group_layout" for each of the groups in the container. // There is one "master" group, plus container->nb_slave_groups. @@ -1342,7 +1342,7 @@ swayc_t *get_swayc_in_direction_under(swayc_t *container, enum movement_directio return NULL; } else { int desired = (focused_idx + (dir == MOVE_NEXT ? 1 : -1)) % - parent->children->length; + parent->children->length; if (desired < 0) { desired += parent->children->length; } @@ -1504,7 +1504,9 @@ bool is_auto_layout(enum swayc_layouts layout) { * Return the number of master elements in a container */ static inline size_t auto_master_count(const swayc_t *container) { - return MIN(container->nb_master, container->children->length); + sway_assert(container->children->length >= 0, "Container %p has (negative) children %d", + container, container->children->length); + return MIN(container->nb_master, (size_t)container->children->length); } /** @@ -1535,7 +1537,7 @@ size_t auto_group_count(const swayc_t *container) { */ int auto_group_start_index(const swayc_t *container, int index) { if (index < 0 || ! is_auto_layout(container->layout) - || (size_t) index < container->nb_master) { + || (size_t)index < container->nb_master) { return 0; } else { size_t nb_slaves = auto_slave_count(container); @@ -1591,7 +1593,7 @@ size_t auto_group_index(const swayc_t *container, int index) { } bool master_first = (container->layout == L_AUTO_LEFT || container->layout == L_AUTO_TOP); size_t nb_slaves = auto_slave_count(container); - if ((size_t) index < container->nb_master) { + if ((size_t)index < container->nb_master) { if (master_first || nb_slaves <= 0) { return 0; } else { |