From bd606785fe65c5e05f2030b20a186b129a3540a3 Mon Sep 17 00:00:00 2001 From: Michael Fabian Dirks Date: Mon, 3 Oct 2016 02:22:58 +0200 Subject: [PATCH] UI: Split Properties window with a QSplitter Closes jp9000/obs-studio#645 --- UI/window-basic-properties.cpp | 20 +++++++++++++------- UI/window-basic-properties.hpp | 2 ++ 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/UI/window-basic-properties.cpp b/UI/window-basic-properties.cpp index 2fad427da..b305f1ded 100644 --- a/UI/window-basic-properties.cpp +++ b/UI/window-basic-properties.cpp @@ -70,21 +70,27 @@ OBSBasicProperties::OBSBasicProperties(QWidget *parent, OBSSource source_) view = new OBSPropertiesView(settings, source, (PropertiesReloadCallback)obs_source_properties, (PropertiesUpdateCallback)obs_source_update); + view->setMinimumHeight(150); - preview->setMinimumSize(20, 20); + preview->setMinimumSize(20, 150); preview->setSizePolicy(QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding)); + // Create a QSplitter to keep a unified workflow here. + windowSplitter = new QSplitter(Qt::Orientation::Vertical, this); + windowSplitter->addWidget(preview); + windowSplitter->addWidget(view); + windowSplitter->setChildrenCollapsible(false); + //windowSplitter->setSizes(QList({ 16777216, 150 })); + windowSplitter->setStretchFactor(0, 3); + windowSplitter->setStretchFactor(1, 1); + setLayout(new QVBoxLayout(this)); - layout()->addWidget(preview); - layout()->addWidget(view); + layout()->addWidget(windowSplitter); layout()->addWidget(buttonBox); layout()->setAlignment(buttonBox, Qt::AlignRight | Qt::AlignBottom); - layout()->setAlignment(view, Qt::AlignBottom); - view->setMaximumHeight(250); - view->setMinimumHeight(150); - view->show(); + view->show(); installEventFilter(CreateShortcutFilter()); const char *name = obs_source_get_name(source); diff --git a/UI/window-basic-properties.hpp b/UI/window-basic-properties.hpp index a5cbfa925..b21a2cf7d 100644 --- a/UI/window-basic-properties.hpp +++ b/UI/window-basic-properties.hpp @@ -20,6 +20,7 @@ #include #include #include +#include #include "qt-display.hpp" #include @@ -42,6 +43,7 @@ private: OBSData oldSettings; OBSPropertiesView *view; QDialogButtonBox *buttonBox; + QSplitter *windowSplitter; static void SourceRemoved(void *data, calldata_t *params); static void SourceRenamed(void *data, calldata_t *params);