diff --git a/src/libtomahawk/TomahawkSettings.cpp b/src/libtomahawk/TomahawkSettings.cpp
index f1d47f619..16b2536b3 100644
--- a/src/libtomahawk/TomahawkSettings.cpp
+++ b/src/libtomahawk/TomahawkSettings.cpp
@@ -873,6 +873,20 @@ TomahawkSettings::setCrashReporterEnabled( bool enable )
}
+bool
+TomahawkSettings::exitOnClose() const
+{
+ return value( "ui/exitOnClose", false ).toBool();
+}
+
+
+void
+TomahawkSettings::setExitOnClose( bool enable )
+{
+ setValue( "ui/exitOnClose", enable );
+}
+
+
bool
TomahawkSettings::songChangeNotificationEnabled() const
{
diff --git a/src/libtomahawk/TomahawkSettings.h b/src/libtomahawk/TomahawkSettings.h
index 7c757b073..be02d86f2 100644
--- a/src/libtomahawk/TomahawkSettings.h
+++ b/src/libtomahawk/TomahawkSettings.h
@@ -163,6 +163,9 @@ public:
bool crashReporterEnabled() const; /// true by default
void setCrashReporterEnabled( bool enable );
+ bool exitOnClose() const; /// false by default
+ void setExitOnClose( bool enable );
+
bool songChangeNotificationEnabled() const; /// true by default
void setSongChangeNotificationEnabled( bool enable );
diff --git a/src/tomahawk/TomahawkWindow.cpp b/src/tomahawk/TomahawkWindow.cpp
index feeb16f18..c7fd9719d 100644
--- a/src/tomahawk/TomahawkWindow.cpp
+++ b/src/tomahawk/TomahawkWindow.cpp
@@ -756,13 +756,21 @@ TomahawkWindow::changeEvent( QEvent* e )
void
TomahawkWindow::closeEvent( QCloseEvent* e )
{
-#ifndef Q_OS_MAC
- if ( e->spontaneous() && QSystemTrayIcon::isSystemTrayAvailable() )
- {
- hide();
- e->ignore();
+
+ TomahawkSettings* s = TomahawkSettings::instance();
+
+ if( s->exitOnClose() ){
+ qApp->quit();
return;
}
+
+#ifndef Q_OS_MAC
+ else if ( e->spontaneous() && QSystemTrayIcon::isSystemTrayAvailable() )
+ {
+ hide();
+ e->ignore();
+ return;
+ }
#endif
QMainWindow::closeEvent( e );
diff --git a/src/tomahawk/dialogs/SettingsDialog.cpp b/src/tomahawk/dialogs/SettingsDialog.cpp
index 61c5b0902..19f428952 100644
--- a/src/tomahawk/dialogs/SettingsDialog.cpp
+++ b/src/tomahawk/dialogs/SettingsDialog.cpp
@@ -313,6 +313,7 @@ SettingsDialog::saveSettings()
TomahawkSettings* s = TomahawkSettings::instance();
s->setCrashReporterEnabled( m_advancedWidgetUi->checkBoxReporter->checkState() == Qt::Checked );
+ s->setExitOnClose( m_advancedWidgetUi->checkBoxExitOnClose->checkState() == Qt::Checked );
s->setHttpEnabled( m_advancedWidgetUi->checkBoxHttp->checkState() == Qt::Checked );
s->setHttpBindAll( m_advancedWidgetUi->checkBoxListenApi->checkState() == Qt::Checked );
s->setSongChangeNotificationEnabled( m_advancedWidgetUi->checkBoxSongChangeNotifications->checkState() == Qt::Checked );
diff --git a/src/tomahawk/dialogs/Settings_Advanced.ui b/src/tomahawk/dialogs/Settings_Advanced.ui
index d6b05ef32..7fd705ac3 100644
--- a/src/tomahawk/dialogs/Settings_Advanced.ui
+++ b/src/tomahawk/dialogs/Settings_Advanced.ui
@@ -171,6 +171,19 @@
Other Settings
+ -
+
+
+ Qt::LeftToRight
+
+
+ Exit on close
+
+
+ false
+
+
+
-