Skip to content

Commit d639dcf

Browse files
deepin-ci-robot18202781743
authored andcommitted
sync: from linuxdeepin/dtkwidget
Synchronize source files from linuxdeepin/dtkwidget. Source-pull-request: linuxdeepin/dtkwidget#684
1 parent 39e3d6d commit d639dcf

File tree

2 files changed

+22
-14
lines changed

2 files changed

+22
-14
lines changed

src/widgets/dsearchedit.cpp

Lines changed: 20 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
#endif
2121

2222
#include <QAction>
23+
#include <QWidgetAction>
2324
#include <QPainter>
2425
#include <QDebug>
2526
#include <QLabel>
@@ -292,21 +293,27 @@ void DSearchEditPrivate::init()
292293
{
293294
D_Q(DSearchEdit);
294295
label = new QLabel;
295-
DIconButton *iconbtn = new DIconButton(DStyle::SP_IndicatorSearch);
296296

297-
iconbtn->setFlat(true);
298-
iconbtn->setFocusPolicy(Qt::NoFocus);
299-
iconbtn->setAttribute(Qt::WA_TransparentForMouseEvents);
300-
iconbtn->setAccessibleName("DSearchEditIconButton");
297+
auto createSearchIconButton = []() {
298+
DIconButton *iconbtn = new DIconButton(DStyle::SP_IndicatorSearch);
299+
iconbtn->setFlat(true);
300+
iconbtn->setFocusPolicy(Qt::NoFocus);
301+
iconbtn->setAttribute(Qt::WA_TransparentForMouseEvents);
302+
iconbtn->setAccessibleName("DSearchEditIconButton");
303+
iconbtn->setIconSize(QSize(20, 20));
304+
return iconbtn;
305+
};
306+
307+
auto iconbtn = createSearchIconButton();
301308

302309
placeHolder = qApp->translate("DSearchEdit", "Search");
303310

304-
action = new QAction(q);
311+
action = new QWidgetAction(q);
305312
action->setObjectName("_d_search_leftAction");
306-
action->setIcon(DIconTheme::findQIcon("search_indicator"));
313+
auto iconAction = createSearchIconButton();
314+
action->setDefaultWidget(iconAction);
307315
q->lineEdit()->addAction(action, QLineEdit::LeadingPosition);
308-
action->setVisible(false);
309-
iconbtn->setIconSize(QSize(20, 20));
316+
action->defaultWidget()->setVisible(false);
310317

311318
DPalette pe;
312319
QStyleOption opt;
@@ -405,7 +412,7 @@ void DSearchEditPrivate::_q_toEditMode(bool focus)
405412
q->lineEdit()->setTextMargins(textMargins);
406413
if (animation->direction() == QPropertyAnimation::Direction::Forward) {
407414
iconWidget->setVisible(false);
408-
action->setVisible(true);
415+
action->defaultWidget()->setVisible(true);
409416
lineEdit->setPlaceholderText(placeholderText);
410417
} else {
411418
iconWidget->setVisible(true);
@@ -420,7 +427,7 @@ void DSearchEditPrivate::_q_toEditMode(bool focus)
420427
if (focus) {
421428
animation->setDirection(QPropertyAnimation::Direction::Forward);
422429
} else {
423-
action->setVisible(false);
430+
action->defaultWidget()->setVisible(false);
424431
animation->setDirection(QPropertyAnimation::Direction::Backward);
425432
}
426433

@@ -429,11 +436,11 @@ void DSearchEditPrivate::_q_toEditMode(bool focus)
429436
animation->start();
430437
} else {
431438
if (focus || !q->lineEdit()->text().isEmpty()) {
432-
action->setVisible(true);
439+
action->defaultWidget()->setVisible(true);
433440
iconWidget->setVisible(false);
434441
lineEdit->setPlaceholderText(placeholderText);
435442
} else {
436-
action->setVisible(false);
443+
action->defaultWidget()->setVisible(false);
437444
iconWidget->setVisible(true);
438445
lineEdit->setPlaceholderText(QString());
439446
}

src/widgets/private/dsearchedit_p.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313

1414
QT_BEGIN_NAMESPACE
1515
class QAudioInput;
16+
class QWidgetAction;
1617
QT_END_NAMESPACE
1718

1819
DWIDGET_BEGIN_NAMESPACE
@@ -32,7 +33,7 @@ class DSearchEditPrivate : DLineEditPrivate
3233
void _q_clearFocus();
3334

3435
public:
35-
QAction *action;
36+
QWidgetAction *action;
3637
QString placeHolder;
3738
QString placeholderText;
3839

0 commit comments

Comments
 (0)