diff --git a/include/widgets/dswitchbutton.h b/include/widgets/dswitchbutton.h index 81ecea91f..07795d953 100644 --- a/include/widgets/dswitchbutton.h +++ b/include/widgets/dswitchbutton.h @@ -30,6 +30,7 @@ class LIBDTKWIDGETSHARED_EXPORT DSwitchButton : public QAbstractButton, public D protected: void paintEvent(QPaintEvent *e) Q_DECL_OVERRIDE; void initStyleOption(DStyleOptionButton *option) const; + void checkStateSet() Q_DECL_OVERRIDE; private: D_DECLARE_PRIVATE(DSwitchButton) diff --git a/src/widgets/dswitchbutton.cpp b/src/widgets/dswitchbutton.cpp index 48e5d1bc0..8935c0c06 100644 --- a/src/widgets/dswitchbutton.cpp +++ b/src/widgets/dswitchbutton.cpp @@ -94,6 +94,17 @@ void DSwitchButton::initStyleOption(DStyleOptionButton *option) const option->rect.adjust(4, 4, -4, -4); } +void DSwitchButton::checkStateSet() +{ + D_D(DSwitchButton); + if (d->checked == isChecked()) + return; + + d->checked = isChecked(); + DDciIcon icon = !d->checked ? DDciIcon::fromTheme("switch_on") : DDciIcon::fromTheme("switch_off"); + d->player.setIcon(icon); +} + DSwitchButtonPrivate::DSwitchButtonPrivate(DSwitchButton *qq) : DObjectPrivate(qq) {