void QDockArea::setFixedExtent( int d, QDockWindow *dw ) { QPtrList<QDockWindow> lst; QDockWindow *w; for ( w = dockWindows->first(); w; w = dockWindows->next() ) { if ( w->isHidden() ) continue; if ( orientation() == Horizontal ) { if ( dw->y() != w->y() ) continue; } else { if ( dw->x() != w->x() ) continue; } if ( orientation() == Horizontal ) d = QMAX( d, w->minimumHeight() ); else d = QMAX( d, w->minimumWidth() ); if ( w->isResizeEnabled() ) lst.append( w ); } for ( w = lst.first(); w; w = lst.next() ) { if ( orientation() == Horizontal ) w->setFixedExtentHeight( d ); else w->setFixedExtentWidth( d ); } }
QSize QDockAreaLayout::sizeHint() const { if ( !dockWindows || !dockWindows->first() ) return QSize( 0, 0 ); if ( dirty ) { QDockAreaLayout *that = (QDockAreaLayout *) this; that->layoutItems( geometry() ); } int w = 0; int h = 0; QPtrListIterator<QDockWindow> it( *dockWindows ); QDockWindow *dw = 0; it.toFirst(); int y = -1; int x = -1; int ph = 0; int pw = 0; while ( ( dw = it.current() ) != 0 ) { int plush = 0, plusw = 0; ++it; if ( dw->isHidden() ) continue; if ( hasHeightForWidth() ) { if ( y != dw->y() ) plush = ph; y = dw->y(); ph = dw->height(); } else { if ( x != dw->x() ) plusw = pw; x = dw->x(); pw = dw->width(); } h = QMAX( h, dw->height() + plush ); w = QMAX( w, dw->width() + plusw ); } if ( hasHeightForWidth() ) return QSize( 0, h ); return QSize( w, 0 ); }
bool QDockArea::isLastDockWindow( QDockWindow *dw ) { int i = dockWindows->find( dw ); if ( i == -1 || i >= (int)dockWindows->count() - 1 ) return TRUE; QDockWindow *w = 0; if ( ( w = dockWindows->at( ++i ) ) ) { if ( orientation() == Horizontal && dw->y() < w->y() ) return TRUE; if ( orientation() == Vertical && dw->x() < w->x() ) return TRUE; } else { return TRUE; } return FALSE; }