Esempio n. 1
0
void CmdTestMDI2::activated(int iMsg)
{
    QMdiArea* area = getMainWindow()->findChild<QMdiArea*>();
    if (area) {
        MDIView* mdi = getMainWindow()->activeWindow();
        area->removeSubWindow(mdi->parentWidget());
        mdi->parentWidget()->showNormal();
    }
}
/**
 * Closes all windows that are editing the given block.
 */
void QC_DialogFactory::closeEditBlockWindow(RS_Block* block) {
    RS_DEBUG->print("QC_DialogFactory::closeEditBlockWindow");

    QC_ApplicationWindow* appWindow = QC_ApplicationWindow::getAppWindow();
    QMdiArea* mdiAreaCAD = appWindow->getMdiArea();

    if (mdiAreaCAD==NULL) return; //should not happen
    RS_DEBUG->print("QC_DialogFactory::closeEditBlockWindow: workspace found");

    for (int i = 0; i <mdiAreaCAD->subWindowList().size(); ) {
        RS_DEBUG->print("QC_DialogFactory::closeEditBlockWindow: window: %d",
                        i);
        QC_MDIWindow* m = qobject_cast<QC_MDIWindow*>(mdiAreaCAD->subWindowList().at(i));
        if(m==NULL) {
            mdiAreaCAD->removeSubWindow(mdiAreaCAD->subWindowList().at(i));
            continue;
        }
        RS_DEBUG->print(
                    "QC_DialogFactory::closeEditBlockWindow: got mdi");
        if (m->getDocument()==block) {
            RS_DEBUG->print(
                        "QC_DialogFactory::closeEditBlockWindow: closing mdi");
            appWindow->slotFilePrintPreview(false);
            m->closeMDI(true, false);

            mdiAreaCAD->removeSubWindow(mdiAreaCAD->subWindowList().at(i));
            continue;
//            m->setAttribute(Qt::WA_DeleteOnClose);//RLZ: to ensure the window is deleted
//            m->close();
        }
        i++;
    }
    //activate a subWindow, bug#3486357
    QMdiSubWindow* subWindow=mdiAreaCAD->currentSubWindow();
    appWindow->slotWindowActivated(subWindow);

    RS_DEBUG->print("QC_DialogFactory::closeEditBlockWindow: OK");
}