예제 #1
0
void BasicContainer::add(Widget* widget)
{
    mWidgets.push_back(widget);

    if (mInternalFocusHandler == NULL)
    {
        widget->_setFocusHandler(_getFocusHandler());
    }
    else
    {
        widget->_setFocusHandler(mInternalFocusHandler);
    }

    widget->_setParent(this);
    widget->addDeathListener(this);
}
예제 #2
0
void BasicContainer::setInternalFocusHandler(FocusHandler* focusHandler)
{
    Widget::setInternalFocusHandler(focusHandler);

    WidgetListIterator iter;
    for (iter = mWidgets.begin(); iter != mWidgets.end(); iter++)
    {
        if (mInternalFocusHandler == NULL)
        {
            (*iter)->_setFocusHandler(_getFocusHandler());
        }
        else
        {
            (*iter)->_setFocusHandler(mInternalFocusHandler);
        }
    }
}
예제 #3
0
파일: table.cpp 프로젝트: Ablu/invertika
void GuiTable::installActionListeners()
{
    if (!mModel)
        return;

    int rows = mModel->getRows();
    int columns = mModel->getColumns();

    for (int row = 0; row < rows; ++row)
        for (int column = 0; column < columns; ++column)
        {
            gcn::Widget *widget = mModel->getElementAt(row, column);
            mActionListeners.push_back(new GuiTableActionListener(this, widget,
                                                                  row, column));
        }

    _setFocusHandler(_getFocusHandler()); // propagate focus handler to widgets
}
예제 #4
0
    void ScrollArea::setContent(Widget* widget)
    {
        if (mContent != NULL)
        {
            mContent->_setFocusHandler(NULL);
            mContent->_setParent(NULL);
        }
    
        mContent = widget;

        if (mContent != NULL)
        {
            mContent->_setFocusHandler(_getFocusHandler());
            mContent->_setParent(this);
        }

        checkPolicies();
    }
예제 #5
0
파일: window.cpp 프로젝트: Aethyra/Client
void Window::clear()
{
    gui->storeFocus();

    gcn::BasicContainer::clear();

    // Restore the resize grip
    if (mGrip)
        add(mGrip);

    if (mClose)
    {
        mClose->_setParent(this);
        mClose->_setFocusHandler(_getFocusHandler());        
    }

    if (mLayout)
        destroy(mLayout);
}
예제 #6
0
파일: window.cpp 프로젝트: Aethyra/Client
void Window::setCloseButton(bool flag)
{
    if ((bool) mClose == flag)
        return;

    if (flag)
    {
        mClose = new ImageButton(mSkin->getCloseImage(), "close", this);
        mClose->setX(getWidth() - getPadding() - mClose->getWidth());
        mClose->setY(getPadding());

        // This is basically the same as a BasicContainer::add(), which wasn't
        // used so that we can ignore the child container dimensions.
        mClose->_setParent(this);
        mClose->_setFocusHandler(_getFocusHandler());
    }
    else
    {
        mClose->_setFocusHandler(NULL);
        mClose->_setParent(NULL);
        destroy(mClose);
    }
}
예제 #7
0
 void Container::add(Widget* widget)
 {
     mWidgets.push_back(widget);
     widget->_setFocusHandler(_getFocusHandler());
     widget->_setParent(this);
 }