From 0d7cf716ad15ab6adc149e3920725bc172025f97 Mon Sep 17 00:00:00 2001 From: Matthew Date: Mon, 1 Dec 2025 04:27:33 +1100 Subject: [PATCH] add window resize tracking --- platform.d | 110 ++++------------------------------------------------- 1 file changed, 8 insertions(+), 102 deletions(-) diff --git a/platform.d b/platform.d index 59d2e55..811711f 100644 --- a/platform.d +++ b/platform.d @@ -721,7 +721,8 @@ CreateWindow(PlatformWindow* window, string name, u32 width, u32 height, XVisual ButtonReleaseMask | PointerMotionMask | StructureNotifyMask | - PropertyChangeMask; + PropertyChangeMask | + ResizeRedirectMask; XSelectInput(window.display, window.window, event_mask); @@ -766,107 +767,6 @@ CreateWindow(PlatformWindow* window, string name, u32 width, u32 height, XVisual XFlush(window.display); - /* - window.conn = XGetXCBConnection(window.display); - assert(window.conn != null, "XGetXCBConnection failure"); - - xcb_void_cookie_t cookie; - xcb_generic_error_t *error; - - xcb_setup_t *setup = xcb_get_setup(window.conn); - xcb_screen_iterator_t iter = xcb_setup_roots_iterator(setup); - window.screen = iter.data; - - i32 event_mask = XCB_EVENT_MASK_EXPOSURE | - XCB_EVENT_MASK_KEY_PRESS | - XCB_EVENT_MASK_KEY_RELEASE | - XCB_EVENT_MASK_BUTTON_PRESS | - XCB_EVENT_MASK_BUTTON_RELEASE | - XCB_EVENT_MASK_POINTER_MOTION | - XCB_EVENT_MASK_STRUCTURE_NOTIFY| - XCB_EVENT_MASK_PROPERTY_CHANGE; - - i32[2] val_win = [window.screen.black_pixel, event_mask]; - i32 val_mask = XCB_CW_BACK_PIXEL | XCB_CW_EVENT_MASK; - - window.window = xcb_generate_id(window.conn); - - cookie = xcb_create_window_checked( - window.conn, - XCB_COPY_FROM_PARENT, - window.window, - window.screen.root, - 0, // x pos - 0, // y pos - window.w, // width - window.h, // height - 0, - XCB_WINDOW_CLASS_INPUT_OUTPUT, - window.screen.root_visual, - val_mask, - val_win.ptr - ); - error = xcb_request_check(window.conn, cookie); - CheckErr(&window, &cookie, error, "xcb_create_window failure"); - pureFree(error); - - cookie = xcb_map_window_checked(window.conn, window.window); - error = xcb_request_check(window.conn, cookie); - CheckErr(&window, &cookie, error, "xcb_map_window_checked failure"); - pureFree(error); - - cookie = xcb_change_property_checked( - window.conn, - XCB_PROP_MODE_REPLACE, - window.window, - XCB_ATOM_WM_NAME, - XCB_ATOM_STRING, - 8, - cast(u32)name.length, - name.ptr - ); - error = xcb_request_check(window.conn, cookie); - CheckErr(&window, &cookie, error, "xcb_change_property_checked failure"); - pureFree(error); - - for(u64 i = 0; i < Atoms.max; i += 1) - { - xcb_intern_atom_cookie_t intern = xcb_intern_atom(window.conn, 1, cast(u16)ATOM_STRS[i].length, ATOM_STRS[i].ptr); - xcb_intern_atom_reply_t* reply = xcb_intern_atom_reply(window.conn, intern, &error); - CheckErr(&window, &cookie, error, "xcb_intern_atom failure"); - - window.atoms[i] = reply.atom; - - pureFree(error); - pureFree(reply); - } - - window.selections[CBM.Clipboard].xmode = window.atoms[Atoms.Clipboard]; - window.selections[CBM.Primary].xmode = XCB_ATOM_PRIMARY; - window.selections[CBM.Secondary].xmode = XCB_ATOM_SECONDARY; - - cookie = xcb_change_property_checked( - window.conn, - XCB_PROP_MODE_REPLACE, - window.window, - window.atoms[Atoms.WMProtocols], - XCB_ATOM_ATOM, - 32, - 1, - &window.atoms[Atoms.DeleteWindow] - ); - error = xcb_request_check(window.conn, cookie); - CheckErr(&window, &cookie, error, "xcb_change_property_checked failure"); - pureFree(error); - - xcb_map_window(window.conn, window.window); - - i32 stream_result = xcb_flush(window.conn); - assert(stream_result > 0, "xcb_flush failure"); - - xcb_xfixes_query_version(window.conn, 4, 0); - */ - return true; }; @@ -1458,6 +1358,12 @@ HandleEvents(void* window_ptr) XSendEvent(w.display, req.requestor, false, PropertyChangeMask, ¬ify); XFlush(w.display); } break; + case ResizeRequest: + { + XResizeRequestEvent* resize_ev = &e.xresizerequest; + w.w = resize_ev.width; + w.h = resize_ev.height; + } break; default: break; }