aboutsummaryrefslogtreecommitdiffstats
path: root/src/gwin/gwin.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/gwin/gwin.c')
-rw-r--r--src/gwin/gwin.c20
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