diff options
author | senator <elsenator@gmail.com> | 2011-12-01 15:58:45 +0100 |
---|---|---|
committer | senator <elsenator@gmail.com> | 2011-12-01 15:58:45 +0100 |
commit | bf3029b893e7138593d2d185d4ce9de26491a15e (patch) | |
tree | 557cd81a1cd3f192346dca187f006f7814d8a5e3 /client/widgets/widget.cc | |
parent | 9989ea2f6bfa19bd349bbbdec8ec3f56c1427245 (diff) | |
parent | 5ed7a801b4194e72cc3898de57fb1d9ea0e8caa4 (diff) |
Merge branch 'master' of http://git.aasimon.org/public/pracro
Diffstat (limited to 'client/widgets/widget.cc')
-rw-r--r-- | client/widgets/widget.cc | 34 |
1 files changed, 27 insertions, 7 deletions
diff --git a/client/widgets/widget.cc b/client/widgets/widget.cc index ac90ef2..a57eb78 100644 --- a/client/widgets/widget.cc +++ b/client/widgets/widget.cc @@ -313,8 +313,26 @@ bool Widget::hidden() bool Widget::setKeyboardFocus() { - widget->setFocus(); - return true; + if((widget->focusPolicy() & Qt::TabFocus) != 0) { + widget->setFocus(); + return true; + } + + return false; +} + +bool Widget::setKeyboardFocusRecursive() +{ + if(setKeyboardFocus()) return true; + + QVector< Widget* >::iterator i = children.begin(); + while(i != children.end()) { + Widget *w = *i; + if(w && w->setKeyboardFocusRecursive()) return true; + i++; + } + + return false; } Widget *Widget::findWidget(QString n, bool deep) @@ -514,11 +532,13 @@ void Widget::createWidget(QDomNode &xml_node, QLayout *layout) } - addChild(widget); - - if(layout) layout->addWidget(widget->qwidget()); - - if(widget && widget->qwidget()) widget->qwidget()->show(); + if(widget) { + addChild(widget); + if(widget->qwidget()) { + if(layout) layout->addWidget(widget->qwidget()); + widget->qwidget()->show(); + } + } } int wdg_name(lua_State *L) |