diff --git a/src/Gui/Stylesheets/overlay/Dark Theme + Dark Background.qss b/src/Gui/Stylesheets/overlay/Dark Theme + Dark Background.qss index bb885553b2..b093be348c 100644 --- a/src/Gui/Stylesheets/overlay/Dark Theme + Dark Background.qss +++ b/src/Gui/Stylesheets/overlay/Dark Theme + Dark Background.qss @@ -1,5 +1,5 @@ Gui--DockWnd--ReportOutput, -Gui--TaskView--TaskView { +Gui--TaskView--TaskView QScrollArea { border: none; } diff --git a/src/Gui/Stylesheets/overlay/Dark Theme + Light Background.qss b/src/Gui/Stylesheets/overlay/Dark Theme + Light Background.qss index 6cbdfe9743..de4b60cdee 100644 --- a/src/Gui/Stylesheets/overlay/Dark Theme + Light Background.qss +++ b/src/Gui/Stylesheets/overlay/Dark Theme + Light Background.qss @@ -1,5 +1,5 @@ Gui--DockWnd--ReportOutput, -Gui--TaskView--TaskView { +Gui--TaskView--TaskView QScrollArea { border: none; } diff --git a/src/Gui/Stylesheets/overlay/Light Theme + Dark Background.qss b/src/Gui/Stylesheets/overlay/Light Theme + Dark Background.qss index e73a7334ff..84e5a2af91 100644 --- a/src/Gui/Stylesheets/overlay/Light Theme + Dark Background.qss +++ b/src/Gui/Stylesheets/overlay/Light Theme + Dark Background.qss @@ -1,5 +1,5 @@ Gui--DockWnd--ReportOutput, -Gui--TaskView--TaskView { +Gui--TaskView--TaskView QScrollArea { border: none; } diff --git a/src/Gui/Stylesheets/overlay/Light Theme + Light Background.qss b/src/Gui/Stylesheets/overlay/Light Theme + Light Background.qss index a1367a3bcc..32c5503272 100644 --- a/src/Gui/Stylesheets/overlay/Light Theme + Light Background.qss +++ b/src/Gui/Stylesheets/overlay/Light Theme + Light Background.qss @@ -1,5 +1,5 @@ Gui--DockWnd--ReportOutput, -Gui--TaskView--TaskView { +Gui--TaskView--TaskView QScrollArea { border: none; } diff --git a/src/Gui/TaskView/TaskView.cpp b/src/Gui/TaskView/TaskView.cpp index 37cee0a18d..8efef9d6c0 100644 --- a/src/Gui/TaskView/TaskView.cpp +++ b/src/Gui/TaskView/TaskView.cpp @@ -32,6 +32,7 @@ # include # include # include +# include #endif #include @@ -268,9 +269,15 @@ QSize TaskPanel::minimumSizeHint() const //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ TaskView::TaskView(QWidget *parent) - : QScrollArea(parent),ActiveDialog(nullptr),ActiveCtrl(nullptr) + : QWidget(parent),ActiveDialog(nullptr),ActiveCtrl(nullptr) { - taskPanel = new TaskPanel(this); + mainLayout = new QVBoxLayout(this); + mainLayout->setContentsMargins(0, 0, 0, 0); + mainLayout->setSpacing(0); + this->setLayout(mainLayout); + scrollArea = new QScrollArea(this); + + taskPanel = new TaskPanel(scrollArea); QSizePolicy sizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred); sizePolicy.setHorizontalStretch(0); sizePolicy.setVerticalStretch(0); @@ -278,10 +285,11 @@ TaskView::TaskView(QWidget *parent) taskPanel->setSizePolicy(sizePolicy); taskPanel->setScheme(QSint::ActionPanelScheme::defaultScheme()); - this->setWidget(taskPanel); - setWidgetResizable(true); - setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); - this->setMinimumWidth(200); + scrollArea->setWidget(taskPanel); + scrollArea->setWidgetResizable(true); + scrollArea->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + scrollArea->setMinimumWidth(200); + mainLayout->addWidget(scrollArea, 1); Gui::Selection().Attach(this); @@ -361,7 +369,7 @@ bool TaskView::event(QEvent* event) } } } - return QScrollArea::event(event); + return QWidget::event(event); } void TaskView::keyPressEvent(QKeyEvent* ke) @@ -423,7 +431,7 @@ void TaskView::keyPressEvent(QKeyEvent* ke) } } else { - QScrollArea::keyPressEvent(ke); + QWidget::keyPressEvent(ke); } } @@ -441,7 +449,7 @@ void TaskView::adjustMinimumSizeHint() QSize TaskView::minimumSizeHint() const { - QSize ms = QScrollArea::minimumSizeHint(); + QSize ms = QWidget::minimumSizeHint(); int spacing = 0; if (QLayout* layout = taskPanel->layout()) { spacing = 2 * layout->spacing(); @@ -592,7 +600,8 @@ void TaskView::showDialog(TaskDialog *dlg) dlg->modifyStandardButtons(ActiveCtrl->buttonBox); if (dlg->buttonPosition() == TaskDialog::North) { - taskPanel->addWidget(ActiveCtrl); + // Add button box to the top of the main layout + mainLayout->insertWidget(0, ActiveCtrl); for (const auto & it : cont){ taskPanel->addWidget(it); } @@ -601,7 +610,8 @@ void TaskView::showDialog(TaskDialog *dlg) for (const auto & it : cont){ taskPanel->addWidget(it); } - taskPanel->addWidget(ActiveCtrl); + // Add button box to the bottom of the main layout + mainLayout->addWidget(ActiveCtrl); } taskPanel->setScheme(QSint::ActionPanelScheme::defaultScheme()); @@ -627,7 +637,7 @@ void TaskView::removeDialog() getMainWindow()->updateActions(); if (ActiveCtrl) { - taskPanel->removeWidget(ActiveCtrl); + mainLayout->removeWidget(ActiveCtrl); delete ActiveCtrl; ActiveCtrl = nullptr; } diff --git a/src/Gui/TaskView/TaskView.h b/src/Gui/TaskView/TaskView.h index bf4537f1b7..92fada916f 100644 --- a/src/Gui/TaskView/TaskView.h +++ b/src/Gui/TaskView/TaskView.h @@ -138,7 +138,7 @@ public: * This elements get injected mostly by the ViewProvider classes of the selected * DocumentObjects. */ -class GuiExport TaskView : public QScrollArea, public Gui::SelectionSingleton::ObserverType +class GuiExport TaskView : public QWidget, public Gui::SelectionSingleton::ObserverType { Q_OBJECT @@ -188,6 +188,8 @@ private: void slotUndoDocument(const App::Document&); void slotRedoDocument(const App::Document&); void transactionChangeOnDocument(const App::Document&, bool undo); + QVBoxLayout* mainLayout; + QScrollArea* scrollArea; protected: void keyPressEvent(QKeyEvent* event) override;