Skip to content

Commit 0305d8a

Browse files
Experimental implementation of close request
1 parent 25e8d86 commit 0305d8a

File tree

4 files changed

+53
-2
lines changed

4 files changed

+53
-2
lines changed

src/DockAreaWidget.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -494,7 +494,8 @@ void CDockAreaWidget::onTabCloseRequested(int Index)
494494
auto* DockWidget = dockWidget(Index);
495495
if (DockWidget->features().testFlag(CDockWidget::DockWidgetDeleteOnClose))
496496
{
497-
DockWidget->deleteDockWidget();
497+
//DockWidget->deleteDockWidget();
498+
DockWidget->closeDockWidget();
498499
}
499500
else
500501
{

src/DockWidget.cpp

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@
3131
#include "DockWidgetTab.h"
3232
#include "DockWidget.h"
3333

34+
#include <iostream>
35+
3436
#include <QBoxLayout>
3537
#include <QAction>
3638
#include <QSplitter>
@@ -745,6 +747,42 @@ void CDockWidget::deleteDockWidget()
745747
}
746748

747749

750+
//============================================================================
751+
bool CDockWidget::handleCloseRequest()
752+
{
753+
std::cout << "CDockWidget::handleCloseRequest()" << std::endl;
754+
return true;
755+
}
756+
757+
758+
//============================================================================
759+
void CDockWidget::closeDockWidget()
760+
{
761+
closeDockWidgetInternal();
762+
}
763+
764+
765+
//============================================================================
766+
bool CDockWidget::closeDockWidgetInternal()
767+
{
768+
if (features().testFlag(CDockWidget::DockWidgetDeleteOnClose))
769+
{
770+
if (handleCloseRequest())
771+
{
772+
deleteDockWidget();
773+
return true;
774+
}
775+
}
776+
else
777+
{
778+
toggleView(false);
779+
return true;
780+
}
781+
782+
return false;
783+
}
784+
785+
748786
} // namespace ads
749787

750788
//---------------------------------------------------------------------------

src/DockWidget.h

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,12 @@ private slots:
135135
*/
136136
void toggleViewInternal(bool Open);
137137

138+
/**
139+
* Internal close dock widget implementation.
140+
* The function returns true if the dock widget has been closed or hidden
141+
*/
142+
bool closeDockWidgetInternal();
143+
138144
public:
139145
using Super = QFrame;
140146

@@ -426,6 +432,12 @@ public slots:
426432
*/
427433
void deleteDockWidget();
428434

435+
/**
436+
* Closes the dock widget
437+
*/
438+
void closeDockWidget();
439+
440+
429441
signals:
430442
/**
431443
* This signal is emitted if the dock widget is opened or closed

src/DockWidgetTab.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,7 @@ private slots:
133133
void setText(const QString& title);
134134

135135
/**
136-
* This function returns true if the assigned dock widget is closeable
136+
* This function returns true if the assigned dock widget is closable
137137
*/
138138
bool isClosable() const;
139139

0 commit comments

Comments
 (0)