Bugfix: Fix stack-limit cols, handle stack-limit cols on tabbed containers (Thanks jace)

This commit is contained in:
Michael Stapelberg 2009-11-22 22:48:08 +01:00
parent 4ace0d2138
commit 4ba26659fd
1 changed files with 14 additions and 7 deletions

View File

@ -463,7 +463,7 @@ void render_container(xcb_connection_t *conn, Container *container) {
if (container->stack_limit == STACK_LIMIT_COLS) { if (container->stack_limit == STACK_LIMIT_COLS) {
/* wrap stores the number of rows after which we will /* wrap stores the number of rows after which we will
* wrap to a new column. */ * wrap to a new column. */
wrap = ceil((float)num_clients / container->stack_limit_value); wrap = container->stack_limit_value;
} else if (container->stack_limit == STACK_LIMIT_ROWS) { } else if (container->stack_limit == STACK_LIMIT_ROWS) {
/* When limiting rows, the wrap variable serves a /* When limiting rows, the wrap variable serves a
* slightly different purpose: it holds the number of * slightly different purpose: it holds the number of
@ -494,14 +494,16 @@ void render_container(xcb_connection_t *conn, Container *container) {
int offset_x = 0; int offset_x = 0;
int offset_y = 0; int offset_y = 0;
if (container->mode == MODE_STACK) { if (container->mode == MODE_STACK ||
(container->mode == MODE_TABBED &&
container->stack_limit == STACK_LIMIT_COLS)) {
if (container->stack_limit == STACK_LIMIT_COLS) { if (container->stack_limit == STACK_LIMIT_COLS) {
offset_x = current_col * (stack_win->rect.width / container->stack_limit_value); offset_x = current_col * (stack_win->rect.width / container->stack_limit_value);
offset_y = current_row * decoration_height; offset_y = current_row * decoration_height;
current_row++;
if ((current_row % wrap) == 0) {
current_col++; current_col++;
current_row = 0; if ((current_col % wrap) == 0) {
current_row++;
current_col = 0;
} }
} else if (container->stack_limit == STACK_LIMIT_ROWS) { } else if (container->stack_limit == STACK_LIMIT_ROWS) {
offset_x = current_col * wrap; offset_x = current_col * wrap;
@ -515,8 +517,13 @@ void render_container(xcb_connection_t *conn, Container *container) {
offset_y = current_client * decoration_height; offset_y = current_client * decoration_height;
} }
current_client++; current_client++;
} else if (container->mode == MODE_TABBED) } else if (container->mode == MODE_TABBED) {
if (container->stack_limit == STACK_LIMIT_ROWS) {
LOG("You limited this container in its rows. "
"This makes no sense in tabbing mode.\n");
}
offset_x = current_client++ * size_each; offset_x = current_client++ * size_each;
}
decorate_window(conn, client, stack_win->pixmap.id, stack_win->pixmap.gc, decorate_window(conn, client, stack_win->pixmap.id, stack_win->pixmap.gc,
offset_x, offset_y); offset_x, offset_y);
} }