diff --git a/gui/filesettings.cpp b/gui/filesettings.cpp
index 90003bf01..5403360a7 100644
--- a/gui/filesettings.cpp
+++ b/gui/filesettings.cpp
@@ -28,6 +28,10 @@ FileSettings::FileSettings(QWidget *p)
: QWidget(p)
{
setupUi(this);
+
+ #ifdef Q_OS_MAC
+ expandingSpacer->changeSize(0, 0, QSizePolicy::Fixed, QSizePolicy::Fixed);
+ #endif
}
void FileSettings::load()
diff --git a/gui/filesettings.ui b/gui/filesettings.ui
index 7c3d88f4e..56f28c54c 100644
--- a/gui/filesettings.ui
+++ b/gui/filesettings.ui
@@ -59,7 +59,7 @@
-
-
+
Qt::Vertical
@@ -69,7 +69,7 @@
20
- 8
+ 0
diff --git a/gui/playbacksettings.cpp b/gui/playbacksettings.cpp
index d48c0b9f2..4e07b3db4 100644
--- a/gui/playbacksettings.cpp
+++ b/gui/playbacksettings.cpp
@@ -66,6 +66,10 @@ PlaybackSettings::PlaybackSettings(QWidget *p)
#endif
outputsView->setVisible(outputsView->count()>1);
outputsViewLabel->setVisible(outputsView->count()>1);
+
+ #ifdef Q_OS_MAC
+ expandingSpacer->changeSize(0, 0, QSizePolicy::Fixed, QSizePolicy::Fixed);
+ #endif
}
void PlaybackSettings::load()
diff --git a/gui/playbacksettings.ui b/gui/playbacksettings.ui
index ae5e2c8e7..26e5cc70d 100644
--- a/gui/playbacksettings.ui
+++ b/gui/playbacksettings.ui
@@ -207,14 +207,14 @@
-
-
+
Qt::Vertical
20
- 2
+ 0
diff --git a/gui/serversettings.cpp b/gui/serversettings.cpp
index 2970ce8ca..31c5b6d4c 100644
--- a/gui/serversettings.cpp
+++ b/gui/serversettings.cpp
@@ -111,6 +111,10 @@ ServerSettings::ServerSettings(QWidget *p)
REMOVE(streamUrl)
REMOVE(streamUrlNoteLabel)
#endif
+
+ #ifdef Q_OS_MAC
+ expandingSpacer->changeSize(0, 0, QSizePolicy::Fixed, QSizePolicy::Fixed);
+ #endif
}
void ServerSettings::load()
diff --git a/gui/serversettings.ui b/gui/serversettings.ui
index 9aab075e9..efa635646 100644
--- a/gui/serversettings.ui
+++ b/gui/serversettings.ui
@@ -270,14 +270,14 @@
-
-
+
Qt::Vertical
20
- 363
+ 0
diff --git a/http/httpserversettings.cpp b/http/httpserversettings.cpp
index 2011e7be3..8c2e5f310 100644
--- a/http/httpserversettings.cpp
+++ b/http/httpserversettings.cpp
@@ -95,6 +95,10 @@ HttpServerSettings::HttpServerSettings(QWidget *p)
{
setupUi(this);
initInterfaces(httpInterface);
+
+ #ifdef Q_OS_MAC
+ expandingSpacer->changeSize(0, 0, QSizePolicy::Fixed, QSizePolicy::Fixed);
+ #endif
}
void HttpServerSettings::load()
diff --git a/http/httpserversettings.ui b/http/httpserversettings.ui
index 76f1deb1a..56a32f6b4 100644
--- a/http/httpserversettings.ui
+++ b/http/httpserversettings.ui
@@ -49,14 +49,14 @@
-
-
+
Qt::Vertical
20
- 13
+ 0
diff --git a/scrobbling/scrobblingsettings.cpp b/scrobbling/scrobblingsettings.cpp
index 2666b4b2d..16e6b6c7f 100644
--- a/scrobbling/scrobblingsettings.cpp
+++ b/scrobbling/scrobblingsettings.cpp
@@ -79,6 +79,10 @@ ScrobblingSettings::ScrobblingSettings(QWidget *parent)
"then you will need to have this already started and running. "
"Cantata can only 'Love' tracks via this, and cannot enable/disable scrobbling.", firstMpdClient));
}
+
+ #ifdef Q_OS_MAC
+ expandingSpacer->changeSize(0, 0, QSizePolicy::Fixed, QSizePolicy::Fixed);
+ #endif
}
void ScrobblingSettings::load()
diff --git a/scrobbling/scrobblingsettings.ui b/scrobbling/scrobblingsettings.ui
index e2ae5eac0..98cec1d43 100644
--- a/scrobbling/scrobblingsettings.ui
+++ b/scrobbling/scrobblingsettings.ui
@@ -143,14 +143,14 @@
-
-
+
Qt::Vertical
20
- 6
+ 0
diff --git a/support/configdialog.cpp b/support/configdialog.cpp
index 515e19d5f..9f574b44f 100644
--- a/support/configdialog.cpp
+++ b/support/configdialog.cpp
@@ -45,6 +45,7 @@
#include
#include
#include
+#include
#include "icon.h"
#include "osxstyle.h"
#else
@@ -113,6 +114,7 @@ ConfigDialog::ConfigDialog(QWidget *parent, const QString &name, const QSize &de
#ifdef __APPLE__
: QMainWindow(parent)
, shown(false)
+ , resizeAnim(0)
#else
: Dialog(parent, name, defSize)
#endif
@@ -202,6 +204,20 @@ bool ConfigDialog::setCurrentPage(const QString &id)
setCaption(it.value().item->text());
it.value().item->setChecked(true);
}
+ int newH=it.value().widget->sizeHint().height()+toolBar->height()+buttonBox->height()+layout()->spacing()+(2*layout()->margin());
+ if (isVisible()) {
+ if (newH!=height()) {
+ if (!resizeAnim) {
+ resizeAnim=new QPropertyAnimation(this, "h");
+ resizeAnim->setDuration(250);
+ }
+ resizeAnim->setStartValue(height());
+ resizeAnim->setEndValue(newH);
+ resizeAnim->start();
+ }
+ } else {
+ setFixedHeight(newH);
+ }
#else
pageWidget->setCurrentPage(pages[id]);
#endif
diff --git a/support/configdialog.h b/support/configdialog.h
index 921012134..acf815867 100644
--- a/support/configdialog.h
+++ b/support/configdialog.h
@@ -35,6 +35,7 @@ class QToolButton;
class QButtonGroup;
class QStackedWidget;
class QDialogButtonBox;
+class QPropertyAnimation;
#else
class PageWidget;
class PageWidgetItem;
@@ -50,6 +51,9 @@ class ConfigDialog : public
#endif
{
Q_OBJECT
+ #ifdef __APPLE__
+ Q_PROPERTY(int h READ getH WRITE setH)
+ #endif
public:
ConfigDialog(QWidget *parent, const QString &name=QString(), const QSize &defSize=QSize());
@@ -63,6 +67,8 @@ public:
void setCaption(const QString &c) { setWindowTitle(c); }
void accept();
void reject();
+ int getH() const { return height(); }
+ void setH(int h) { setFixedHeight(h); }
#endif
virtual void save()=0;
@@ -98,6 +104,7 @@ private:
QDialogButtonBox *buttonBox;
QMap pages;
bool shown;
+ QPropertyAnimation *resizeAnim;
#else
PageWidget *pageWidget;
QMap pages;