plugins/mouseclick: Fix glitches

Effect frame geometry is not properly synchronized with the quick
scene geometry.

BUG: 477892
wilder/Plasma/6.2
Vlad Zahorodnii 2 years ago
parent b98607c689
commit 09f97c8037
  1. 8
      src/effect/effectframe.cpp
  2. 3
      src/effect/effectframe.h
  3. 3
      src/plugins/mouseclick/mouseclick.cpp

@ -229,9 +229,8 @@ EffectFrame::EffectFrame(EffectFrameStyle style, bool staticSize, QPoint positio
connect(m_view, &OffscreenQuickScene::repaintNeeded, this, [this] {
effects->addRepaint(geometry());
});
connect(m_view, &OffscreenQuickScene::geometryChanged, this, [this](const QRect &oldGeometry, const QRect &newGeometry) {
connect(m_view, &OffscreenQuickScene::geometryChanged, this, [](const QRect &oldGeometry, const QRect &newGeometry) {
effects->addRepaint(oldGeometry);
m_geometry = newGeometry;
effects->addRepaint(newGeometry);
});
}
@ -270,10 +269,9 @@ void EffectFrame::free()
m_view->hide();
}
const QRect &EffectFrame::geometry() const
QRect EffectFrame::geometry() const
{
// Can't forward to OffscreenQuickScene::geometry() because we return a reference.
return m_geometry;
return m_view->geometry();
}
void EffectFrame::setGeometry(const QRect &geometry, bool force)

@ -139,7 +139,7 @@ public:
void setAlignment(Qt::Alignment alignment);
Qt::Alignment alignment() const;
void setGeometry(const QRect &geometry, bool force = false);
const QRect &geometry() const;
QRect geometry() const;
void setText(const QString &text);
const QString &text() const;
@ -198,7 +198,6 @@ public:
private:
EffectFrameQuickScene *m_view;
QRect m_geometry;
};
} // namespace KWin

@ -203,8 +203,7 @@ void MouseClickEffect::repaint()
for (auto &click : m_clicks) {
dirtyRegion |= QRect(click->m_pos.x() - radius, click->m_pos.y() - radius, 2 * radius, 2 * radius);
if (click->m_frame) {
// we grant the plasma style 32px padding for stuff like shadows...
dirtyRegion |= click->m_frame->geometry().adjusted(-32, -32, 32, 32);
dirtyRegion |= click->m_frame->geometry();
}
}
effects->addRepaint(dirtyRegion);

Loading…
Cancel
Save