diff options
Diffstat (limited to 'client/widgets/widget.cc')
-rw-r--r-- | client/widgets/widget.cc | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/client/widgets/widget.cc b/client/widgets/widget.cc index 9ebed55..cc74553 100644 --- a/client/widgets/widget.cc +++ b/client/widgets/widget.cc @@ -112,6 +112,7 @@ bool Widget::local() bool Widget::valid(bool deep) { if(enabled() == false) return true; + if(visible() == false) return true; if(preValid() == false) return false; if(is_valid == false) return false; @@ -139,10 +140,18 @@ void Widget::setValid(bool valid) } } -void Widget::eventOnChange() +void Widget::eventOnChange(bool deep) { if(enabled() && hasOnChangeEvent) lua->runScript(onChangeEventScript, this, "onChange"); + + if(!deep) return; + + QVector< Widget* >::iterator i = children.begin(); + while(i != children.end()) { + if(*i) (*i)->eventOnChange(deep); + i++; + } } void Widget::setEnabled(bool enabled) @@ -153,7 +162,7 @@ void Widget::setEnabled(bool enabled) QVector< Widget* >::iterator i = children.begin(); while(i != children.end()) { - if(*i) (*i)->setEnabled(enabled); + if(*i) (*i)->eventOnChange(true); i++; } @@ -168,6 +177,12 @@ void Widget::setVisible(bool visible) { widget->setVisible(visible); if(visible) eventOnChange(); + + QVector< Widget* >::iterator i = children.begin(); + while(i != children.end()) { + if(*i) (*i)->eventOnChange(true); + i++; + } } bool Widget::visible() |