QSplitterLayoutStruct *QSplitter::addWidget( QWidget *w, bool first ) { QSplitterLayoutStruct *s; QSplitterHandle *newHandle = 0; if ( data->list.count() > 0 ) { s = new QSplitterLayoutStruct; s->mode = KeepSize; newHandle = new QSplitterHandle( orientation(), this ); s->wid = newHandle; newHandle->setId(data->list.count()); s->isSplitter = TRUE; s->sizer = pick( newHandle->sizeHint() ); if ( first ) data->list.insert( 0, s ); else data->list.append( s ); } s = new QSplitterLayoutStruct; s->mode = Stretch; s->wid = w; if ( !testWState( WState_Resized ) && w->sizeHint().isValid() ) s->sizer = pick( w->sizeHint() ); else s->sizer = pick( w->size() ); s->isSplitter = FALSE; if ( first ) data->list.insert( 0, s ); else data->list.append( s ); if ( newHandle && isVisible() ) newHandle->show(); //will trigger sending of post events return s; }
QSplitterLayoutStruct *QSplitterPrivate::insertWidget(int index, QWidget *w) { Q_Q(QSplitter); QSplitterLayoutStruct *sls = 0; int i; int last = list.count(); for (i = 0; i < list.size(); ++i) { QSplitterLayoutStruct *s = list.at(i); if (s->widget == w) { sls = s; --last; break; } } if (index < 0 || index > last) index = last; if (sls) { list.move(i,index); } else { QSplitterHandle *newHandle = 0; sls = new QSplitterLayoutStruct; QString tmp = QLatin1String("qt_splithandle_"); tmp += w->objectName(); newHandle = q->createHandle(); newHandle->setObjectName(tmp); sls->handle = newHandle; sls->widget = w; w->lower(); list.insert(index,sls); if (newHandle && q->isVisible()) newHandle->show(); // will trigger sending of post events #ifdef QT3_SUPPORT if (compatMode) { int sf = getStretch(sls->widget); if (sf == 243) setStretch(sls->widget, 0); else if (sf == 0) setStretch(sls->widget, 1); } #endif } return sls; }