Ignore:
Timestamp:
Feb 11, 2010, 11:19:06 PM (15 years ago)
Author:
Dmitry A. Kuminov
Message:

trunk: Merged in qt 4.6.1 sources.

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk

  • trunk/src/gui/widgets/qmainwindowlayout.cpp

    r2 r561  
    22**
    33** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
    4 ** Contact: Qt Software Information (qt-info@nokia.com)
     4** All rights reserved.
     5** Contact: Nokia Corporation (qt-info@nokia.com)
    56**
    67** This file is part of the QtGui module of the Qt Toolkit.
     
    2122** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
    2223**
    23 ** In addition, as a special exception, Nokia gives you certain
    24 ** additional rights. These rights are described in the Nokia Qt LGPL
    25 ** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
    26 ** package.
     24** In addition, as a special exception, Nokia gives you certain additional
     25** rights.  These rights are described in the Nokia Qt LGPL Exception
     26** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
    2727**
    2828** GNU General Public License Usage
     
    3434** met: http://www.gnu.org/copyleft/gpl.html.
    3535**
    36 ** If you are unsure which license is appropriate for your use, please
    37 ** contact the sales department at qt-sales@nokia.com.
     36** If you have questions regarding the use of this file, please contact
     37** Nokia at qt-info@nokia.com.
    3838** $QT_END_LICENSE$
    3939**
     
    238238        QMainWindowLayout *layout = qobject_cast<QMainWindowLayout*>(mainWindow->layout());
    239239        Q_ASSERT(layout != 0);
    240         layout->widgetAnimator->animate(centralWidgetItem->widget(), centralWidgetRect, animated);
     240        layout->widgetAnimator.animate(centralWidgetItem->widget(), centralWidgetRect, animated);
    241241    }
    242242#endif
     
    427427}
    428428
    429 bool QMainWindowLayoutState::insertGap(QList<int> path, QLayoutItem *item)
     429bool QMainWindowLayoutState::insertGap(const QList<int> &path, QLayoutItem *item)
    430430{
    431431    if (path.isEmpty())
    432432        return false;
    433433
    434     int i = path.takeFirst();
     434    int i = path.first();
    435435
    436436#ifndef QT_NO_TOOLBAR
    437437    if (i == 0) {
    438438        Q_ASSERT(qobject_cast<QToolBar*>(item->widget()) != 0);
    439         return toolBarAreaLayout.insertGap(path, item);
     439        return toolBarAreaLayout.insertGap(path.mid(1), item);
    440440    }
    441441#endif
     
    444444    if (i == 1) {
    445445        Q_ASSERT(qobject_cast<QDockWidget*>(item->widget()) != 0);
    446         return dockAreaLayout.insertGap(path, item);
     446        return dockAreaLayout.insertGap(path.mid(1), item);
    447447    }
    448448#endif //QT_NO_DOCKWIDGET
     
    451451}
    452452
    453 void QMainWindowLayoutState::remove(QList<int> path)
    454 {
    455     int i = path.takeFirst();
     453void QMainWindowLayoutState::remove(const QList<int> &path)
     454{
     455    int i = path.first();
    456456
    457457#ifndef QT_NO_TOOLBAR
    458458    if (i == 0)
    459         toolBarAreaLayout.remove(path);
     459        toolBarAreaLayout.remove(path.mid(1));
    460460#endif
    461461
    462462#ifndef QT_NO_DOCKWIDGET
    463463    if (i == 1)
    464         dockAreaLayout.remove(path);
     464        dockAreaLayout.remove(path.mid(1));
    465465#endif //QT_NO_DOCKWIDGET
    466466}
     
    491491    dockAreaLayout.clear();
    492492#else
    493     centralWidgetRect = QRect(0, 0, -1, -1);
    494 #endif
    495 
    496     rect = QRect(0, 0, -1, -1);
     493    centralWidgetRect = QRect();
     494#endif
     495
     496    rect = QRect();
    497497}
    498498
     
    502502}
    503503
    504 QLayoutItem *QMainWindowLayoutState::item(QList<int> path)
    505 {
    506     int i = path.takeFirst();
     504QLayoutItem *QMainWindowLayoutState::item(const QList<int> &path)
     505{
     506    int i = path.first();
    507507
    508508#ifndef QT_NO_TOOLBAR
    509509    if (i == 0)
    510         return toolBarAreaLayout.item(path).widgetItem;
     510        return toolBarAreaLayout.item(path.mid(1)).widgetItem;
    511511#endif
    512512
    513513#ifndef QT_NO_DOCKWIDGET
    514514    if (i == 1)
    515         return dockAreaLayout.item(path).widgetItem;
     515        return dockAreaLayout.item(path.mid(1)).widgetItem;
    516516#endif //QT_NO_DOCKWIDGET
    517517
     
    519519}
    520520
    521 QRect QMainWindowLayoutState::itemRect(QList<int> path) const
    522 {
    523     int i = path.takeFirst();
     521QRect QMainWindowLayoutState::itemRect(const QList<int> &path) const
     522{
     523    int i = path.first();
    524524
    525525#ifndef QT_NO_TOOLBAR
    526526    if (i == 0)
    527         return toolBarAreaLayout.itemRect(path);
     527        return toolBarAreaLayout.itemRect(path.mid(1));
    528528#endif
    529529
    530530#ifndef QT_NO_DOCKWIDGET
    531531    if (i == 1)
    532         return dockAreaLayout.itemRect(path);
     532        return dockAreaLayout.itemRect(path.mid(1));
    533533#endif //QT_NO_DOCKWIDGET
    534534
     
    536536}
    537537
    538 QRect QMainWindowLayoutState::gapRect(QList<int> path) const
    539 {
    540     int i = path.takeFirst();
     538QRect QMainWindowLayoutState::gapRect(const QList<int> &path) const
     539{
     540    int i = path.first();
    541541
    542542#ifndef QT_NO_TOOLBAR
    543543    if (i == 0)
    544         return toolBarAreaLayout.itemRect(path);
     544        return toolBarAreaLayout.itemRect(path.mid(1));
    545545#endif
    546546
    547547#ifndef QT_NO_DOCKWIDGET
    548548    if (i == 1)
    549         return dockAreaLayout.gapRect(path);
     549        return dockAreaLayout.gapRect(path.mid(1));
    550550#endif //QT_NO_DOCKWIDGET
    551551
     
    553553}
    554554
    555 QLayoutItem *QMainWindowLayoutState::plug(QList<int> path)
    556 {
    557     int i = path.takeFirst();
     555QLayoutItem *QMainWindowLayoutState::plug(const QList<int> &path)
     556{
     557    int i = path.first();
    558558
    559559#ifndef QT_NO_TOOLBAR
    560560    if (i == 0)
    561         return toolBarAreaLayout.plug(path);
     561        return toolBarAreaLayout.plug(path.mid(1));
    562562#endif
    563563
    564564#ifndef QT_NO_DOCKWIDGET
    565565    if (i == 1)
    566         return dockAreaLayout.plug(path);
     566        return dockAreaLayout.plug(path.mid(1));
    567567#endif //QT_NO_DOCKWIDGET
    568568
     
    570570}
    571571
    572 QLayoutItem *QMainWindowLayoutState::unplug(QList<int> path, QMainWindowLayoutState *other)
    573 {
    574     int i = path.takeFirst();
     572QLayoutItem *QMainWindowLayoutState::unplug(const QList<int> &path, QMainWindowLayoutState *other)
     573{
     574    int i = path.first();
    575575
    576576#ifdef QT_NO_TOOLBAR
     
    578578#else
    579579    if (i == 0)
    580         return toolBarAreaLayout.unplug(path, other ? &other->toolBarAreaLayout : 0);
     580        return toolBarAreaLayout.unplug(path.mid(1), other ? &other->toolBarAreaLayout : 0);
    581581#endif
    582582
    583583#ifndef QT_NO_DOCKWIDGET
    584584    if (i == 1)
    585         return dockAreaLayout.unplug(path);
     585        return dockAreaLayout.unplug(path.mid(1));
    586586#endif //QT_NO_DOCKWIDGET
    587587
     
    940940void QMainWindowLayout::toggleToolBarsVisible()
    941941{
    942     layoutState.toolBarAreaLayout.visible = !layoutState.toolBarAreaLayout.visible;
    943     if (!layoutState.mainWindow->isMaximized()){
    944         QPoint topLeft = parentWidget()->geometry().topLeft();
    945         QRect r = parentWidget()->geometry();
    946         r = layoutState.toolBarAreaLayout.rectHint(r);
    947         r.moveTo(topLeft);
    948         parentWidget()->setGeometry(r);
    949 //      widgetAnimator->animate(parentWidget(), r, true);
    950     } else{
    951         update();
     942    bool updateNonUnifiedParts = true;
     943#ifdef Q_WS_MAC
     944    if (layoutState.mainWindow->unifiedTitleAndToolBarOnMac()) {
     945        // If we hit this case, someone has pressed the "toolbar button" which will
     946        // toggle the unified toolbar visiblity, because that's what the user wants.
     947        // We might be in a situation where someone has hidden all the toolbars
     948        // beforehand (maybe in construction), but now they've hit this button and
     949        // and are expecting the items to show. What do we do?
     950        // 1) Check the visibility of all the toolbars, if one is visible, do nothing, this
     951        //    preserves what people would expect (these toolbars were visible when I clicked last time).
     952        // 2) If NONE are visible, then show them all. Again, this preserves the user expectation
     953        //    of, "I want to see the toolbars." The user may get more toolbars than expected, but this
     954        //    is better seeing nothing.
     955        // Don't worry about any of this if we are going invisible. This does mean we may get
     956        // into issues when switching into and out of fullscreen mode, but this is probably minor.
     957        // If we ever need to do hiding, that would have to be taken care of after the unified toolbar
     958        // has finished hiding.
     959        // People can of course handle the QEvent::ToolBarChange event themselves and do
     960        // WHATEVER they want if they don't like what we are doing (though the unified toolbar
     961        // will fire regardless).
     962
     963        // Check if we REALLY need to update the geometry below. If we only have items in the
     964        // unified toolbar, all the docks will be empty, so there's very little point
     965        // in doing the geometry as Apple will do it (we also avoid flicker in Cocoa as well).
     966        // FWIW, layoutState.toolBarAreaLayout.visible and the state of the unified toolbar
     967        // visibility can get out of sync. I really don't think it's a big issue. It is kept
     968        // to a minimum because we only change the visibility if we absolutely must.
     969        // update the "non unified parts."
     970        updateNonUnifiedParts = !layoutState.toolBarAreaLayout.isEmpty();
     971
     972        // We get this function before the unified toolbar does its thing.
     973        // So, the value will be opposite of what we expect.
     974        bool goingVisible = !macWindowToolbarIsVisible(qt_mac_window_for(layoutState.mainWindow));
     975        if (goingVisible) {
     976            const int ToolBarCount = qtoolbarsInUnifiedToolbarList.size();
     977            bool needAllVisible = true;
     978            for (int i = 0; i < ToolBarCount; ++i) {
     979                if (!qtoolbarsInUnifiedToolbarList.at(i)->isHidden()) {
     980                    needAllVisible = false;
     981                    break;
     982                }
     983            }
     984            if (needAllVisible) {
     985                QBoolBlocker blocker(blockVisiblityCheck);  // Disable the visibilty check because
     986                                                            // the toggle has already happened.
     987                for (int i = 0; i < ToolBarCount; ++i)
     988                    qtoolbarsInUnifiedToolbarList.at(i)->setVisible(true);
     989            }
     990        }
     991        if (!updateNonUnifiedParts)
     992            layoutState.toolBarAreaLayout.visible = goingVisible;
     993    }
     994#endif
     995    if (updateNonUnifiedParts) {
     996        layoutState.toolBarAreaLayout.visible = !layoutState.toolBarAreaLayout.visible;
     997        if (!layoutState.mainWindow->isMaximized()) {
     998            QPoint topLeft = parentWidget()->geometry().topLeft();
     999            QRect r = parentWidget()->geometry();
     1000            r = layoutState.toolBarAreaLayout.rectHint(r);
     1001            r.moveTo(topLeft);
     1002            parentWidget()->setGeometry(r);
     1003        } else {
     1004            update();
     1005        }
    9521006    }
    9531007}
     
    13051359        return false;
    13061360    movingSeparatorPos = pos;
    1307     separatorMoveTimer->start();
     1361    separatorMoveTimer.start(0, this);
    13081362    return true;
    1309 }
    1310 
    1311 void QMainWindowLayout::doSeparatorMove()
    1312 {
    1313     if (movingSeparator.isEmpty())
    1314         return;
    1315     if (movingSeparatorOrigin == movingSeparatorPos)
    1316         return;
    1317 
    1318     layoutState = savedState;
    1319     layoutState.dockAreaLayout.separatorMove(movingSeparator, movingSeparatorOrigin,
    1320                                                 movingSeparatorPos,
    1321                                                 &separatorMoveCache);
    1322     movingSeparatorPos = movingSeparatorOrigin;
    13231363}
    13241364
     
    13281368    movingSeparator.clear();
    13291369    savedState.clear();
    1330     separatorMoveCache.clear();
    13311370    return result;
    13321371}
     
    13771416        // the widget might in fact have been destroyed by now
    13781417        if (QWidget *w = ret->widget()) {
    1379             widgetAnimator->abort(w);
     1418            widgetAnimator.abort(w);
    13801419            if (w == pluggingWidget)
    13811420                pluggingWidget = 0;
     
    14251464                  .expandedTo(statusbar->minimumSize()));
    14261465        sbr.moveBottom(r.bottom());
    1427         QRect vr = QStyle::visualRect(QApplication::layoutDirection(), _r, sbr);
     1466        QRect vr = QStyle::visualRect(parentWidget()->layoutDirection(), _r, sbr);
    14281467        statusbar->setGeometry(vr);
    14291468        r.setBottom(sbr.top() - 1);
     
    15441583
    15451584    pluggingWidget = widget;
    1546     if (dockOptions & QMainWindow::AnimatedDocks) {
    1547         QRect globalRect = currentGapRect;
    1548         globalRect.moveTopLeft(parentWidget()->mapToGlobal(globalRect.topLeft()));
    1549 #ifndef QT_NO_DOCKWIDGET
    1550         if (qobject_cast<QDockWidget*>(widget) != 0) {
    1551             QDockWidgetLayout *layout = qobject_cast<QDockWidgetLayout*>(widget->layout());
    1552             if (layout->nativeWindowDeco()) {
    1553                 globalRect.adjust(0, layout->titleHeight(), 0, 0);
    1554             } else {
    1555                 int fw = widget->style()->pixelMetric(QStyle::PM_DockWidgetFrameWidth, 0, widget);
    1556                 globalRect.adjust(-fw, -fw, fw, fw);
    1557             }
     1585    QRect globalRect = currentGapRect;
     1586    globalRect.moveTopLeft(parentWidget()->mapToGlobal(globalRect.topLeft()));
     1587#ifndef QT_NO_DOCKWIDGET
     1588    if (qobject_cast<QDockWidget*>(widget) != 0) {
     1589        QDockWidgetLayout *layout = qobject_cast<QDockWidgetLayout*>(widget->layout());
     1590        if (layout->nativeWindowDeco()) {
     1591            globalRect.adjust(0, layout->titleHeight(), 0, 0);
     1592        } else {
     1593            int fw = widget->style()->pixelMetric(QStyle::PM_DockWidgetFrameWidth, 0, widget);
     1594            globalRect.adjust(-fw, -fw, fw, fw);
    15581595        }
    1559 #endif
    1560         widgetAnimator->animate(widget, globalRect,
    1561                                 dockOptions & QMainWindow::AnimatedDocks);
    1562     } else {
    1563 #ifndef QT_NO_DOCKWIDGET
    1564         if (QDockWidget *dw = qobject_cast<QDockWidget*>(widget))
    1565             dw->d_func()->plug(currentGapRect);
    1566 #endif
    1567 #ifndef QT_NO_TOOLBAR
    1568         if (QToolBar *tb = qobject_cast<QToolBar*>(widget))
    1569             tb->d_func()->plug(currentGapRect);
    1570 #endif
    1571         applyState(layoutState);
    1572         savedState.clear();
    1573 #ifndef QT_NO_DOCKWIDGET
    1574         parentWidget()->update(layoutState.dockAreaLayout.separatorRegion());
    1575 #endif
    1576         currentGapPos.clear();
    1577         updateGapIndicator();
    1578         pluggingWidget = 0;
    1579     }
     1596    }
     1597#endif
     1598    widgetAnimator.animate(widget, globalRect, dockOptions & QMainWindow::AnimatedDocks);
    15801599
    15811600    return true;
    15821601}
    15831602
    1584 void QMainWindowLayout::allAnimationsFinished()
    1585 {
    1586 #ifndef QT_NO_DOCKWIDGET
    1587     parentWidget()->update(layoutState.dockAreaLayout.separatorRegion());
    1588 
    1589 #ifndef QT_NO_TABBAR
    1590     foreach (QTabBar *tab_bar, usedTabBars)
    1591         tab_bar->show();
    1592 #endif // QT_NO_TABBAR
    1593 #endif // QT_NO_DOCKWIDGET
    1594 
    1595     updateGapIndicator();
    1596 }
    1597 
    15981603void QMainWindowLayout::animationFinished(QWidget *widget)
    15991604{
    1600 
    1601     /* This signal is delivered from QWidgetAnimator over a qeued connection. The problem is that
    1602        the widget can be deleted. This is handled as follows:
    1603 
    1604        The animator only ever animates widgets that have been added to this layout. If a widget
    1605        is deleted during animation, the widget's destructor removes the widget form this layout.
    1606        This in turn aborts the animation (see takeAt()) and this signal will never be delivered.
    1607 
    1608        If the widget is deleted after the animation is finished but before this qeued signal
    1609        is delivered, the widget is no longer in the layout and we catch it here. The key is that
    1610        QMainWindowLayoutState::contains() never dereferences the pointer. */
    1611 
    1612     if (!layoutState.contains(widget))
    1613         return;
    1614 
     1605    //this function is called from within the Widget Animator whenever an animation is finished
     1606    //on a certain widget
    16151607#ifndef QT_NO_TOOLBAR
    16161608    if (QToolBar *tb = qobject_cast<QToolBar*>(widget)) {
     
    16251617#endif
    16261618
    1627     if (widget != pluggingWidget)
    1628         return;
    1629 
    1630 #ifndef QT_NO_DOCKWIDGET
    1631     if (QDockWidget *dw = qobject_cast<QDockWidget*>(widget))
    1632         dw->d_func()->plug(currentGapRect);
    1633 #endif
    1634 #ifndef QT_NO_TOOLBAR
    1635     if (QToolBar *tb = qobject_cast<QToolBar*>(widget))
    1636         tb->d_func()->plug(currentGapRect);
    1637 #endif
    1638 
    1639     applyState(layoutState, false);
     1619    if (widget == pluggingWidget) {
     1620
     1621#ifndef QT_NO_DOCKWIDGET
     1622        if (QDockWidget *dw = qobject_cast<QDockWidget*>(widget))
     1623            dw->d_func()->plug(currentGapRect);
     1624#endif
     1625#ifndef QT_NO_TOOLBAR
     1626        if (QToolBar *tb = qobject_cast<QToolBar*>(widget))
     1627            tb->d_func()->plug(currentGapRect);
     1628#endif
     1629
    16401630#ifndef QT_NO_DOCKWIDGET
    16411631#ifndef QT_NO_TABBAR
    1642     if (qobject_cast<QDockWidget*>(widget) != 0) {
    1643         // info() might return null if the widget is destroyed while
    1644         // animating but before the animationFinished signal is received.
    1645         if (QDockAreaLayoutInfo *info = layoutState.dockAreaLayout.info(widget))
    1646             info->setCurrentTab(widget);
    1647     }
    1648 #endif
    1649 #endif
    1650     savedState.clear();
    1651     currentGapPos.clear();
    1652     pluggingWidget = 0;
     1632        if (qobject_cast<QDockWidget*>(widget) != 0) {
     1633            // info() might return null if the widget is destroyed while
     1634            // animating but before the animationFinished signal is received.
     1635            if (QDockAreaLayoutInfo *info = layoutState.dockAreaLayout.info(widget))
     1636                info->setCurrentTab(widget);
     1637        }
     1638#endif
     1639#endif
     1640
     1641        savedState.clear();
     1642        currentGapPos.clear();
     1643        pluggingWidget = 0;
     1644        //applying the state will make sure that the currentGap is updated correctly
     1645        //and all the geometries (especially the one from the central widget) is correct
     1646        layoutState.apply(false);
     1647    }
     1648
     1649    if (!widgetAnimator.animating()) {
     1650        //all animations are finished
     1651#ifndef QT_NO_DOCKWIDGET
     1652        parentWidget()->update(layoutState.dockAreaLayout.separatorRegion());
     1653#ifndef QT_NO_TABBAR
     1654        foreach (QTabBar *tab_bar, usedTabBars)
     1655            tab_bar->show();
     1656#endif // QT_NO_TABBAR
     1657#endif // QT_NO_DOCKWIDGET
     1658    }
     1659
    16531660    updateGapIndicator();
    16541661}
     
    16831690#endif
    16841691#endif // QT_NO_DOCKWIDGET
     1692    , widgetAnimator(this)
     1693    , pluggingWidget(0)
     1694#ifndef QT_NO_RUBBERBAND
     1695    , gapIndicator(new QRubberBand(QRubberBand::Rectangle, mainwindow))
     1696#endif //QT_NO_RUBBERBAND
     1697#ifdef Q_WS_MAC
     1698    , blockVisiblityCheck(false)
     1699#endif
    16851700{
    16861701#ifndef QT_NO_DOCKWIDGET
     
    16881703    sep = mainwindow->style()->pixelMetric(QStyle::PM_DockWidgetSeparatorExtent, 0, mainwindow);
    16891704#endif
    1690     separatorMoveTimer = new QTimer(this);
    1691     separatorMoveTimer->setSingleShot(true);
    1692     separatorMoveTimer->setInterval(0);
    1693     connect(separatorMoveTimer, SIGNAL(timeout()), this, SLOT(doSeparatorMove()));
    16941705
    16951706#ifndef QT_NO_TABWIDGET
     
    17001711
    17011712#ifndef QT_NO_RUBBERBAND
    1702     gapIndicator = new QRubberBand(QRubberBand::Rectangle, mainwindow);
    17031713    // For accessibility to identify this special widget.
    17041714    gapIndicator->setObjectName(QLatin1String("qt_rubberband"));
    1705 
    17061715    gapIndicator->hide();
    17071716#endif
     
    17091718
    17101719    setObjectName(mainwindow->objectName() + QLatin1String("_layout"));
    1711     widgetAnimator = new QWidgetAnimator(this);
    1712     connect(widgetAnimator, SIGNAL(finished(QWidget*)),
    1713             this, SLOT(animationFinished(QWidget*)), Qt::QueuedConnection);
    1714     connect(widgetAnimator, SIGNAL(finishedAll()),
    1715             this, SLOT(allAnimationsFinished()));
    17161720}
    17171721
     
    18151819{
    18161820#ifndef QT_NO_RUBBERBAND
    1817     if (widgetAnimator->animating() || currentGapPos.isEmpty()) {
    1818         gapIndicator->hide();
    1819     } else {
    1820         if (gapIndicator->geometry() != currentGapRect)
    1821             gapIndicator->setGeometry(currentGapRect);
    1822         if (!gapIndicator->isVisible())
    1823             gapIndicator->show();
    1824     }
     1821    gapIndicator->setVisible(!widgetAnimator.animating() && !currentGapPos.isEmpty());
     1822    gapIndicator->setGeometry(currentGapRect);
    18251823#endif
    18261824}
     
    19831981}
    19841982
     1983void QMainWindowLayout::timerEvent(QTimerEvent *e)
     1984{
     1985#ifndef QT_NO_DOCKWIDGET
     1986    if (e->timerId() == separatorMoveTimer.timerId()) {
     1987        //let's move the separators
     1988        separatorMoveTimer.stop();
     1989        if (movingSeparator.isEmpty())
     1990            return;
     1991        if (movingSeparatorOrigin == movingSeparatorPos)
     1992            return;
     1993
     1994        //when moving the separator, we need to update the previous position
     1995        parentWidget()->update(layoutState.dockAreaLayout.separatorRegion());
     1996
     1997        layoutState = savedState;
     1998        layoutState.dockAreaLayout.separatorMove(movingSeparator, movingSeparatorOrigin,
     1999                                                    movingSeparatorPos);
     2000        movingSeparatorPos = movingSeparatorOrigin;
     2001    }
     2002#endif
     2003    QLayout::timerEvent(e);
     2004}
     2005
     2006
    19852007QT_END_NAMESPACE
    19862008
Note: See TracChangeset for help on using the changeset viewer.