@@ -51,7 +51,6 @@ QgsComposerLabel::QgsComposerLabel( QgsComposition *composition )
51
51
, mFontColor( QColor( 0 , 0 , 0 ) )
52
52
, mHAlignment( Qt::AlignLeft )
53
53
, mVAlignment( Qt::AlignTop )
54
- , mExpressionLayer( nullptr )
55
54
, mDistanceArea( nullptr )
56
55
{
57
56
mDistanceArea = new QgsDistanceArea ();
@@ -79,7 +78,8 @@ QgsComposerLabel::QgsComposerLabel( QgsComposition *composition )
79
78
{
80
79
// connect to atlas feature changes
81
80
// to update the expression context
82
- connect ( &mComposition ->atlasComposition (), SIGNAL ( featureChanged ( QgsFeature * ) ), this , SLOT ( refreshExpressionContext () ) );
81
+ connect ( &mComposition ->atlasComposition (), &QgsAtlasComposition::featureChanged, this , &QgsComposerLabel::refreshExpressionContext );
82
+ connect ( mComposition , &QgsComposition::refreshItemsTriggered, this , &QgsComposerLabel::contentChanged );
83
83
}
84
84
85
85
mWebPage = new QgsWebPage ( this );
@@ -96,7 +96,7 @@ QgsComposerLabel::QgsComposerLabel( QgsComposition *composition )
96
96
mWebPage ->mainFrame ()->setScrollBarPolicy ( Qt::Horizontal, Qt::ScrollBarAlwaysOff );
97
97
mWebPage ->mainFrame ()->setScrollBarPolicy ( Qt::Vertical, Qt::ScrollBarAlwaysOff );
98
98
99
- connect ( mWebPage , SIGNAL ( loadFinished ( bool ) ), SLOT ( loadingHtmlFinished ( bool ) ) );
99
+ connect ( mWebPage , &QWebPage:: loadFinished, this , &QgsComposerLabel:: loadingHtmlFinished );
100
100
}
101
101
102
102
QgsComposerLabel::~QgsComposerLabel ()
@@ -131,6 +131,11 @@ void QgsComposerLabel::paint( QPainter *painter, const QStyleOptionGraphicsItem
131
131
132
132
if ( mHtmlState )
133
133
{
134
+ if ( mFirstRender )
135
+ {
136
+ contentChanged ();
137
+ mFirstRender = false ;
138
+ }
134
139
painter->scale ( 1.0 / mHtmlUnitsToMM / 10.0 , 1.0 / mHtmlUnitsToMM / 10.0 );
135
140
mWebPage ->setViewportSize ( QSize ( painterRect.width () * mHtmlUnitsToMM * 10.0 , painterRect.height () * mHtmlUnitsToMM * 10.0 ) );
136
141
mWebPage ->settings ()->setUserStyleSheetUrl ( createStylesheetUrl () );
@@ -178,12 +183,12 @@ void QgsComposerLabel::contentChanged()
178
183
QEventLoop loop;
179
184
180
185
// Connect timeout and webpage loadFinished signals to loop
181
- connect ( mWebPage , SIGNAL ( loadFinished ( bool ) ) , &loop, SLOT ( quit () ) );
186
+ connect ( mWebPage , &QWebPage:: loadFinished, &loop, &QEventLoop:: quit );
182
187
183
188
// Start a 20 second timeout in case html loading will never complete
184
189
QTimer timeoutTimer;
185
190
timeoutTimer.setSingleShot ( true );
186
- connect ( &timeoutTimer, SIGNAL ( timeout () ) , &loop, SLOT ( quit () ) );
191
+ connect ( &timeoutTimer, &QTimer:: timeout, &loop, &QEventLoop:: quit );
187
192
timeoutTimer.start ( 20000 );
188
193
189
194
// Pause until html is loaded
@@ -243,9 +248,6 @@ void QgsComposerLabel::setHtmlState( int state )
243
248
244
249
void QgsComposerLabel::refreshExpressionContext ()
245
250
{
246
- mExpressionLayer = nullptr ;
247
- mExpressionFeature .reset ();
248
-
249
251
if ( !mComposition )
250
252
return ;
251
253
@@ -280,12 +282,6 @@ QString QgsComposerLabel::displayText() const
280
282
replaceDateText ( displayText );
281
283
282
284
QgsExpressionContext context = createExpressionContext ();
283
- // overwrite layer/feature if they have been set via setExpressionContext
284
- // TODO remove when setExpressionContext is removed
285
- if ( mExpressionFeature .get () )
286
- context.setFeature ( *mExpressionFeature );
287
- if ( mExpressionLayer )
288
- context.setFields ( mExpressionLayer ->fields () );
289
285
290
286
return QgsExpression::replaceExpressionText ( displayText, &context, mDistanceArea );
291
287
}
@@ -464,7 +460,6 @@ bool QgsComposerLabel::readXml( const QDomElement &itemElem, const QDomDocument
464
460
_readXml ( composerItemElem, doc );
465
461
}
466
462
emit itemChanged ();
467
- contentChanged ();
468
463
return true ;
469
464
}
470
465
0 commit comments