EventLoop::EventLoop(QObject *parent) : QEventLoop(parent) { QMainWindow * wnd = StaticUtils::findMainWindow(); if (wnd != NULL) { wnd->installEventFilter(this); QObjectList childs = wnd->children(); for (int i=0;i<childs.count();i++) { if (childs.at(i)->inherits("QWidget")) childs.at(i)->installEventFilter(this); } } }
void DocumentManager::add(DocumentInfo *documentInfo) { QMainWindow *mainWindow = documentInfo->mainWindow; d->documentInfos.append(documentInfo); connect(mainWindow, SIGNAL(destroyed(QObject *)), this, SLOT(remove(QObject *))); // update object name ("window ID") mainWindow->setObjectName(mainWindow->objectName() + QString::number(d->nextWindowId)); mainWindow->installEventFilter(this); /*!\todo This gets messy: make DocumentInfo a proper class. */ documentInfo->id = d->nextWindowId; ++d->nextWindowId; documentInfo->windowTitle = tr("New %1", "New document title + ID").arg(d->nextWindowId); QAction *action = new QAction(d->windowActionGroup); action->setCheckable(true); action->setData(documentInfo->id); action->setText(documentInfo->windowTitle); d->windowMapper.setMapping(action, documentInfo->id); connect(action, SIGNAL(triggered()), &d->windowMapper, SLOT(map())); emit changed(); }