@@ -115,11 +115,11 @@ QString RootActionState::label() const
115115 return m_cachedState.value("label", QVariant::fromValue(QString())).toString();
116116}
117117
118−QString RootActionState::icon() const
118+QStringList RootActionState::icons() const
119119{
120− if (!isValid()) return QString();
120+ if (!isValid()) return QStringList();
121121
122− return m_cachedState.value("icon", QVariant::fromValue(QString())).toString();
122+ return m_cachedState.value("icons", QVariant::fromValue(QStringList())).toStringList();
123123}
124124
125125QString RootActionState::accessibleName() const
@@ -198,16 +198,38 @@ QVariant RootActionState::toQVariant(GVariant* state) const
198198 while (g_variant_iter_loop (&iter, "{sv}", &key, &vvalue))
199199 {
200200 QString str = QString::fromUtf8(key);
201− if (str == "icon") {
201+ if (str == "icon" && !qmap.contains("icons")) {
202+ QStringList icons;
203+
202204 // FIXME - should be sending a url.
203− GIcon *icon = g_icon_deserialize (vvalue);
204− if (icon) {
205− qmap.insert(str, iconUri(icon));
206− g_object_unref (icon);
205+ GIcon *gicon = g_icon_deserialize (vvalue);
206+ if (gicon) {
207+ icons << iconUri(gicon) << iconUri(gicon);
207208 }
208− else {
209− qmap.insert(str, QVariant(""));
209+ qmap.insert("icons", icons);
210+
211+ } else if (str == "icons") {
212+
213+ QStringList icons;
214+
215+ if (g_variant_type_is_array(g_variant_get_type(vvalue))) {
216+
217+
218+ for (int i = 0, iMax = g_variant_n_children(vvalue); i < iMax; i++) {
219+ GVariant *child = g_variant_get_child_value(vvalue, i);
220+
221+ // FIXME - should be sending a url.
222+ GIcon *gicon = g_icon_deserialize (child);
223+ if (gicon) {
224+ icons << iconUri(gicon) << iconUri(gicon);
225+ g_object_unref (gicon);
226+ }
227+ g_variant_unref(child);
228+ }
210229 }
230+ // will overwrite icon.
231+ qmap.insert("icons", icons);
232+
211233 } else {
212234 qmap.insert(str, ActionStateParser::toQVariant(vvalue));
213235 }
@@ -235,7 +257,7 @@ QVariant RootActionState::toQVariant(GVariant* state) const
235257
236258 gicon = g_icon_new_for_string (icon, NULL);
237259 if (gicon) {
238− qmap["icon"] = iconUri(gicon);
260+ qmap["icons"] = QStringList() << iconUri(gicon) << iconUri(gicon);
239261 g_object_unref (gicon);
240262 }
241263