diff options
author | Nick Dedekind <nicholas.dedekind@gmail.com> | 2013-08-15 12:48:55 +0100 |
---|---|---|
committer | Nick Dedekind <nicholas.dedekind@gmail.com> | 2013-08-15 12:48:55 +0100 |
commit | 67394e49c25cb273b53cd2034bb2d31b14a7402a (patch) | |
tree | eb8d157af84308e4a733a3b0745fa0e2ca5a4748 /libqmenumodel/src/unitymenumodel.cpp | |
parent | bac9f37d6fc619e3c1c57754e0afe7b197c7668c (diff) | |
download | qmenumodel-67394e49c25cb273b53cd2034bb2d31b14a7402a.tar.gz qmenumodel-67394e49c25cb273b53cd2034bb2d31b14a7402a.tar.bz2 qmenumodel-67394e49c25cb273b53cd2034bb2d31b14a7402a.zip |
Added toGVariantWithSchema for UnityMenuModel::changeState
Diffstat (limited to 'libqmenumodel/src/unitymenumodel.cpp')
-rw-r--r-- | libqmenumodel/src/unitymenumodel.cpp | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/libqmenumodel/src/unitymenumodel.cpp b/libqmenumodel/src/unitymenumodel.cpp index e5407ab..50eff1c 100644 --- a/libqmenumodel/src/unitymenumodel.cpp +++ b/libqmenumodel/src/unitymenumodel.cpp @@ -607,13 +607,25 @@ void UnityMenuModel::activate(int index, const QVariant& parameter) void UnityMenuModel::changeState(int index, const QVariant& parameter) { GtkMenuTrackerItem* item; + GVariant* data; + GVariant* current_state; item = (GtkMenuTrackerItem *) g_sequence_get (g_sequence_get_iter_at_pos (priv->items, index)); if (!item) return; - GVariant* data = Converter::toGVariant(parameter); + current_state = gtk_menu_tracker_item_get_action_state (item); + if (current_state) { + // Attempt to convert the parameter to the expected type + data = Converter::toGVariantWithSchema(parameter, g_variant_get_type_string(current_state)); + g_variant_unref (current_state); + } else { + data = Converter::toGVariant(parameter); + } + gtk_menu_tracker_item_change_state (item, data); - g_variant_unref(data); + if (data) { + g_variant_unref(data); + } } |