diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/gwin/gwin.c | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/src/gwin/gwin.c b/src/gwin/gwin.c index 057fd6e0..6d47f3b5 100644 --- a/src/gwin/gwin.c +++ b/src/gwin/gwin.c @@ -219,7 +219,18 @@ void gwinSetVisible(GHandle gh, bool_t visible) { } bool_t gwinGetVisible(GHandle gh) { - return (gh->flags & GWIN_FLG_VISIBLE) ? TRUE : FALSE; + #if GWIN_NEED_HIERARCHY + // return TRUE if all widgets (itself + parents) are visble, false otherwise + GHandle e = gh; + while (e) { + if (!(e->flags & GWIN_FLG_VISIBLE)) + return FALSE; + e = e->parent; + }; + return TRUE; + #else + return (gh->flags & GWIN_FLG_VISIBLE) ? TRUE : FALSE; + #endif } void gwinSetEnabled(GHandle gh, bool_t enabled) { @@ -238,13 +249,14 @@ void gwinSetEnabled(GHandle gh, bool_t enabled) { bool_t gwinGetEnabled(GHandle gh) { #if GWIN_NEED_HIERARCHY + // return TRUE if all widgets (itself + parents) are enabled, false otherwise GHandle e = gh; while (e) { - if ( e->flags & GWIN_FLG_ENABLED); - return TRUE; + if (!(e->flags & GWIN_FLG_ENABLED)) + return FALSE; e = e->parent; }; - return FALSE; + return TRUE; #else return (gh->flags & GWIN_FLG_ENABLED) ? TRUE : FALSE; #endif |