void StatusBarLayout::setGeometry( const QRect& _rect ) { QLayout::setGeometry( _rect ); if( mIsDirty ) updateLayoutStructs(); QRect rect( 0, 0, _rect.width(), _rect.height() ); const int margin = 0;//this->margin(); const int spacing = this->spacing(); int availableWidth = rect.size().width() - 2*margin; const int availableHeight = rect.size().height() - 2*margin; int usedWidth = 0; int visibleCount = 0; int i; for( i = 0; i<mWidgetList.count(); ++i ) { QWidgetItem* item = mWidgetList.at( i ); QWidget* widget = item->widget(); // TODO: is there really no way to get to the geometry data if a widget is hidden? if( widget->isHidden() ) widget->show(); const int itemWidth = item->sizeHint().width(); const int itemSpacing = ( visibleCount == 0 ) ? 0 : spacing; const int newUsedWidth = usedWidth + itemSpacing + itemWidth; // kDebug()<<widget<<<<availableWidth<<usedWidth<<itemWidth<<itemSpacing<<newUsedWidth; const bool isTooWide = ( newUsedWidth > availableWidth ); if( isTooWide ) break; const QPoint pos( margin + usedWidth, margin ); const QSize size( itemWidth, availableHeight ); QRect r( pos, size ); r = QStyle::visualRect( parentWidget()->layoutDirection(), rect, r ); item->setGeometry( r ); usedWidth = newUsedWidth; ++visibleCount; } // hide the rest if needed for( ; i<mWidgetList.count(); ++i ) { QWidgetItem* item = mWidgetList.at( i ); QWidget* widget = item->widget(); if( ! widget->isHidden() ) widget->hide(); } }
/*! \reimp */ int QAccessibleWidget::childAt(int x, int y) const { QWidget *w = widget(); if (!w->isVisible()) return -1; QPoint gp = w->mapToGlobal(QPoint(0, 0)); if (!QRect(gp.x(), gp.y(), w->width(), w->height()).contains(x, y)) return -1; QWidgetList list = childWidgets(w); int ccount = childCount(); // a complex child if (list.size() < ccount) { for (int i = 1; i <= ccount; ++i) { if (rect(i).contains(x, y)) return i; } return 0; } QPoint rp = w->mapFromGlobal(QPoint(x, y)); for (int i = 0; i<list.size(); ++i) { QWidget *child = list.at(i); if (!child->isWindow() && !child->isHidden() && child->geometry().contains(rp)) { return i + 1; } } return 0; }
void QSplitter::childEvent(QChildEvent *c) { Q_D(QSplitter); if (!c->child()->isWidgetType()) { if (c->type() == QEvent::ChildAdded && qobject_cast<QLayout *>(c->child())) qWarning("Adding a QLayout to a QSplitter is not supported."); return; } QWidget *w = static_cast<QWidget*>(c->child()); if (c->added() && !d->blockChildAdd && !w->isWindow() && !d->findWidget(w)) { d->insertWidget_helper(d->list.count(), w, false); } else if (c->polished() && !d->blockChildAdd) { if (isVisible() && !(w->isHidden() && w->testAttribute(Qt::WA_WState_ExplicitShowHide))) w->show(); } else if (c->type() == QEvent::ChildRemoved) { for (int i = 0; i < d->list.size(); ++i) { QSplitterLayoutStruct *s = d->list.at(i); if (s->widget == w) { d->list.removeAt(i); delete s; d->recalc(isVisible()); return; } } } }
void TabWidget::setCurrentIndex(int tabIndex) { QWidget *w = currentWidget(); const int current = (isTreeModeEnabled() && w != NULL && w->isHidden()) ? -1 : currentIndex(); if (tabIndex == current) return; if (tabIndex != -1) { m_stackedWidget->setCurrentIndex(tabIndex); w = currentWidget(); if (w == NULL) return; w->show(); if (isTreeModeEnabled() ? m_tabTree->hasFocus() : m_tabBar->hasFocus()) w->setFocus(); if ( isTreeModeEnabled() ) m_tabTree->setCurrentTabIndex(tabIndex); else m_tabBar->setCurrentIndex(tabIndex); } else if (w != NULL) { if (w->hasFocus()) isTreeModeEnabled() ? m_tabTree->setFocus() : m_tabBar->setFocus(); w->hide(); } emit currentChanged(tabIndex, current); }
void QSplitter::moveAfter( int pos, int id, bool upLeft ) { QSplitterLayoutStruct *s = id < int(data->list.count()) ? data->list.at(id) : 0; if ( !s ) return; QWidget *w = s->wid; if ( w->isHidden() ) { moveAfter( pos, id+1, upLeft ); } else if ( pick( w->pos() ) == pos ) { //No need to do anything if it's already there. return; } else if ( s->isSplitter ) { int dd = s->sizer; if ( upLeft ) { setG( w, pos, dd ); moveAfter( pos+dd, id+1, upLeft ); } else { moveAfter( pos+dd, id+1, upLeft ); setG( w, pos, dd ); } } else { int right = pick( w->geometry().bottomRight() ); int dd = right - pos + 1; dd = QMAX( pick(minSize(w)), QMIN(dd, pick(w->maximumSize()))); int newRight = pos+dd-1; setG( w, pos, dd ); moveAfter( newRight+1, id+1, upLeft ); } }
void QSplitterPrivate::doMove(bool backwards, int hPos, int index, int delta, bool mayCollapse, int *positions, int *widths) { if (index < 0 || index >= list.count()) return; #ifdef QSPLITTER_DEBUG qDebug() << "QSplitterPrivate::doMove" << backwards << hPos << index << delta << mayCollapse; #endif QSplitterLayoutStruct *s = list.at(index); QWidget *w = s->widget; int nextId = backwards ? index - delta : index + delta; if (w->isHidden()) { doMove(backwards, hPos, nextId, delta, collapsible(nextId), positions, widths); } else { int hs =s->handle->isHidden() ? 0 : s->getHandleSize(orient); int ws = backwards ? hPos - pick(s->rect.topLeft()) : pick(s->rect.bottomRight()) - hPos -hs + 1; if (ws > 0 || (!s->collapsed && !mayCollapse)) { ws = qMin(ws, pick(w->maximumSize())); ws = qMax(ws, pick(qSmartMinSize(w))); } else { ws = 0; } positions[index] = backwards ? hPos - ws : hPos + hs; widths[index] = ws; doMove(backwards, backwards ? hPos - ws - hs : hPos + hs + ws, nextId, delta, collapsible(nextId), positions, widths); } }
void QSplitter::moveBefore( int pos, int id, bool upLeft ) { QSplitterLayoutStruct *s = data->list.at(id); if ( !s ) return; QWidget *w = s->wid; if ( w->isHidden() ) { moveBefore( pos, id-1, upLeft ); } else if ( s->isSplitter ) { int dd = s->sizer; if ( upLeft ) { setG( w, pos-dd+1, dd ); moveBefore( pos-dd, id-1, upLeft ); } else { moveBefore( pos-dd, id-1, upLeft ); setG( w, pos-dd+1, dd ); } } else { int left = pick( w->pos() ); int dd = pos - left + 1; dd = QMAX( pick(minSize(w)), QMIN(dd, pick(w->maximumSize()))); int newLeft = pos-dd+1; setG( w, newLeft, dd ); if ( left != newLeft ) moveBefore( newLeft-1, id-1, upLeft ); } }
//=========================================================================== void DiffAnalystWindow::onCascade() { // from QWorkspace.cpp const int xoffset = 13; const int yoffset = 23; const int width = 640; const int height = 480; int x = 0; int y = 0; m_pWs->cascade (); int numWnd = m_pWs->windowList ().count (); for (int i = 0; i < numWnd; ++i) { QWidget *pWnd = m_pWs->windowList ().at (i); if (!pWnd->isHidden ()) { pWnd->showNormal (); pWnd->parentWidget ()->setGeometry (x, y, width, height); if ((y + yoffset + height) <= m_pWs->height ()) { x += xoffset; y += yoffset; } else { x = 0; y = 0; } } } }
bool QWidgetProto::isHidden() const { QWidget *item = qscriptvalue_cast<QWidget*>(thisObject()); if (item) return item->isHidden(); return false; }
void KompareSplitter::doMove( bool backwards, int pos, int id, int delta, bool mayCollapse, int* positions, int* widths ) { QSplitterLayoutStruct *s; QWidget *w; for ( ; id >= 0 && id < (int)d->list.count(); id = backwards ? id - delta : id + delta ) { s = d->list.at( id ); w = s->wid; if ( w->isHidden() ) { mayCollapse = TRUE; } else { if ( s->isHandle ) { int dd = s->getSizer( orient ); int nextPos = backwards ? pos - dd : pos + dd; positions[id] = pos; widths[id] = dd; pos = nextPos; } else { int dd = backwards ? pos - pick( topLeft(w) ) : pick( bottomRight(w) ) - pos + 1; if ( dd > 0 || (!isCollapsed(w) && !mayCollapse) ) { dd = QMAX( pick(qSmartMinSize(w)), QMIN(dd, pick(w->maximumSize())) ); } else { dd = 0; } positions[id] = backwards ? pos - dd : pos; widths[id] = dd; pos = backwards ? pos - dd : pos + dd; mayCollapse = TRUE; } } } }
void KompareSplitter::moveSplitter( QCOORD p, int id ) { QSplitterLayoutStruct *s = d->list.at( id ); int farMin; int min; int max; int farMax; p = adjustPos( p, id, &farMin, &min, &max, &farMax ); int oldP = pick( s->wid->pos() ); int* poss = new int[d->list.count()]; int* ws = new int[d->list.count()]; QWidget *w = 0; bool upLeft; if ( QApplication::reverseLayout() && orient == Horizontal ) { int q = p + s->wid->width(); doMove( FALSE, q, id - 1, -1, (p > max), poss, ws ); doMove( TRUE, q, id, -1, (p < min), poss, ws ); upLeft = (q > oldP); } else { doMove( FALSE, p, id, +1, (p > max), poss, ws ); doMove( TRUE, p, id - 1, +1, (p < min), poss, ws ); upLeft = (p < oldP); } if ( upLeft ) { int count = d->list.count(); for ( int id = 0; id < count; ++id ) { w = d->list.at( id )->wid; if( !w->isHidden() ) setGeo( w, poss[id], ws[id], TRUE ); } } else { for ( int id = d->list.count() - 1; id >= 0; --id ) { w = d->list.at( id )->wid; if( !w->isHidden() ) setGeo( w, poss[id], ws[id], TRUE ); } } storeSizes(); }
void QToolBarAreaLayout::saveState(QDataStream &stream) const { // save toolbar state stream << (uchar) ToolBarStateMarkerEx; int lineCount = 0; for (int i = 0; i < QInternal::DockCount; ++i) lineCount += docks[i].lines.count(); stream << lineCount; for (int i = 0; i < QInternal::DockCount; ++i) { const QToolBarAreaLayoutInfo &dock = docks[i]; for (int j = 0; j < dock.lines.count(); ++j) { const QToolBarAreaLayoutLine &line = dock.lines.at(j); stream << i << line.toolBarItems.count(); for (int k = 0; k < line.toolBarItems.count(); ++k) { const QToolBarAreaLayoutItem &item = line.toolBarItems.at(k); QWidget *widget = const_cast<QLayoutItem*>(item.widgetItem)->widget(); QString objectName = widget->objectName(); if (objectName.isEmpty()) { qWarning("QMainWindow::saveState(): 'objectName' not set for QToolBar %p '%s'", widget, widget->windowTitle().toLocal8Bit().constData()); } stream << objectName; // we store information as: // 1st bit: 1 if shown // 2nd bit: 1 if orientation is vertical (default is horizontal) uchar shownOrientation = (uchar)!widget->isHidden(); if (QToolBar * tb= qobject_cast<QToolBar*>(widget)) { if (tb->orientation() == Qt::Vertical) shownOrientation |= 2; } stream << shownOrientation; stream << item.pos; //we store the preferred size. If the use rdidn't resize the toolbars it will be -1 stream << item.preferredSize; uint geom0, geom1; packRect(&geom0, &geom1, widget->geometry(), widget->isWindow()); stream << geom0 << geom1; } } } }
int QSplitterPrivate::findWidgetJustBeforeOrJustAfter(int index, int delta, int &collapsibleSize) const { if (delta < 0) index += delta; do { QWidget *w = list.at(index)->widget; if (!w->isHidden()) { if (collapsible(list.at(index))) collapsibleSize = pick(qSmartMinSize(w)); return index; } index += delta; } while (index >= 0 && index < list.count()); return -1; }
/*! \reimp */ QSize QSplitter::sizeHint() const { Q_D(const QSplitter); ensurePolished(); int l = 0; int t = 0; for (int i = 0; i < d->list.size(); ++i) { QWidget *w = d->list.at(i)->widget; if (w->isHidden()) continue; QSize s = w->sizeHint(); if (s.isValid()) { l += d->pick(s); t = qMax(t, d->trans(s)); } } return orientation() == Qt::Horizontal ? QSize(l, t) : QSize(t, l); }
void TerminalPlugin::showTerminal() { QWidget* dock = w_->parentWidget(); if ( NULL == dock ) return; if ( dock->isHidden() ) { dock->show(); w_->setFocus(); } else { dock->hide(); // return focus to current document Juff::Document* doc = api()->currentDocument(); if ( !doc->isNull() ) api()->openDoc(doc->fileName()); } }
void QSplitterPrivate::setGeo(QSplitterLayoutStruct *sls, int p, int s, bool allowCollapse) { Q_Q(QSplitter); QWidget *w = sls->widget; QRect r; QRect contents = q->contentsRect(); if (orient == Qt::Horizontal) { r.setRect(p, contents.y(), s, contents.height()); } else { r.setRect(contents.x(), p, contents.width(), s); } sls->rect = r; int minSize = pick(qSmartMinSize(w)); if (orient == Qt::Horizontal && q->isRightToLeft()) r.moveRight(contents.width() - r.left()); if (allowCollapse) sls->collapsed = s <= 0 && minSize > 0 && !w->isHidden(); // Hide the child widget, but without calling hide() so that // the splitter handle is still shown. if (sls->collapsed) r.moveTopLeft(QPoint(-r.width()-1, -r.height()-1)); w->setGeometry(r); if (!sls->handle->isHidden()) { QSplitterHandle *h = sls->handle; QSize hs = h->sizeHint(); int left, top, right, bottom; h->getContentsMargins(&left, &top, &right, &bottom); if (orient==Qt::Horizontal) { if (q->isRightToLeft()) p = contents.width() - p + hs.width(); h->setGeometry(p-hs.width() - left, contents.y(), hs.width() + left + right, contents.height()); } else { h->setGeometry(contents.x(), p-hs.height() - top, contents.width(), hs.height() + top + bottom); } } }
void KexiPasswordWidget::addCommentLine( const QString& label, const QString& comment ) { int gridMarginLeft, gridMarginTop, gridMarginRight, gridMarginBottom; d->ui.formLayout->getContentsMargins(&gridMarginLeft, &gridMarginTop, &gridMarginRight, &gridMarginBottom); int spacing = d->ui.formLayout->horizontalSpacing(); if (spacing < 0) { // same inter-column spacing for all rows, see comment in qformlayout.cpp spacing = style()->combinedLayoutSpacing(QSizePolicy::Label, QSizePolicy::LineEdit, Qt::Horizontal, 0, this); } QLabel* c = new QLabel(comment, this); c->setWordWrap(true); d->ui.formLayout->insertRow(d->commentRow, label, c); ++d->commentRow; // cycle through column 0 widgets and see the max width so we can set the minimum height of // column 2 wordwrapable labels int firstColumnWidth = 0; for (int i = 0; i < d->ui.formLayout->rowCount(); ++i) { QLayoutItem *li = d->ui.formLayout->itemAt(i, QFormLayout::LabelRole); if (li) { QWidget *w = li->widget(); if (w && !w->isHidden()) { firstColumnWidth = qMax(firstColumnWidth, w->sizeHint().width()); } } } for (int i = 0; i < d->ui.formLayout->rowCount(); ++i) { QLayoutItem *li = d->ui.formLayout->itemAt(i, QFormLayout::FieldRole); if (li) { QLabel *l = qobject_cast<QLabel*>(li->widget()); if (l && l->wordWrap()) { int w = sizeHint().width() - firstColumnWidth - ( 2 * KDialog::marginHint() ) - gridMarginLeft - gridMarginRight - spacing; l->setMinimumSize( w, l->heightForWidth(w) ); } } } }
static QWidget *get_next_widget(QObjectList &list, int &index) { QObject *ob; for(;;) { if (index >= list.count()) return NULL; ob = list.at(index); // ob might be null if we are inside the QWidget destructor index++; if (ob && ob->isWidgetType()) { QWidget *w = (QWidget *)ob; if (!w->isHidden() && !qobject_cast<QSizeGrip *>(w)) return w; } } }
void VestigeInstrumentView::toggleGUI( void ) { if( m_vi == NULL || m_vi->m_plugin == NULL ) { return; } QWidget * w = m_vi->m_plugin->pluginWidget(); if( w == NULL ) { return; } if( w->isHidden() ) { w->show(); } else { w->hide(); } }
bool TabWidget::isActiveChatWindow() { QWidget *widget = m_self->parentWidget(); if (widget->isMinimized() || widget->isHidden()) return false; # if defined(Q_OS_WIN32) if (widget->isActiveWindow()) { HWND active = GetForegroundWindow(); if (active == (HWND) widget->window()->internalWinId() || ::IsChild(active, (HWND) widget->window()->internalWinId())) return true; else return false; } else return false; # else return widget->isActiveWindow(); # endif }
void QToolBarAreaLayout::saveState(QDataStream &stream) const { // save toolbar state stream << (uchar) ToolBarStateMarkerEx; int lineCount = 0; for (int i = 0; i < QInternal::DockCount; ++i) lineCount += docks[i].lines.count(); stream << lineCount; for (int i = 0; i < QInternal::DockCount; ++i) { const QToolBarAreaLayoutInfo &dock = docks[i]; for (int j = 0; j < dock.lines.count(); ++j) { const QToolBarAreaLayoutLine &line = dock.lines.at(j); stream << i << line.toolBarItems.count(); for (int k = 0; k < line.toolBarItems.count(); ++k) { const QToolBarAreaLayoutItem &item = line.toolBarItems.at(k); QWidget *widget = const_cast<QLayoutItem*>(item.widgetItem)->widget(); QString objectName = widget->objectName(); if (objectName.isEmpty()) { qWarning("QMainWindow::saveState(): 'objectName' not set for QToolBar %p '%s'", widget, widget->windowTitle().toLocal8Bit().constData()); } stream << objectName; stream << (uchar) !widget->isHidden(); stream << item.pos; stream << item.size; uint geom0, geom1; packRect(&geom0, &geom1, widget->geometry(), widget->isWindow()); stream << geom0 << geom1; } } } }
static void writeRenderObject(TextStream& ts, const RenderObject& o, RenderAsTextBehavior behavior) { ts << o.renderName(); if (behavior & RenderAsTextShowAddresses) ts << " " << static_cast<const void*>(&o); if (o.style() && o.style()->zIndex()) ts << " zI: " << o.style()->zIndex(); if (o.node()) { String tagName = getTagName(o.node()); if (!tagName.isEmpty()) { ts << " {" << tagName << "}"; // flag empty or unstyled AppleStyleSpan because we never // want to leave them in the DOM if (isEmptyOrUnstyledAppleStyleSpan(o.node())) ts << " *empty or unstyled AppleStyleSpan*"; } } bool adjustForTableCells = o.containingBlock()->isTableCell(); IntRect r; if (o.isText()) { // FIXME: Would be better to dump the bounding box x and y rather than the first run's x and y, but that would involve updating // many test results. const RenderText& text = *toRenderText(&o); IntRect linesBox = text.linesBoundingBox(); r = IntRect(text.firstRunX(), text.firstRunY(), linesBox.width(), linesBox.height()); if (adjustForTableCells && !text.firstTextBox()) adjustForTableCells = false; } else if (o.isRenderInline()) { // FIXME: Would be better not to just dump 0, 0 as the x and y here. const RenderInline& inlineFlow = *toRenderInline(&o); r = IntRect(0, 0, inlineFlow.linesBoundingBox().width(), inlineFlow.linesBoundingBox().height()); adjustForTableCells = false; } else if (o.isTableCell()) { // FIXME: Deliberately dump the "inner" box of table cells, since that is what current results reflect. We'd like // to clean up the results to dump both the outer box and the intrinsic padding so that both bits of information are // captured by the results. const RenderTableCell& cell = *toRenderTableCell(&o); r = IntRect(cell.x(), cell.y() + cell.intrinsicPaddingTop(), cell.width(), cell.height() - cell.intrinsicPaddingTop() - cell.intrinsicPaddingBottom()); } else if (o.isBox()) r = toRenderBox(&o)->frameRect(); // FIXME: Temporary in order to ensure compatibility with existing layout test results. if (adjustForTableCells) r.move(0, -toRenderTableCell(o.containingBlock())->intrinsicPaddingTop()); ts << " " << r; if (!(o.isText() && !o.isBR())) { if (o.isFileUploadControl()) { ts << " " << quoteAndEscapeNonPrintables(toRenderFileUploadControl(&o)->fileTextValue()); } if (o.parent() && (o.parent()->style()->color() != o.style()->color())) ts << " [color=" << o.style()->color().name() << "]"; if (o.parent() && (o.parent()->style()->backgroundColor() != o.style()->backgroundColor()) && o.style()->backgroundColor().isValid() && o.style()->backgroundColor().rgb()) // Do not dump invalid or transparent backgrounds, since that is the default. ts << " [bgcolor=" << o.style()->backgroundColor().name() << "]"; if (o.parent() && (o.parent()->style()->textFillColor() != o.style()->textFillColor()) && o.style()->textFillColor().isValid() && o.style()->textFillColor() != o.style()->color() && o.style()->textFillColor().rgb()) ts << " [textFillColor=" << o.style()->textFillColor().name() << "]"; if (o.parent() && (o.parent()->style()->textStrokeColor() != o.style()->textStrokeColor()) && o.style()->textStrokeColor().isValid() && o.style()->textStrokeColor() != o.style()->color() && o.style()->textStrokeColor().rgb()) ts << " [textStrokeColor=" << o.style()->textStrokeColor().name() << "]"; if (o.parent() && (o.parent()->style()->textStrokeWidth() != o.style()->textStrokeWidth()) && o.style()->textStrokeWidth() > 0) ts << " [textStrokeWidth=" << o.style()->textStrokeWidth() << "]"; if (!o.isBoxModelObject()) return; const RenderBoxModelObject& box = *toRenderBoxModelObject(&o); if (box.borderTop() || box.borderRight() || box.borderBottom() || box.borderLeft()) { ts << " [border:"; BorderValue prevBorder; if (o.style()->borderTop() != prevBorder) { prevBorder = o.style()->borderTop(); if (!box.borderTop()) ts << " none"; else { ts << " (" << box.borderTop() << "px "; printBorderStyle(ts, o.style()->borderTopStyle()); Color col = o.style()->borderTopColor(); if (!col.isValid()) col = o.style()->color(); ts << col.name() << ")"; } } if (o.style()->borderRight() != prevBorder) { prevBorder = o.style()->borderRight(); if (!box.borderRight()) ts << " none"; else { ts << " (" << box.borderRight() << "px "; printBorderStyle(ts, o.style()->borderRightStyle()); Color col = o.style()->borderRightColor(); if (!col.isValid()) col = o.style()->color(); ts << col.name() << ")"; } } if (o.style()->borderBottom() != prevBorder) { prevBorder = box.style()->borderBottom(); if (!box.borderBottom()) ts << " none"; else { ts << " (" << box.borderBottom() << "px "; printBorderStyle(ts, o.style()->borderBottomStyle()); Color col = o.style()->borderBottomColor(); if (!col.isValid()) col = o.style()->color(); ts << col.name() << ")"; } } if (o.style()->borderLeft() != prevBorder) { prevBorder = o.style()->borderLeft(); if (!box.borderLeft()) ts << " none"; else { ts << " (" << box.borderLeft() << "px "; printBorderStyle(ts, o.style()->borderLeftStyle()); Color col = o.style()->borderLeftColor(); if (!col.isValid()) col = o.style()->color(); ts << col.name() << ")"; } } ts << "]"; } } if (o.isTableCell()) { const RenderTableCell& c = *toRenderTableCell(&o); ts << " [r=" << c.row() << " c=" << c.col() << " rs=" << c.rowSpan() << " cs=" << c.colSpan() << "]"; } if (o.isListMarker()) { String text = toRenderListMarker(&o)->text(); if (!text.isEmpty()) { if (text.length() != 1) text = quoteAndEscapeNonPrintables(text); else { switch (text[0]) { case bullet: text = "bullet"; break; case blackSquare: text = "black square"; break; case whiteBullet: text = "white bullet"; break; default: text = quoteAndEscapeNonPrintables(text); } } ts << ": " << text; } } #if PLATFORM(QT) // Print attributes of embedded QWidgets. E.g. when the WebCore::Widget // is invisible the QWidget should be invisible too. if (o.isRenderPart()) { const RenderPart* part = toRenderPart(const_cast<RenderObject*>(&o)); if (part->widget() && part->widget()->platformWidget()) { QWidget* wid = part->widget()->platformWidget(); ts << " [QT: "; ts << "geometry: {" << wid->geometry() << "} "; ts << "isHidden: " << wid->isHidden() << " "; ts << "isSelfVisible: " << part->widget()->isSelfVisible() << " "; ts << "isParentVisible: " << part->widget()->isParentVisible() << " "; ts << "mask: {" << wid->mask().boundingRect() << "} ] "; } } #endif }
void BuddyEditor::updateBackground() { if (m_updating || background() == 0) return; ConnectionEdit::updateBackground(); m_updating = true; QList<Connection *> newList; const LabelList label_list = background()->findChildren<QLabel*>(); foreach (QLabel *label, label_list) { const QString buddy_name = buddy(label, m_formWindow->core()); if (buddy_name.isEmpty()) continue; const QList<QWidget *> targets = background()->findChildren<QWidget*>(buddy_name); if (targets.isEmpty()) continue; QWidget *target = 0; QListIterator<QWidget *> it(targets); while (it.hasNext()) { QWidget *widget = it.next(); if (widget && !widget->isHidden()) { target = widget; break; } } if (target == 0) continue; Connection *con = new Connection(this); con->setEndPoint(EndPoint::Source, label, widgetRect(label).center()); con->setEndPoint(EndPoint::Target, target, widgetRect(target).center()); newList.append(con); } QList<Connection *> toRemove; const int c = connectionCount(); for (int i = 0; i < c; i++) { Connection *con = connection(i); QObject *source = con->object(EndPoint::Source); QObject *target = con->object(EndPoint::Target); bool found = false; QListIterator<Connection *> it(newList); while (it.hasNext()) { Connection *newConn = it.next(); if (newConn->object(EndPoint::Source) == source && newConn->object(EndPoint::Target) == target) { found = true; break; } } if (found == false) toRemove.append(con); } if (!toRemove.isEmpty()) { DeleteConnectionsCommand command(this, toRemove); command.redo(); foreach (Connection *con, toRemove) delete takeConnection(con); } QListIterator<Connection *> it(newList); while (it.hasNext()) { Connection *newConn = it.next(); bool found = false; const int c = connectionCount(); for (int i = 0; i < c; i++) { Connection *con = connection(i); if (con->object(EndPoint::Source) == newConn->object(EndPoint::Source) && con->object(EndPoint::Target) == newConn->object(EndPoint::Target)) { found = true; break; } } if (found == false) { AddConnectionCommand command(this, newConn); command.redo(); } else { delete newConn; } } m_updating = false; }