remove some obsolete code
This commit is contained in:
parent
b2db9ac797
commit
65bd71b213
110
src/util.c
110
src/util.c
|
@ -287,116 +287,6 @@ void set_focus(xcb_connection_t *conn, Client *client, bool set_anyways) {
|
||||||
redecorate_window(conn, client);
|
redecorate_window(conn, client);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* Called when the user switches to another mode or when the container is
|
|
||||||
* destroyed and thus needs to be cleaned up.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
void leave_stack_mode(xcb_connection_t *conn, Container *container) {
|
|
||||||
/* When going out of stacking mode, we need to close the window */
|
|
||||||
struct Stack_Window *stack_win = &(container->stack_win);
|
|
||||||
|
|
||||||
SLIST_REMOVE(&stack_wins, stack_win, Stack_Window, stack_windows);
|
|
||||||
|
|
||||||
xcb_free_gc(conn, stack_win->pixmap.gc);
|
|
||||||
xcb_free_pixmap(conn, stack_win->pixmap.id);
|
|
||||||
xcb_destroy_window(conn, stack_win->window);
|
|
||||||
|
|
||||||
stack_win->rect.width = -1;
|
|
||||||
stack_win->rect.height = -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Switches the layout of the given container taking care of the necessary house-keeping
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
void switch_layout_mode(xcb_connection_t *conn, Container *container, int mode) {
|
|
||||||
if (mode == MODE_STACK || mode == MODE_TABBED) {
|
|
||||||
/* When we’re already in stacking mode, nothing has to be done */
|
|
||||||
if ((mode == MODE_STACK && container->mode == MODE_STACK) ||
|
|
||||||
(mode == MODE_TABBED && container->mode == MODE_TABBED))
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (container->mode == MODE_STACK || container->mode == MODE_TABBED)
|
|
||||||
goto after_stackwin;
|
|
||||||
|
|
||||||
/* When entering stacking mode, we need to open a window on
|
|
||||||
* which we can draw the title bars of the clients, it has
|
|
||||||
* height 1 because we don’t bother here with calculating the
|
|
||||||
* correct height - it will be adjusted when rendering anyways.
|
|
||||||
* Also, we need to use max(width, 1) because windows cannot
|
|
||||||
* be created with either width == 0 or height == 0. */
|
|
||||||
Rect rect = {container->x, container->y, max(container->width, 1), 1};
|
|
||||||
|
|
||||||
uint32_t mask = 0;
|
|
||||||
uint32_t values[2];
|
|
||||||
|
|
||||||
/* Don’t generate events for our new window, it should *not* be managed */
|
|
||||||
mask |= XCB_CW_OVERRIDE_REDIRECT;
|
|
||||||
values[0] = 1;
|
|
||||||
|
|
||||||
/* We want to know when… */
|
|
||||||
mask |= XCB_CW_EVENT_MASK;
|
|
||||||
values[1] = XCB_EVENT_MASK_ENTER_WINDOW | /* …mouse is moved into our window */
|
|
||||||
XCB_EVENT_MASK_BUTTON_PRESS | /* …mouse is pressed */
|
|
||||||
XCB_EVENT_MASK_EXPOSURE; /* …our window needs to be redrawn */
|
|
||||||
|
|
||||||
struct Stack_Window *stack_win = &(container->stack_win);
|
|
||||||
stack_win->window = create_window(conn, rect, XCB_WINDOW_CLASS_INPUT_OUTPUT, XCB_CURSOR_LEFT_PTR, false, mask, values);
|
|
||||||
|
|
||||||
stack_win->rect.height = 0;
|
|
||||||
|
|
||||||
/* Initialize the entry for our cached pixmap. It will be
|
|
||||||
* created as soon as it’s needed (see cached_pixmap_prepare). */
|
|
||||||
memset(&(stack_win->pixmap), 0, sizeof(struct Cached_Pixmap));
|
|
||||||
stack_win->pixmap.referred_rect = &stack_win->rect;
|
|
||||||
stack_win->pixmap.referred_drawable = stack_win->window;
|
|
||||||
|
|
||||||
stack_win->container = container;
|
|
||||||
|
|
||||||
SLIST_INSERT_HEAD(&stack_wins, stack_win, stack_windows);
|
|
||||||
} else {
|
|
||||||
if (container->mode == MODE_STACK || container->mode == MODE_TABBED)
|
|
||||||
leave_stack_mode(conn, container);
|
|
||||||
}
|
|
||||||
after_stackwin:
|
|
||||||
container->mode = mode;
|
|
||||||
|
|
||||||
/* Force reconfiguration of each client */
|
|
||||||
Client *client;
|
|
||||||
|
|
||||||
CIRCLEQ_FOREACH(client, &(container->clients), clients)
|
|
||||||
client->force_reconfigure = true;
|
|
||||||
|
|
||||||
render_layout(conn);
|
|
||||||
|
|
||||||
if (container->currently_focused != NULL) {
|
|
||||||
/* We need to make sure that this client is above *each* of the
|
|
||||||
* other clients in this container */
|
|
||||||
Client *last_focused = get_last_focused_client(conn, container, container->currently_focused);
|
|
||||||
|
|
||||||
CIRCLEQ_FOREACH(client, &(container->clients), clients) {
|
|
||||||
if (client == container->currently_focused || client == last_focused)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
DLOG("setting %08x below %08x / %08x\n", client->frame, container->currently_focused->frame);
|
|
||||||
uint32_t values[] = { container->currently_focused->frame, XCB_STACK_MODE_BELOW };
|
|
||||||
xcb_configure_window(conn, client->frame,
|
|
||||||
XCB_CONFIG_WINDOW_SIBLING | XCB_CONFIG_WINDOW_STACK_MODE, values);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (last_focused != NULL) {
|
|
||||||
DLOG("Putting last_focused directly underneath the currently focused\n");
|
|
||||||
uint32_t values[] = { container->currently_focused->frame, XCB_STACK_MODE_BELOW };
|
|
||||||
xcb_configure_window(conn, last_focused->frame,
|
|
||||||
XCB_CONFIG_WINDOW_SIBLING | XCB_CONFIG_WINDOW_STACK_MODE, values);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
set_focus(conn, container->currently_focused, true);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Gets the first matching client for the given window class/window title.
|
* Gets the first matching client for the given window class/window title.
|
||||||
* If the paramater specific is set to a specific client, only this one
|
* If the paramater specific is set to a specific client, only this one
|
||||||
|
|
Loading…
Reference in New Issue