implemented the ability to close panels
This commit is contained in:
parent
88c897de54
commit
0d2a610dd1
3 changed files with 45 additions and 8 deletions
|
@ -44,7 +44,9 @@ DockPage {
|
|||
|
||||
color: notationPage.color
|
||||
borderColor: notationPage.borderColor
|
||||
|
||||
floatable: true
|
||||
closable: true
|
||||
|
||||
PalettesWidget {}
|
||||
},
|
||||
|
@ -62,7 +64,9 @@ DockPage {
|
|||
borderColor: notationPage.borderColor
|
||||
|
||||
tabifyObjectName: "palettePanel"
|
||||
|
||||
floatable: true
|
||||
closable: true
|
||||
|
||||
InstrumentsPanel {
|
||||
anchors.fill: parent
|
||||
|
@ -82,7 +86,9 @@ DockPage {
|
|||
borderColor: notationPage.borderColor
|
||||
|
||||
tabifyObjectName: "instrumentsPanel"
|
||||
|
||||
floatable: true
|
||||
closable: true
|
||||
|
||||
InspectorForm {
|
||||
anchors.fill: parent
|
||||
|
|
|
@ -19,8 +19,6 @@
|
|||
|
||||
#include "dockpanel.h"
|
||||
|
||||
#include <QDockWidget>
|
||||
|
||||
using namespace mu::dock;
|
||||
|
||||
static const QString PANEL_QSS = QString("QDockWidget { border: 1 solid %2; color: transparent; }"
|
||||
|
@ -130,7 +128,7 @@ void DockPanel::setMinimumWidth(int width)
|
|||
|
||||
bool DockPanel::floatable() const
|
||||
{
|
||||
return panel()->features().testFlag(QDockWidget::DockWidgetFloatable);
|
||||
return featureEnabled(QDockWidget::DockWidgetFloatable);
|
||||
}
|
||||
|
||||
void DockPanel::setFloatable(bool floatable)
|
||||
|
@ -139,14 +137,40 @@ void DockPanel::setFloatable(bool floatable)
|
|||
return;
|
||||
}
|
||||
|
||||
QDockWidget::DockWidgetFeatures features = panel()->features();
|
||||
features.setFlag(QDockWidget::DockWidgetFloatable, floatable);
|
||||
|
||||
panel()->setFeatures(features);
|
||||
setFeature(QDockWidget::DockWidgetFloatable, floatable);
|
||||
|
||||
emit floatableChanged(floatable);
|
||||
}
|
||||
|
||||
bool DockPanel::closable() const
|
||||
{
|
||||
return featureEnabled(QDockWidget::DockWidgetClosable);
|
||||
}
|
||||
|
||||
void DockPanel::setClosable(bool closable)
|
||||
{
|
||||
if (closable == this->closable()) {
|
||||
return;
|
||||
}
|
||||
|
||||
setFeature(QDockWidget::DockWidgetClosable, closable);
|
||||
|
||||
emit closableChanged(closable);
|
||||
}
|
||||
|
||||
void DockPanel::setFeature(QDockWidget::DockWidgetFeature feature, bool value)
|
||||
{
|
||||
QDockWidget::DockWidgetFeatures features = panel()->features();
|
||||
features.setFlag(feature, value);
|
||||
|
||||
panel()->setFeatures(features);
|
||||
}
|
||||
|
||||
bool DockPanel::featureEnabled(QDockWidget::DockWidgetFeature feature) const
|
||||
{
|
||||
return panel()->features().testFlag(feature);
|
||||
}
|
||||
|
||||
QDockWidget* DockPanel::panel() const
|
||||
{
|
||||
return m_dock.panel;
|
||||
|
|
|
@ -22,7 +22,7 @@
|
|||
|
||||
#include "dockview.h"
|
||||
|
||||
class QDockWidget;
|
||||
#include <QDockWidget>
|
||||
|
||||
namespace mu::dock {
|
||||
class DockPanel : public DockView
|
||||
|
@ -34,6 +34,7 @@ class DockPanel : public DockView
|
|||
Q_PROPERTY(QString tabifyObjectName READ tabifyObjectName WRITE setTabifyObjectName NOTIFY tabifyObjectNameChanged)
|
||||
Q_PROPERTY(int minimumWidth READ minimumWidth WRITE setMinimumWidth NOTIFY minimumWidthChanged)
|
||||
Q_PROPERTY(bool floatable READ floatable WRITE setFloatable NOTIFY floatableChanged)
|
||||
Q_PROPERTY(bool closable READ closable WRITE setClosable NOTIFY closableChanged)
|
||||
|
||||
public:
|
||||
explicit DockPanel(QQuickItem* parent = nullptr);
|
||||
|
@ -47,6 +48,7 @@ public:
|
|||
int preferedWidth() const;
|
||||
|
||||
bool floatable() const;
|
||||
bool closable() const;
|
||||
|
||||
struct Widget {
|
||||
QDockWidget* panel = nullptr;
|
||||
|
@ -62,6 +64,7 @@ public slots:
|
|||
void setTabifyObjectName(QString tabifyObjectName);
|
||||
void setMinimumWidth(int width);
|
||||
void setFloatable(bool floatable);
|
||||
void setClosable(bool closable);
|
||||
|
||||
signals:
|
||||
void titleChanged(QString title);
|
||||
|
@ -69,6 +72,7 @@ signals:
|
|||
void tabifyObjectNameChanged(QString tabifyObjectName);
|
||||
void minimumWidthChanged(int width);
|
||||
void floatableChanged(bool floatable);
|
||||
void closableChanged(bool closable);
|
||||
|
||||
protected:
|
||||
void onComponentCompleted() override;
|
||||
|
@ -77,6 +81,9 @@ protected:
|
|||
private:
|
||||
QDockWidget* panel() const;
|
||||
|
||||
void setFeature(QDockWidget::DockWidgetFeature feature, bool value);
|
||||
bool featureEnabled(QDockWidget::DockWidgetFeature feature) const;
|
||||
|
||||
Widget m_dock;
|
||||
QString m_title;
|
||||
|
||||
|
|
Loading…
Reference in a new issue