diff --git a/app/main.cpp b/app/main.cpp --- a/app/main.cpp +++ b/app/main.cpp @@ -31,7 +31,8 @@ int main (int argc, char *argv[]) { QApplication app(argc, argv); - app.setQuitOnLastWindowClosed(false); + QApplication::setQuitOnLastWindowClosed(true); + QObject::connect(&app, SIGNAL(lastWindowClosed()), &app, SLOT(quit())); KLocalizedString::setApplicationDomain("yakuake"); diff --git a/app/mainwindow.h b/app/mainwindow.h --- a/app/mainwindow.h +++ b/app/mainwindow.h @@ -26,6 +26,7 @@ #include "config-yakuake.h" #include +#include #include @@ -49,7 +50,7 @@ } #endif -class MainWindow : public QMainWindow +class MainWindow : public KMainWindow { Q_OBJECT Q_CLASSINFO("D-Bus Interface", "org.kde.yakuake") @@ -93,7 +94,7 @@ void changeEvent(QEvent* event) Q_DECL_OVERRIDE; bool event(QEvent* event) Q_DECL_OVERRIDE; - virtual bool queryClose(); + virtual bool queryClose() Q_DECL_OVERRIDE; private Q_SLOTS: diff --git a/app/mainwindow.cpp b/app/mainwindow.cpp --- a/app/mainwindow.cpp +++ b/app/mainwindow.cpp @@ -72,11 +72,13 @@ MainWindow::MainWindow(QWidget* parent) - : QMainWindow(parent, Qt::CustomizeWindowHint | Qt::FramelessWindowHint) + : KMainWindow(parent, Qt::CustomizeWindowHint | Qt::FramelessWindowHint) { QDBusConnection::sessionBus().registerObject(QStringLiteral("/yakuake/window"), this, QDBusConnection::ExportScriptableSlots); setAttribute(Qt::WA_TranslucentBackground, true); + setAttribute(Qt::WA_DeleteOnClose, false); + setAttribute(Qt::WA_QuitOnClose, true); m_skin = new Skin(); m_menu = new QMenu(this); @@ -222,10 +224,10 @@ warningMessage + QStringLiteral("

") + closeQuestion, xi18nc("@title:window", "Really Quit?"), KStandardGuiItem::quit(), KStandardGuiItem::cancel()); - if (result == KMessageBox::Continue) - return true; - else + if (result == KMessageBox::Cancel) return false; + else + return true; } return true; @@ -995,7 +997,7 @@ height() - m_titleBar->height()); painter.fillRect(rightBorder, m_skin->borderColor()); - QMainWindow::paintEvent(event); + KMainWindow::paintEvent(event); } void MainWindow::moveEvent(QMoveEvent* event) @@ -1009,7 +1011,7 @@ applyWindowGeometry(); } - QMainWindow::moveEvent(event); + KMainWindow::moveEvent(event); } void MainWindow::wmActiveWindowChanged() @@ -1053,7 +1055,7 @@ updateWindowHeightMenu(); } - QMainWindow::changeEvent(event); + KMainWindow::changeEvent(event); } bool MainWindow::event(QEvent* event) @@ -1072,7 +1074,7 @@ #endif } - return QMainWindow::event(event); + return KMainWindow::event(event); } void MainWindow::toggleWindowState()