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;