From b6ffd5a332b6b21fdba9937fa3a0274556a09cdf Mon Sep 17 00:00:00 2001
From: Tobias Markmann <tm@ayena.de>
Date: Tue, 1 Sep 2015 18:09:56 +0200
Subject: Add close button to about dialog for Linux desktops

The default Debian 7 desktop uses window decorations for dialog
windows that does not have close window buttons at the top. This
commit adds a dedicated close button to the about window.

This button is *not* added on Windows and OS X.

Test-Information:

Tested looks and function on OS X 10.9.5 with Qt 5.4.2 and
Debian 7 with Qt 5.3.2.

Change-Id: Ia363f66666eb88d43834ab0556f7b06efd3cedef

diff --git a/Swift/QtUI/QtAboutWidget.cpp b/Swift/QtUI/QtAboutWidget.cpp
index 3de95f4..7145384 100644
--- a/Swift/QtUI/QtAboutWidget.cpp
+++ b/Swift/QtUI/QtAboutWidget.cpp
@@ -1,20 +1,22 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
 
-#include "Swift/QtUI/QtAboutWidget.h"
+#include <Swift/QtUI/QtAboutWidget.h>
 
 #include <QCoreApplication>
+#include <QFile>
 #include <QIcon>
 #include <QLabel>
-#include <QVBoxLayout>
-#include <QtGlobal>
 #include <QPushButton>
 #include <QTextEdit>
-#include <QFile>
 #include <QTextStream>
+#include <QVBoxLayout>
+#include <QtGlobal>
+
+#include <Swiften/Base/Platform.h>
 
 namespace Swift {
 
@@ -50,11 +52,26 @@ QtAboutWidget::QtAboutWidget() : QDialog() {
 		mainLayout->addWidget(new QLabel(QString("<center><font size='-1'>") + QString(tr("Using the English translation by\n%1")).arg(QCoreApplication::translate("TRANSLATION_INFO", "TRANSLATION_AUTHOR")).replace("\n", "<br/>") + "</font></center>", this));
 	}
 	QCoreApplication::translate("TRANSLATION_INFO", "TRANSLATION_LICENSE", "This string contains the license under which this translation is licensed. We ask you to license the translation under the BSD license. Please read http://www.opensource.org/licenses/bsd-license.php, and if you agree to release your translation under this license, use the following (untranslated) text: 'This translation is licensed under the BSD License. See http://www.opensource.org/licenses/bsd-license.php'");
-
+#if defined(SWIFTEN_PLATFORM_WINDOWS) || defined(SWIFTEN_PLATFORM_MACOSX)
 	QPushButton* licenseButton = new QPushButton(tr("View License"), this);
 	mainLayout->addWidget(licenseButton);
 	connect(licenseButton, SIGNAL(clicked()), this, SLOT(handleLicenseClicked()));
+#else
+	// Some Linux desktops have dialog window decorations without close window buttons.
+	// This code adds a dedicated button to close the about window dialog.
+	QHBoxLayout* buttonLayout = new QHBoxLayout();
+	mainLayout->addLayout(buttonLayout);
+
+	QPushButton* licenseButton = new QPushButton(tr("View License"), this);
+	buttonLayout->addWidget(licenseButton);
+	connect(licenseButton, SIGNAL(clicked()), this, SLOT(handleLicenseClicked()));
+
+	buttonLayout->addItem(new QSpacerItem(20,20));
 
+	QPushButton* closeButton = new QPushButton(tr("Close"), this);
+	buttonLayout->addWidget(closeButton);
+	connect(closeButton, SIGNAL(clicked()), this, SLOT(accept()));
+#endif
 	setFixedSize(minimumSizeHint());
 }
 
-- 
cgit v0.10.2-6-g49f6