From d80f0e4812cba03dce3cd73dd3b7c729a00e01b2 Mon Sep 17 00:00:00 2001 From: Pietro Gagliardi Date: Sat, 30 Jul 2022 18:52:04 -0400 Subject: [PATCH] And applied the test changes to the other platforms. Back to focusing on Windows now. --- darwin/window.m | 2 +- haiku/window.cpp | 10 ++++++++++ test/controls_darwin.m | 18 +++++++++--------- test/controls_haiku.cpp | 18 +++++++++--------- test/controls_unix.c | 18 +++++++++--------- unix/window.c | 10 ++++++++++ 6 files changed, 48 insertions(+), 28 deletions(-) diff --git a/darwin/window.m b/darwin/window.m index 21b365f7..e6487569 100644 --- a/darwin/window.m +++ b/darwin/window.m @@ -398,7 +398,7 @@ static void connectChild(struct windowImplData *wi) // TODO } -static void disconnectChild(struct winodwImplData *wi) +static void disconnectChild(struct windowImplData *wi) { // TODO } diff --git a/haiku/window.cpp b/haiku/window.cpp index 947c9dfc..fa183f8b 100644 --- a/haiku/window.cpp +++ b/haiku/window.cpp @@ -1,6 +1,16 @@ // 31 may 2020 #include "uipriv_haiku.hpp" +uiControl *uiprivSysWindowChild(uiWindow *w) +{ + // TODO + return NULL; +} +void uiprivSysWindowSetChild(uiWindow *w, uiControl *child) +{ + // TODO +} + struct windowImplData { BWindow *window; char *title; diff --git a/test/controls_darwin.m b/test/controls_darwin.m index bec7dea3..7ffa2831 100644 --- a/test/controls_darwin.m +++ b/test/controls_darwin.m @@ -1,46 +1,46 @@ // 10 june 2019 #import "test_darwin.h" -static id osVtableNopHandle(uiControl *c, void *implData) +static id testControlHandle(uiControl *c, void *implData) { + struct testControlImplData *ti = (struct testControlImplData *) implData; + + if (ti->realOSVtable != NULL && ti->realOSVtable->Handle != NULL) + return (*(ti->realOSVtable->Handle))(c, ti->realImplData); return nil; } static const uiControlOSVtable osVtable = { .Size = sizeof (uiControlOSVtable), - .Handle = osVtableNopHandle, + .Handle = testControlHandle, }; -const uiControlOSVtable *testOSVtable(void) +const uiControlOSVtable *testControlOSVtable(void) { return &osVtable; } Test(WrongControlOSVtableSizeIsProgrammerError) { - uiControlVtable vtable; uiControlOSVtable osvt; void *ctx; - testControlLoadNopVtable(&vtable); ctx = beginCheckProgrammerError("uiRegisterControlType(): wrong size 1 for uiControlOSVtable"); memset(&osvt, 0, sizeof (uiControlOSVtable)); osvt.Size = 1; - uiRegisterControlType("name", &vtable, &osvt, 0); + uiRegisterControlType("name", testControlVtable(), &osvt, 0); endCheckProgrammerError(ctx); } Test(ControlOSVtableWithMissingHandleMethodIsProgrammerError) { - uiControlVtable vtable; uiControlOSVtable osvt; void *ctx; - testControlLoadNopVtable(&vtable); ctx = beginCheckProgrammerError("uiRegisterControlType(): required uiControlOSVtable method Handle() missing for uiControl type name"); osvt = osVtable; osvt.Handle = NULL; - uiRegisterControlType("name", &vtable, &osvt, 0); + uiRegisterControlType("name", testControlVtable(), &osvt, 0); endCheckProgrammerError(ctx); } diff --git a/test/controls_haiku.cpp b/test/controls_haiku.cpp index 53f65023..57083625 100644 --- a/test/controls_haiku.cpp +++ b/test/controls_haiku.cpp @@ -1,8 +1,12 @@ // 18 january 2020 #include "test_haiku.hpp" -static void *osVtableNopHandle(uiControl *c, void *implData) +static void *testControlHandle(uiControl *c, void *implData) { + struct testControlImplData *ti = (struct testControlImplData *) implData; + + if (ti->realOSVtable != NULL && ti->realOSVtable->Handle != NULL) + return (*(ti->realOSVtable->Handle))(c, ti->realImplData); return NULL; } @@ -11,40 +15,36 @@ static const uiControlOSVtable osVtable = [](void) { memset(&vt, 0, sizeof (uiControlOSVtable)); vt.Size = sizeof (uiControlOSVtable); - vt.Handle = osVtableNopHandle; + vt.Handle = testControlHandle; return vt; }(); -const uiControlOSVtable *testOSVtable(void) +const uiControlOSVtable *testControlOSVtable(void) { return &osVtable; } Test(WrongControlOSVtableSizeIsProgrammerError) { - uiControlVtable vtable; uiControlOSVtable osvt; void *ctx; - testControlLoadNopVtable(&vtable); ctx = beginCheckProgrammerError("uiRegisterControlType(): wrong size 1 for uiControlOSVtable"); memset(&osvt, 0, sizeof (uiControlOSVtable)); osvt.Size = 1; - uiRegisterControlType("name", &vtable, &osvt, 0); + uiRegisterControlType("name", testControlVtable(), &osvt, 0); endCheckProgrammerError(ctx); } Test(ControlOSVtableWithMissingHandleMethodIsProgrammerError) { - uiControlVtable vtable; uiControlOSVtable osvt; void *ctx; - testControlLoadNopVtable(&vtable); ctx = beginCheckProgrammerError("uiRegisterControlType(): required uiControlOSVtable method Handle() missing for uiControl type name"); osvt = osVtable; osvt.Handle = NULL; - uiRegisterControlType("name", &vtable, &osvt, 0); + uiRegisterControlType("name", testControlVtable(), &osvt, 0); endCheckProgrammerError(ctx); } diff --git a/test/controls_unix.c b/test/controls_unix.c index 60a4b632..e3b8d44d 100644 --- a/test/controls_unix.c +++ b/test/controls_unix.c @@ -1,46 +1,46 @@ // 10 june 2019 #include "test_unix.h" -static GtkWidget *osVtableNopHandle(uiControl *c, void *implData) +static GtkWidget *testControlHandle(uiControl *c, void *implData) { + struct testControlImplData *ti = (struct testControlImplData *) implData; + + if (ti->realOSVtable != NULL && ti->realOSVtable->Handle != NULL) + return (*(ti->realOSVtable->Handle))(c, ti->realImplData); return NULL; } static const uiControlOSVtable osVtable = { .Size = sizeof (uiControlOSVtable), - .Handle = osVtableNopHandle, + .Handle = testControlHandle, }; -const uiControlOSVtable *testOSVtable(void) +const uiControlOSVtable *testControlOSVtable(void) { return &osVtable; } Test(WrongControlOSVtableSizeIsProgrammerError) { - uiControlVtable vtable; uiControlOSVtable osvt; void *ctx; - testControlLoadNopVtable(&vtable); ctx = beginCheckProgrammerError("uiRegisterControlType(): wrong size 1 for uiControlOSVtable"); memset(&osvt, 0, sizeof (uiControlOSVtable)); osvt.Size = 1; - uiRegisterControlType("name", &vtable, &osvt, 0); + uiRegisterControlType("name", testControlVtable(), &osvt, 0); endCheckProgrammerError(ctx); } Test(ControlOSVtableWithMissingHandleMethodIsProgrammerError) { - uiControlVtable vtable; uiControlOSVtable osvt; void *ctx; - testControlLoadNopVtable(&vtable); ctx = beginCheckProgrammerError("uiRegisterControlType(): required uiControlOSVtable method Handle() missing for uiControl type name"); osvt = osVtable; osvt.Handle = NULL; - uiRegisterControlType("name", &vtable, &osvt, 0); + uiRegisterControlType("name", testControlVtable(), &osvt, 0); endCheckProgrammerError(ctx); } diff --git a/unix/window.c b/unix/window.c index 14328f99..63602fce 100644 --- a/unix/window.c +++ b/unix/window.c @@ -1,6 +1,16 @@ // 11 june 2015 #include "uipriv_unix.h" +uiControl *uiprivSysWindowChild(uiWindow *w) +{ + // TODO + return NULL; +} +void uiprivSysWindowSetChild(uiWindow *w, uiControl *child) +{ + // TODO +} + struct windowImplData { GtkWidget *widget; GtkContainer *container;