diff --git a/krusader/DiskUsage/diskusagegui.h b/krusader/DiskUsage/diskusagegui.h --- a/krusader/DiskUsage/diskusagegui.h +++ b/krusader/DiskUsage/diskusagegui.h @@ -51,6 +51,7 @@ public: explicit DiskUsageGUI(QUrl openDir, QWidget* parent = 0); ~DiskUsageGUI(); + void showConditional(); public slots: @@ -69,7 +70,7 @@ } protected slots: - virtual void reject() Q_DECL_OVERRIDE; + virtual void closeEvent(QCloseEvent *event) Q_DECL_OVERRIDE; void slotViewChanged(int view); void enableButtons(bool); void slotLoadFinished(bool); @@ -94,6 +95,7 @@ int sizeY; bool exitAtFailure; + bool duCanceled; }; #endif /* __DISK_USAGE_GUI_H__ */ diff --git a/krusader/DiskUsage/diskusagegui.cpp b/krusader/DiskUsage/diskusagegui.cpp --- a/krusader/DiskUsage/diskusagegui.cpp +++ b/krusader/DiskUsage/diskusagegui.cpp @@ -53,11 +53,13 @@ : QDialog(parent), exitAtFailure(true) { setWindowTitle(i18n("Krusader::Disk Usage")); + setAttribute(Qt::WA_DeleteOnClose); + duCanceled = false; baseDirectory = openDir; - if (!newSearch()) - return; - + if (!newSearch()) { + duCanceled = true; + } QVBoxLayout *mainLayout = new QVBoxLayout; setLayout(mainLayout); @@ -126,7 +128,7 @@ QDialogButtonBox *buttonBox = new QDialogButtonBox(QDialogButtonBox::Close); mainLayout->addWidget(buttonBox); - connect(buttonBox, SIGNAL(rejected()), this, SLOT(reject())); + connect(buttonBox, SIGNAL(rejected()), this, SLOT(close())); connect(diskUsage, SIGNAL(status(QString)), this, SLOT(setStatus(QString))); connect(diskUsage, SIGNAL(viewChanged(int)), this, SLOT(slotViewChanged(int))); connect(diskUsage, SIGNAL(newSearch()), this, SLOT(newSearch())); @@ -149,12 +151,9 @@ sizeY = group.readEntry("Window Height", QFontMetrics(font()).height() * 25); resize(sizeX, sizeY); - if (group.readEntry("Window Maximized", false)) - showMaximized(); - else - show(); - - exec(); + if (group.readEntry("Window Maximized", false)) { + setWindowState(windowState() | Qt::WindowMaximized); + } } DiskUsageGUI::~DiskUsageGUI() @@ -188,15 +187,15 @@ QDialog::resizeEvent(e); } -void DiskUsageGUI::reject() +void DiskUsageGUI::closeEvent(QCloseEvent *event) { KConfigGroup group(krConfig, "DiskUsage"); group.writeEntry("Window Width", sizeX); group.writeEntry("Window Height", sizeY); group.writeEntry("Window Maximized", isMaximized()); group.writeEntry("View", diskUsage->getActiveView()); - QDialog::reject(); + event->accept(); } void DiskUsageGUI::loadUsageInfo() @@ -247,4 +246,11 @@ QTimer::singleShot(0, this, SLOT(loadUsageInfo())); return true; } - +void DiskUsageGUI::showConditional() +{ + if (duCanceled) { + emit close(); + } else { + show(); + } +} diff --git a/krusader/krslots.cpp b/krusader/krslots.cpp --- a/krusader/krslots.cpp +++ b/krusader/krslots.cpp @@ -687,7 +687,8 @@ void KRslots::slotDiskUsage() { - DiskUsageGUI du(ACTIVE_PANEL->virtualPath(), MAIN_VIEW); + DiskUsageGUI *du = new DiskUsageGUI(ACTIVE_PANEL->virtualPath(), 0); + du->showConditional(); } void KRslots::applicationStateChanged()