@@ -32,20 +32,8 @@ QgsFilterLineEdit::QgsFilterLineEdit( QWidget *parent, const QString &nullValue
32
32
// icon size is about 2/3 height of text, but minimum size of 16
33
33
int iconSize = std::floor ( std::max ( Qgis::UI_SCALE_FACTOR * fontMetrics ().height () * 0.75 , 16.0 ) );
34
34
35
- QIcon clearIcon;
36
- clearIcon.addPixmap ( QgsApplication::getThemeIcon ( " /mIconClearText.svg" ).pixmap ( QSize ( iconSize, iconSize ) ), QIcon::Normal, QIcon::On );
37
- clearIcon.addPixmap ( QgsApplication::getThemeIcon ( " /mIconClearTextHover.svg" ).pixmap ( QSize ( iconSize, iconSize ) ), QIcon::Selected, QIcon::On );
38
- mClearAction = new QAction ( clearIcon, QString (), this );
39
- mClearAction ->setCheckable ( false );
40
- addAction ( mClearAction , QLineEdit::TrailingPosition );
41
- connect ( mClearAction , &QAction::triggered, this , &QgsFilterLineEdit::clearValue );
42
- mClearAction ->setVisible ( false );
43
-
44
- QIcon searchIcon = QgsApplication::getThemeIcon ( " /search.svg" );
45
- mSearchAction = new QAction ( searchIcon, QString (), this );
46
- mSearchAction ->setCheckable ( false );
47
- addAction ( mSearchAction , QLineEdit::LeadingPosition );
48
- mSearchAction ->setVisible ( false );
35
+ mClearIcon .addPixmap ( QgsApplication::getThemeIcon ( " /mIconClearText.svg" ).pixmap ( QSize ( iconSize, iconSize ) ), QIcon::Normal, QIcon::On );
36
+ mClearIcon .addPixmap ( QgsApplication::getThemeIcon ( " /mIconClearTextHover.svg" ).pixmap ( QSize ( iconSize, iconSize ) ), QIcon::Selected, QIcon::On );
49
37
50
38
connect ( this , &QLineEdit::textChanged, this ,
51
39
&QgsFilterLineEdit::onTextChanged );
@@ -59,13 +47,35 @@ void QgsFilterLineEdit::setShowClearButton( bool visible )
59
47
60
48
void QgsFilterLineEdit::setShowSearchIcon ( bool visible )
61
49
{
62
- mSearchIconVisible = visible;
63
- mSearchAction ->setVisible ( visible );
50
+ if ( visible && !mSearchAction )
51
+ {
52
+ QIcon searchIcon = QgsApplication::getThemeIcon ( " /search.svg" );
53
+ mSearchAction = new QAction ( searchIcon, QString (), this );
54
+ mSearchAction ->setCheckable ( false );
55
+ addAction ( mSearchAction , QLineEdit::LeadingPosition );
56
+ }
57
+ else if ( !visible && mSearchAction )
58
+ {
59
+ mSearchAction ->deleteLater ();
60
+ mSearchAction = nullptr ;
61
+ }
64
62
}
65
63
66
64
void QgsFilterLineEdit::updateClearIcon ()
67
65
{
68
- mClearAction ->setVisible ( shouldShowClear () );
66
+ bool showClear = shouldShowClear ();
67
+ if ( showClear && !mClearAction )
68
+ {
69
+ mClearAction = new QAction ( mClearIcon , QString (), this );
70
+ mClearAction ->setCheckable ( false );
71
+ addAction ( mClearAction , QLineEdit::TrailingPosition );
72
+ connect ( mClearAction , &QAction::triggered, this , &QgsFilterLineEdit::clearValue );
73
+ }
74
+ else if ( !showClear && mClearAction )
75
+ {
76
+ mClearAction ->deleteLater ();
77
+ mClearAction = nullptr ;
78
+ }
69
79
}
70
80
71
81
void QgsFilterLineEdit::focusInEvent ( QFocusEvent *e )
0 commit comments