diff --git a/src/include/xcb.h b/src/include/xcb.h index 30fd372..cb5a2f2 100644 --- a/src/include/xcb.h +++ b/src/include/xcb.h @@ -41,7 +41,7 @@ typedef struct window_geometry_t { * @returns 返回几何信息指针,使用完后记得使用 free 释放内存 */ window_geometry_t *get_window_geometry(xcb_window_t window); -void map_window(xcb_window_t window); +void map_window(xcb_window_t window, bool map_sub_window); /** * @brief 获取窗口名 * @returns 返回窗口名字符串指针,使用完后记得使用 free 释放内存 diff --git a/src/main.c b/src/main.c index f627136..61a8210 100644 --- a/src/main.c +++ b/src/main.c @@ -722,7 +722,7 @@ void manage_window(xcb_window_t window) { } c->monitor->selected_client = c; arrange(c->monitor); - map_window(window); + map_window(window, false); focus(NULL); } @@ -946,7 +946,7 @@ void show_hide_client(client_t *client) { if (CLIENT_VISIBLE(client)) { if (client->fullscreen) { - set_client_fullscreen(client, true); + fullscreen_client(client); } else if (client->maximize) { maximize_client(client); } else if (!client->monitor->layout->arrange || client->floating) { diff --git a/src/xcb/window.c b/src/xcb/window.c index 6b784a9..0b8ad0b 100644 --- a/src/xcb/window.c +++ b/src/xcb/window.c @@ -238,9 +238,9 @@ window_geometry_t *get_window_geometry(xcb_window_t window) { return geometry; } -void map_window(xcb_window_t window) { +void map_window(xcb_window_t window, bool map_sub_window) { xcb_map_window(conn, window); - xcb_map_subwindows(conn, window); + if (map_sub_window) xcb_map_subwindows(conn, window); } char *get_window_name(xcb_window_t window) {