diff --git a/kcms/cursortheme/kcmcursortheme.h b/kcms/cursortheme/kcmcursortheme.h --- a/kcms/cursortheme/kcmcursortheme.h +++ b/kcms/cursortheme/kcmcursortheme.h @@ -89,6 +89,7 @@ void selectedSizeRowChanged(); void downloadingFileChanged(); void preferredSizeChanged(); + void themeApplied(); void showSuccessMessage(const QString &message); void showInfoMessage(const QString &message); diff --git a/kcms/cursortheme/kcmcursortheme.cpp b/kcms/cursortheme/kcmcursortheme.cpp --- a/kcms/cursortheme/kcmcursortheme.cpp +++ b/kcms/cursortheme/kcmcursortheme.cpp @@ -334,6 +334,7 @@ XFixesChangeCursorByName(QX11Info::display(), theme->loadCursor(name, size), QFile::encodeName(name)); } updateSizeComboBox(); + emit themeApplied(); return true; #else Q_UNUSED(theme) diff --git a/kcms/cursortheme/package/contents/ui/Delegate.qml b/kcms/cursortheme/package/contents/ui/Delegate.qml --- a/kcms/cursortheme/package/contents/ui/Delegate.qml +++ b/kcms/cursortheme/package/contents/ui/Delegate.qml @@ -51,6 +51,13 @@ currentSize: kcm.cursorThemeSettings.cursorSize } + Connections { + target: kcm + onThemeApplied: { + previewWidget.refresh(); + } + } + actions: [ Kirigami.Action { iconName: "edit-delete" diff --git a/kcms/cursortheme/xcursor/previewwidget.h b/kcms/cursortheme/xcursor/previewwidget.h --- a/kcms/cursortheme/xcursor/previewwidget.h +++ b/kcms/cursortheme/xcursor/previewwidget.h @@ -51,6 +51,8 @@ void setCurrentSize(int size); int currentSize() const; + Q_INVOKABLE void refresh(); + Q_SIGNALS: void themeModelChanged(); void currentIndexChanged(); diff --git a/kcms/cursortheme/xcursor/previewwidget.cpp b/kcms/cursortheme/xcursor/previewwidget.cpp --- a/kcms/cursortheme/xcursor/previewwidget.cpp +++ b/kcms/cursortheme/xcursor/previewwidget.cpp @@ -197,6 +197,16 @@ return m_currentSize; } +void PreviewWidget::refresh() +{ + if (!m_themeModel) { + return; + } + + const CursorTheme *theme = m_themeModel->theme(m_themeModel->index(m_currentIndex, 0)); + setTheme(theme, m_currentSize); +} + void PreviewWidget::updateImplicitSize() { qreal totalWidth = 0;