VirtualBox

Changeset 8370 in vbox for trunk/src/VBox


Ignore:
Timestamp:
Apr 24, 2008 4:49:18 PM (17 years ago)
Author:
vboxsync
Message:

Fixed crash in SATA ui under Win32, list focusing fixed.

Location:
trunk/src/VBox/Frontends/VirtualBox/ui
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Frontends/VirtualBox/ui/VBoxHardDiskSettings.ui

    r8339 r8370  
    271271    <variable access="private">CMachine mMachine;</variable>
    272272    <variable access="private">QPopupMenu *mContextMenu;</variable>
    273     <variable access="private">bool mCBFocusOut;</variable>
    274273</variables>
    275274<signals>
  • trunk/src/VBox/Frontends/VirtualBox/ui/VBoxHardDiskSettings.ui.h

    r8338 r8370  
    345345        , mMachine (aMachine)
    346346        , mFocusColumn (-1)
     347        , mAutoFocus (false)
    347348    {
    348349        init();
     
    407408    {
    408409        mFocusColumn = aCol;
     410        mAutoFocus = mFocusColumn != -1;
    409411        repaint();
     412    }
     413
     414    void setAutoFocus (bool aOn)
     415    {
     416        mAutoFocus = aOn;
    410417    }
    411418
     
    486493            if (cb->isHidden())
    487494                cb->show();
    488             if (!cb->hasFocus())
    489                 cb->setFocus();
     495            if (mAutoFocus && !cb->hasFocus())
     496                QTimer::singleShot (0, cb, SLOT (setFocus()));
    490497        }
    491498        else if (aColumn != mFocusColumn && !cb->isHidden())
     
    512519    QPtrVector<QComboBox>  mVector;
    513520    int                    mFocusColumn;
     521    bool                   mAutoFocus;
    514522};
    515523
     
    527535{
    528536    mPrevItem = 0;
    529     mCBFocusOut = false;
    530537
    531538    /* toolbar */
     
    823830    if (aItem != mPrevItem)
    824831    {
     832        int prevFocusColumn =
     833            mPrevItem && mPrevItem->rtti() == HDListItem::HDListItemType ?
     834            static_cast<HDListItem*> (mPrevItem)->focusColumn() : 0;
     835
     836        if (mPrevItem && mPrevItem->rtti() == HDListItem::HDListItemType)
     837            static_cast<HDListItem*> (mPrevItem)->moveFocusToColumn (-1);
     838
    825839        if (aItem && aItem->rtti() == HDListItem::HDListItemType &&
    826840            static_cast<HDListItem*> (aItem)->focusColumn() == -1)
    827         {
    828             int prevFocusColumn = 0;
    829             if (mPrevItem && mPrevItem->rtti() == HDListItem::HDListItemType)
    830                 prevFocusColumn = static_cast<HDListItem*> (mPrevItem)->focusColumn();
    831841            static_cast<HDListItem*> (aItem)->moveFocusToColumn (prevFocusColumn);
    832         }
    833 
    834         if (mPrevItem && mPrevItem->rtti() == HDListItem::HDListItemType)
    835             static_cast<HDListItem*> (mPrevItem)->moveFocusToColumn (-1);
    836842
    837843        mPrevItem = aItem;
     
    960966                    item->focusColumn() > 0)
    961967                {
     968                    item->setAutoFocus (false);
    962969                    mLvHD->setFocus();
    963970                    item->moveFocusToColumn (item->focusColumn() - 1);
     
    972979                    item->focusColumn() < mLvHD->columns() - 1)
    973980                {
     981                    item->setAutoFocus (false);
    974982                    mLvHD->setFocus();
    975983                    item->moveFocusToColumn (item->focusColumn() + 1);
     
    984992                    item->itemAbove())
    985993                {
     994                    item->setAutoFocus (false);
    986995                    mLvHD->setFocus();
    987996                    mLvHD->setCurrentItem (item->itemAbove());
     
    989998                return true;
    990999            } else
    991             /* Process cursor-up as "move focus up" action */
     1000            /* Process cursor-down as "move focus down" action */
    9921001            if (e->key() == Qt::Key_Down && !e->state())
    9931002            {
     
    9951004                    item->itemBelow())
    9961005                {
     1006                    item->setAutoFocus (false);
    9971007                    mLvHD->setFocus();
    9981008                    mLvHD->setCurrentItem (item->itemBelow());
     
    10151025                    item->showEditor();
    10161026                return true;
     1027            } else
     1028            if ((e->key() == Qt::Key_Tab && !e->state()) ||
     1029                e->key() == Qt::Key_Backtab)
     1030            {
     1031                item->setAutoFocus (false);
     1032                mLvHD->setFocus();
    10171033            }
    10181034            break;
     
    10211037        case QEvent::FocusIn:
    10221038        {
    1023             if (aObject == mLvHD ||
    1024                 aObject->inherits ("HDSlotItem") ||
    1025                 aObject->inherits ("HDVdiItem"))
    1026                 mCBFocusOut = false;
    1027             else if (mCBFocusOut)
    1028             {
    1029                 mCBFocusOut = false;
    1030                 mLvHD->setFocus();
    1031                 focusNextPrevChild (true);
    1032                 return true;
    1033             }
    1034 
    10351039            if (aObject == mLvHD)
    10361040                onAfterCurrentChanged (mLvHD->currentItem());
    10371041            else if (!mGbHDList->queryList (0, 0, false, true)->contains (aObject))
    10381042                onAfterCurrentChanged (0);
    1039             break;
    1040         }
    1041         case QEvent::FocusOut:
    1042         {
    1043             if (aObject->className() == "HDSlotItem" ||
    1044                 aObject->className() == "HDVdiItem")
    1045                 mCBFocusOut = true;
    10461043
    10471044            break;
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette