diff --git a/qad_application/emainwindow.cpp b/qad_application/emainwindow.cpp index c22f19c..e2389ca 100644 --- a/qad_application/emainwindow.cpp +++ b/qad_application/emainwindow.cpp @@ -221,11 +221,12 @@ bool EMainWindow::checkSave() { void EMainWindow::changedDock() { + if (isHidden()) return; QList tabs(findChildren()); QList docks = findChildren(); QSet docks_tabs; QDockWidget * dock; - //qDebug() << "change"; +// qDebug() << "### change"; foreach (QTabBar * t, tabs) { if (!t->objectName().isEmpty() || t->isHidden()) continue; if (!tbars.contains(t)) { @@ -235,10 +236,10 @@ void EMainWindow::changedDock() { t->setIconSize(dockTabsIconSIze()); t->setTabsClosable(true); } - //qDebug() << "tab"; +// qDebug() << "tab" << t << t->count(); for (int i = 0; i < t->count(); ++i) { dock = (QDockWidget * )t->tabData(i).toULongLong(); - //qDebug() << i << dock; + //qDebug() << i << t->tabData(i); if (dock == 0) continue; t->setTabIcon(i, dock->windowIcon()); docks_tabs << dock; @@ -258,7 +259,8 @@ void EMainWindow::changedDock() { } if (!tdocks.contains(d)) { tdocks << d; - //connect(t, SIGNAL((QObject*)), this, SLOT(changedDockClose(QObject*))); +// qDebug() << "connect" << d; +// connect(d, SIGNAL(destroyed(QObject*)), this, SLOT(changedDockClose(QObject*)), Qt::UniqueConnection); d->installEventFilter(this); } //d->titleBarWidget()->setHidden(docks_tabs.contains(d)); @@ -275,11 +277,17 @@ void EMainWindow::changedDock() { } -void EMainWindow::changedDockClose(QObject * bar) { - //qDebug() << "close" << bar; - tbars.removeAll((QTabBar * )bar); - changedDock(); -} +//void EMainWindow::changedDockClose(QObject * dock) { +// qDebug() << "changedDockClose" << dock; +// if (!dock) return; +// foreach (QTabBar * t, tbars) { +// for (int i = 0; i < t->count(); ++i) +// if (t->tabData(i).toULongLong() == (qulonglong)dock) { +// t->removeTab(i); +// break; +// } +// } +//} void EMainWindow::closeDock(int index) { diff --git a/qad_application/emainwindow.h b/qad_application/emainwindow.h index 1d1d186..0d235a2 100644 --- a/qad_application/emainwindow.h +++ b/qad_application/emainwindow.h @@ -59,7 +59,7 @@ public: virtual bool save(const QString & path) {return true;} void addSeparator() {} - + protected: // Qt`s overloaded void showEvent(QShowEvent * ); @@ -90,7 +90,7 @@ protected: private slots: void changedDock(); - void changedDockClose(QObject * bar); +// void changedDockClose(QObject * dock); void closeDock(int index); virtual void sessionLoading(QPIConfig & conf) {} virtual void sessionSaving(QPIConfig & conf) {}