Index: plasma/applet.cpp =================================================================== --- plasma/applet.cpp (Revision 1090827) +++ plasma/applet.cpp (Revision 1090828) @@ -1712,6 +1712,7 @@ return; } + d->publishUI.publishCheckbox = 0; if (d->package && d->configLoader) { KConfigDialog *dialog = 0; @@ -1878,29 +1879,31 @@ } #ifdef ENABLE_REMOTE_WIDGETS - q->config().writeEntry("Share", publishUI.publishCheckbox->isChecked()); + if (publishUI.publishCheckbox) { + q->config().writeEntry("Share", publishUI.publishCheckbox->isChecked()); - if (publishUI.publishCheckbox->isChecked()) { - QString resourceName = - i18nc("%1 is the name of a plasmoid, %2 the name of the machine that plasmoid is published on", - "%1 on %2", q->name(), QHostInfo::localHostName()); - q->publish(Plasma::ZeroconfAnnouncement, resourceName); - if (publishUI.allUsersCheckbox->isChecked()) { - if (!AuthorizationManager::self()->d->matchingRule(resourceName, Credentials())) { - AuthorizationRule *rule = new AuthorizationRule(resourceName, ""); - rule->setPolicy(AuthorizationRule::Allow); - rule->setTargets(AuthorizationRule::AllUsers); - AuthorizationManager::self()->d->rules.append(rule); + if (publishUI.publishCheckbox->isChecked()) { + QString resourceName = + i18nc("%1 is the name of a plasmoid, %2 the name of the machine that plasmoid is published on", + "%1 on %2", q->name(), QHostInfo::localHostName()); + q->publish(Plasma::ZeroconfAnnouncement, resourceName); + if (publishUI.allUsersCheckbox->isChecked()) { + if (!AuthorizationManager::self()->d->matchingRule(resourceName, Credentials())) { + AuthorizationRule *rule = new AuthorizationRule(resourceName, ""); + rule->setPolicy(AuthorizationRule::Allow); + rule->setTargets(AuthorizationRule::AllUsers); + AuthorizationManager::self()->d->rules.append(rule); + } + } else { + AuthorizationRule *matchingRule = + AuthorizationManager::self()->d->matchingRule(resourceName, Credentials()); + if (matchingRule) { + AuthorizationManager::self()->d->rules.removeAll(matchingRule); + } } } else { - AuthorizationRule *matchingRule = - AuthorizationManager::self()->d->matchingRule(resourceName, Credentials()); - if (matchingRule) { - AuthorizationManager::self()->d->rules.removeAll(matchingRule); - } + q->unpublish(); } - } else { - q->unpublish(); } #endif