From 55c2393c86ab5ac3d2925f75ecd7510d8db69413 Mon Sep 17 00:00:00 2001
From: Matthias Puchner <github@mpuchner.de>
Date: Mon, 26 Jul 2021 10:02:54 +0200
Subject: [PATCH] fill toolbar with actions, not with buttons

this fixes #103 (GUI: "More..." button in JobWidget is not working)

explanation for changes: filling toolbars with buttons breaks the "more"-button functionality, therefore use the already existing actions to fill the toolbar
---
 GUI/Views/JobWidgets/JobSelectorActions.h   |  3 ++
 GUI/Views/JobWidgets/JobSelectorToolBar.cpp | 38 ---------------------
 GUI/Views/JobWidgets/JobSelectorToolBar.h   | 37 --------------------
 GUI/Views/JobWidgets/JobSelectorWidget.cpp  | 10 ++++--
 GUI/Views/JobWidgets/JobSelectorWidget.h    |  2 --
 5 files changed, 10 insertions(+), 80 deletions(-)
 delete mode 100644 GUI/Views/JobWidgets/JobSelectorToolBar.cpp
 delete mode 100644 GUI/Views/JobWidgets/JobSelectorToolBar.h

diff --git a/GUI/Views/JobWidgets/JobSelectorActions.h b/GUI/Views/JobWidgets/JobSelectorActions.h
index f2f04bb7cc6..e0df8e2dcf1 100644
--- a/GUI/Views/JobWidgets/JobSelectorActions.h
+++ b/GUI/Views/JobWidgets/JobSelectorActions.h
@@ -47,8 +47,11 @@ private:
     bool canRunJob(const QModelIndex& index) const;
     bool canRemoveJob(const QModelIndex& index) const;
 
+public:
     QAction* m_runJobAction;
     QAction* m_removeJobAction;
+
+private:
     QItemSelectionModel* m_selectionModel;
     JobModel* m_jobModel;
 };
diff --git a/GUI/Views/JobWidgets/JobSelectorToolBar.cpp b/GUI/Views/JobWidgets/JobSelectorToolBar.cpp
deleted file mode 100644
index 69727809e27..00000000000
--- a/GUI/Views/JobWidgets/JobSelectorToolBar.cpp
+++ /dev/null
@@ -1,38 +0,0 @@
-//  ************************************************************************************************
-//
-//  BornAgain: simulate and fit reflection and scattering
-//
-//! @file      GUI/Views/JobWidgets/JobSelectorToolBar.cpp
-//! @brief     Implements class JobSelectorToolBar
-//!
-//! @homepage  http://www.bornagainproject.org
-//! @license   GNU General Public License v3 or higher (see COPYING)
-//! @copyright Forschungszentrum Jülich GmbH 2018
-//! @authors   Scientific Computing Group at MLZ (see CITATION, AUTHORS)
-//
-//  ************************************************************************************************
-
-#include "GUI/Views/JobWidgets/JobSelectorToolBar.h"
-#include "GUI/Views/JobWidgets/JobSelectorActions.h"
-#include <QToolButton>
-
-JobSelectorToolBar::JobSelectorToolBar(JobSelectorActions* actions, QWidget* parent)
-    : StyledToolBar(parent), m_runJobButton(new QToolButton), m_removeJobButton(new QToolButton)
-{
-    setMinimumSize(minimumHeight(), minimumHeight());
-
-    m_runJobButton->setText("Run");
-    m_runJobButton->setIcon(QIcon(":/images/play.svg"));
-    m_runJobButton->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
-    m_runJobButton->setToolTip("Run currently selected job");
-    addWidget(m_runJobButton);
-
-    m_removeJobButton->setText("Remove");
-    m_removeJobButton->setIcon(QIcon(":/images/delete.svg"));
-    m_removeJobButton->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
-    m_removeJobButton->setToolTip("Remove currently selected job.");
-    addWidget(m_removeJobButton);
-
-    connect(m_runJobButton, &QToolButton::clicked, actions, &JobSelectorActions::onRunJob);
-    connect(m_removeJobButton, &QToolButton::clicked, actions, &JobSelectorActions::onRemoveJob);
-}
diff --git a/GUI/Views/JobWidgets/JobSelectorToolBar.h b/GUI/Views/JobWidgets/JobSelectorToolBar.h
deleted file mode 100644
index 39e1e3f703e..00000000000
--- a/GUI/Views/JobWidgets/JobSelectorToolBar.h
+++ /dev/null
@@ -1,37 +0,0 @@
-//  ************************************************************************************************
-//
-//  BornAgain: simulate and fit reflection and scattering
-//
-//! @file      GUI/Views/JobWidgets/JobSelectorToolBar.h
-//! @brief     Defines class JobSelectorToolBar
-//!
-//! @homepage  http://www.bornagainproject.org
-//! @license   GNU General Public License v3 or higher (see COPYING)
-//! @copyright Forschungszentrum Jülich GmbH 2018
-//! @authors   Scientific Computing Group at MLZ (see CITATION, AUTHORS)
-//
-//  ************************************************************************************************
-
-#ifndef BORNAGAIN_GUI_VIEWS_JOBWIDGETS_JOBSELECTORTOOLBAR_H
-#define BORNAGAIN_GUI_VIEWS_JOBWIDGETS_JOBSELECTORTOOLBAR_H
-
-#include "GUI/Views/CommonWidgets/StyledToolBar.h"
-
-class QAction;
-class QToolButton;
-class JobSelectorActions;
-
-//! Styled tool bar on top of JobSelector with run/remove job buttons.
-
-class JobSelectorToolBar : public StyledToolBar {
-    Q_OBJECT
-
-public:
-    explicit JobSelectorToolBar(JobSelectorActions* actions, QWidget* parent = nullptr);
-
-private:
-    QToolButton* m_runJobButton;
-    QToolButton* m_removeJobButton;
-};
-
-#endif // BORNAGAIN_GUI_VIEWS_JOBWIDGETS_JOBSELECTORTOOLBAR_H
diff --git a/GUI/Views/JobWidgets/JobSelectorWidget.cpp b/GUI/Views/JobWidgets/JobSelectorWidget.cpp
index c05358ac3a0..c2877103a7f 100644
--- a/GUI/Views/JobWidgets/JobSelectorWidget.cpp
+++ b/GUI/Views/JobWidgets/JobSelectorWidget.cpp
@@ -18,7 +18,6 @@
 #include "GUI/Views/JobWidgets/JobListWidget.h"
 #include "GUI/Views/JobWidgets/JobPropertiesWidget.h"
 #include "GUI/Views/JobWidgets/JobSelectorActions.h"
