Gui: Tasks: fix in place close and ok buttons

This commit is contained in:
Alfredo Monclus
2025-06-18 08:49:58 -06:00
committed by Kacper Donat
parent 0090566724
commit e45cf96afb
6 changed files with 29 additions and 17 deletions

View File

@@ -1,5 +1,5 @@
Gui--DockWnd--ReportOutput,
Gui--TaskView--TaskView {
Gui--TaskView--TaskView QScrollArea {
border: none;
}

View File

@@ -1,5 +1,5 @@
Gui--DockWnd--ReportOutput,
Gui--TaskView--TaskView {
Gui--TaskView--TaskView QScrollArea {
border: none;
}

View File

@@ -1,5 +1,5 @@
Gui--DockWnd--ReportOutput,
Gui--TaskView--TaskView {
Gui--TaskView--TaskView QScrollArea {
border: none;
}

View File

@@ -1,5 +1,5 @@
Gui--DockWnd--ReportOutput,
Gui--TaskView--TaskView {
Gui--TaskView--TaskView QScrollArea {
border: none;
}

View File

@@ -32,6 +32,7 @@
# include <QPointer>
# include <QPushButton>
# include <QTimer>
# include <QVBoxLayout>
#endif
#include <App/Document.h>
@@ -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;
}

View File

@@ -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;