From 99df3072b98d6aa2cdde3a6dca0b09b334b1982f Mon Sep 17 00:00:00 2001 From: deepin-ci-robot Date: Sat, 23 Nov 2024 07:38:58 +0000 Subject: [PATCH] sync: from linuxdeepin/dtkwidget Synchronize source files from linuxdeepin/dtkwidget. Source-pull-request: https://github.com/linuxdeepin/dtkwidget/pull/621 --- src/widgets/ddialog.cpp | 21 +++++---------------- src/widgets/dtitlebar.cpp | 2 +- 2 files changed, 6 insertions(+), 17 deletions(-) diff --git a/src/widgets/ddialog.cpp b/src/widgets/ddialog.cpp index 815f1682..f77fb199 100644 --- a/src/widgets/ddialog.cpp +++ b/src/widgets/ddialog.cpp @@ -41,7 +41,7 @@ DDialogPrivate::DDialogPrivate(DDialog *qq) , iconLayout(nullptr) , contentLayout(nullptr) , buttonLayout(nullptr) - , clickedButtonIndex(0) + , clickedButtonIndex(-1) { } @@ -240,9 +240,9 @@ void DDialogPrivate::_q_onButtonClicked() if (button) { int index = buttonList.indexOf(button); q->buttonClicked(index, button->text()); + clickedButtonIndex = index; if (onButtonClickedClose) { - clickedButtonIndex = index; q->done(clickedButtonIndex); } } @@ -1109,19 +1109,7 @@ int DDialog::exec() D_D(DDialog); d->clickedButtonIndex = -1; - int clickedIndex = d->clickedButtonIndex; - - if (d->onButtonClickedClose) { - // 如果设置了WA_DeleteOnClose属性,那么在exec()中将直接delete this - // d->clickedButtonIndex中记录的数据失效,这里通过信号槽更新正确的数据 - connect(this, &DDialog::buttonClicked, this, [ &clickedIndex ] (int index, const QString &) { - clickedIndex = index; - }); - } - - int code = DAbstractDialog::exec(); - - return clickedIndex >= 0 ? clickedIndex : code; + return DAbstractDialog::exec(); } void DDialog::setCloseButtonVisible(bool closeButtonVisible) @@ -1163,10 +1151,11 @@ void DDialog::hideEvent(QHideEvent *event) void DDialog::closeEvent(QCloseEvent *event) { Q_UNUSED(event) + Q_D(DDialog); Q_EMIT aboutToClose(); - done(-1); + done(d->clickedButtonIndex); Q_EMIT visibleChanged(isVisible()); Q_EMIT closed(); diff --git a/src/widgets/dtitlebar.cpp b/src/widgets/dtitlebar.cpp index c3a23a70..f96c85b6 100644 --- a/src/widgets/dtitlebar.cpp +++ b/src/widgets/dtitlebar.cpp @@ -1533,7 +1533,7 @@ void DTitlebar::setVisible(bool visible) connect(d->maxButton, SIGNAL(clicked()), this, SLOT(_q_toggleWindowState()), Qt::UniqueConnection); connect(this, SIGNAL(doubleClicked()), this, SLOT(_q_toggleWindowState()), Qt::UniqueConnection); connect(d->minButton, SIGNAL(clicked()), this, SLOT(_q_showMinimized()), Qt::UniqueConnection); - connect(d->closeButton, &DWindowCloseButton::clicked, d->targetWindow(), &QWidget::close, Qt::UniqueConnection); + connect(d->closeButton, SIGNAL(clicked(bool)), this, SLOT(_q_quitActionTriggered()), Qt::UniqueConnection); d->updateButtonsState(d->targetWindow()->windowFlags()); } else {