-#include "GUI/Views/JobWidgets/JobSelectorToolBar.h"
 #include "GUI/Views/Tools/mainwindow_constants.h"
 #include <QHBoxLayout>
 #include <QSplitter>
@@ -26,7 +25,6 @@
 JobSelectorWidget::JobSelectorWidget(JobModel* jobModel, QWidget* parent)
     : QWidget(parent)
     , m_jobSelectorActions(new JobSelectorActions(jobModel, this))
-    , m_toolBar(new JobSelectorToolBar(m_jobSelectorActions, this))
     , m_jobListWidget(new JobListWidget)
     , m_jobProperties(new JobPropertiesWidget)
     , m_jobModel(nullptr)
@@ -44,11 +42,17 @@ JobSelectorWidget::JobSelectorWidget(JobModel* jobModel, QWidget* parent)
     splitter->addWidget(m_jobProperties);
     splitter->setChildrenCollapsible(true);
 
+    QToolBar* toolBar = new StyledToolBar(this);
+    toolBar->setMinimumSize(toolBar->minimumHeight(), toolBar->minimumHeight());
+    toolBar->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
+    toolBar->addAction(m_jobSelectorActions->m_runJobAction);
+    toolBar->addAction(m_jobSelectorActions->m_removeJobAction);
+
     auto mainLayout = new QVBoxLayout;
     mainLayout->setMargin(0);
     mainLayout->setSpacing(0);
     mainLayout->setContentsMargins(0, 0, 0, 0);
-    mainLayout->addWidget(m_toolBar);
+    mainLayout->addWidget(toolBar);
     mainLayout->addWidget(splitter);
     setLayout(mainLayout);
 
diff --git a/GUI/Views/JobWidgets/JobSelectorWidget.h b/GUI/Views/JobWidgets/JobSelectorWidget.h
index 404dc0c5595..39795eba3c2 100644
--- a/GUI/Views/JobWidgets/JobSelectorWidget.h
+++ b/GUI/Views/JobWidgets/JobSelectorWidget.h
@@ -19,7 +19,6 @@
 
 class JobModel;
 class JobItem;
-class JobSelectorToolBar;
 class JobSelectorActions;
 class JobListWidget;
 class JobPropertiesWidget;
@@ -51,7 +50,6 @@ private slots:
 
 private:
     JobSelectorActions* m_jobSelectorActions;
-    JobSelectorToolBar* m_toolBar;
     JobListWidget* m_jobListWidget;
     JobPropertiesWidget* m_jobProperties;
     JobModel* m_jobModel;
-- 
GitLab