From d114cfce996abc8b315e76a8ead60fc7d74280b5 Mon Sep 17 00:00:00 2001 From: Abdelrahman Date: Mon, 15 Jan 2024 20:48:36 +0000 Subject: [PATCH] Create toolbox window --- src/compositor.c | 27 ++++++++++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/src/compositor.c b/src/compositor.c index ac7226c..32b2671 100644 --- a/src/compositor.c +++ b/src/compositor.c @@ -38,13 +38,19 @@ i32 run_main_loop(void) { comp.nodes = (node_t *)malloc(sizeof(node_t) * MAX_NODES); window_t *main_window = &(comp.windows[0]); + window_t *toolbox = &(comp.windows[1]); - if (!init_window(main_window, "Compositor", WINDOW_WIDTH, WINDOW_HEIGHT)) { + if (!init_window(main_window, "Compositor", WINDOW_WIDTH, WINDOW_HEIGHT, -1, + -1)) { SDL_Quit(); return EXIT_FAILURE; } + u32 toolbox_window_width = WINDOW_WIDTH / 7; + init_window(toolbox, "Toolbox", toolbox_window_width, WINDOW_HEIGHT, + main_window->x - toolbox_window_width, -1); + comp.running = true; SDL_EventState(SDL_DROPFILE, SDL_ENABLE); @@ -56,6 +62,14 @@ i32 run_main_loop(void) { switch (comp.event.type) { case SDL_QUIT: comp.running = false; + break; + case SDL_WINDOWEVENT: + switch (comp.event.window.event) { + case SDL_WINDOWEVENT_CLOSE: + comp.running = false; + break; + } + break; case SDL_MOUSEBUTTONDOWN: if (comp.event.button.windowID == main_window->id) { @@ -108,16 +122,23 @@ i32 run_main_loop(void) { } } - clear_window(main_window, bg_colour); + for (u64 i = 0; i < MAX_WINDOWS; ++i) { + clear_window(&(comp.windows[i]), bg_colour); + } for (u64 i = 0; i < comp.count; ++i) { node_t *node = &(comp.nodes[i]); draw_node(main_window, node); } - swap_buffers(main_window); + for (u64 i = 0; i < MAX_WINDOWS; ++i) { + swap_buffers(&(comp.windows[i])); + } } + cleanup_window(toolbox); + cleanup_window(main_window); + SDL_Quit(); return EXIT_SUCCESS;