/*! For internal use only. */ void QNPWidget::setWindow(bool delold) { saveWId = winId(); // ### Don't need this anymore create((WId)pi->window, FALSE, delold); if ( delold ) { // Make sure they get a show() clearWState( WState_Visible ); } #ifdef _WS_X11_ Widget w = XtWindowToWidget (qt_xdisplay(), pi->window); XtAddEventHandler(w, EnterWindowMask, FALSE, enter_event_handler, pi); XtAddEventHandler(w, LeaveWindowMask, FALSE, leave_event_handler, pi); Pixmap bgpm=0; XColor col; XtVaGetValues(w, XtNbackground, &col.pixel, XtNbackgroundPixmap, &bgpm, 0, 0); XQueryColor(qt_xdisplay(), x11Colormap(), &col); setBackgroundColor(QColor(col.red >> 8, col.green >> 8, col.blue >> 8)); if (bgpm) { // ### Need an under-the-hood function here, or we have to // ### rewrite lots of code from QPixmap::convertToImage(). // ### Doesn't matter yet, because Netscape doesn't ever set // ### the background image of the window it gives us. } #endif createNewWindowsForAllChildren(this); setGeometry( pi->x, pi->y, pi->width, pi->height ); }
static void createNewWindowsForAllChildren(QWidget* parent, int indent=0) { QObjectList* list = parent->queryList("QWidget", 0, FALSE, FALSE); if ( list ) { QObjectListIt it( *list ); QFixableWidget* c; while ( (c = (QFixableWidget*)it.current()) ) { bool vis = c->isVisible(); c->fix(); createNewWindowsForAllChildren(c,indent+1); if ( vis ) c->show(); // Now that all children are valid. ++it; } delete list; } }