diff --git a/src/plasma/framesvg.cpp b/src/plasma/framesvg.cpp index 16d0e17c1..a6d0d740d 100644 --- a/src/plasma/framesvg.cpp +++ b/src/plasma/framesvg.cpp @@ -243,7 +243,7 @@ void FrameSvg::resizeFrame(const QSizeF &size) d->pendingFrameSize = size.toSize(); if (!d->repaintBlocked) { - d->updateFrameData(); + d->updateFrameData(FrameSvgPrivate::UpdateFrame); } } @@ -689,7 +689,7 @@ QRect FrameSvgPrivate::contentGeometry(FrameData* frame, const QSize& size) cons return contentRect; } -void FrameSvgPrivate::updateFrameData() +void FrameSvgPrivate::updateFrameData(UpdateType updateType) { FrameData *fd = frame; @@ -754,7 +754,11 @@ void FrameSvgPrivate::updateFrameData() // we know it isn't in s_sharedFrames due to the check above, so insert it now FrameSvgPrivate::s_sharedFrames[q->theme()->d].insert(newKey, fd); fd->theme = q->theme()->d; - updateAndSignalSizes(); + if (updateType == UpdateFrameAndMargins) { + updateAndSignalSizes(); + } else { + updateSizes(frame); + } } void FrameSvgPrivate::paintCenter(QPainter& p, FrameData* frame, const QRect& contentRect, const QSize& fullSize) diff --git a/src/plasma/private/framesvg_p.h b/src/plasma/private/framesvg_p.h index c7082dc01..c277276d1 100644 --- a/src/plasma/private/framesvg_p.h +++ b/src/plasma/private/framesvg_p.h @@ -151,6 +151,11 @@ public: QPixmap alphaMask(); + enum UpdateType { + UpdateFrame, + UpdateFrameAndMargins + }; + void generateBackground(FrameData *frame); void generateFrameBackground(FrameData *frame); QString cacheId(FrameData *frame, const QString &prefixToUse) const; @@ -163,7 +168,7 @@ public: void paintCorner(QPainter& p, FrameData* frame, Plasma::FrameSvg::EnabledBorders border, const QRect& output) const; void paintCenter(QPainter& p, FrameData* frame, const QRect& contentRect, const QSize& fullSize); QRect contentGeometry(FrameData* frame, const QSize& size) const; - void updateFrameData(); + void updateFrameData(UpdateType updateType = UpdateFrameAndMargins); Types::Location location; QString prefix;