diff options
author | Nick Dedekind <nicholas.dedekind@gmail.com> | 2013-08-26 14:08:39 +0000 |
---|---|---|
committer | Tarmac <> | 2013-08-26 14:08:39 +0000 |
commit | 50563a1ab243436c8c8fa86f88ef4a4b25b9a107 (patch) | |
tree | 5220ed33b70c5b6d5fdf555b4a7f75d4e66d7c1d /libqmenumodel/src/unitymenumodel.cpp | |
parent | 346f5fce5ddaf12dff92f467d69a1dd5841012c8 (diff) | |
parent | 67394e49c25cb273b53cd2034bb2d31b14a7402a (diff) | |
download | qmenumodel-50563a1ab243436c8c8fa86f88ef4a4b25b9a107.tar.gz qmenumodel-50563a1ab243436c8c8fa86f88ef4a4b25b9a107.tar.bz2 qmenumodel-50563a1ab243436c8c8fa86f88ef4a4b25b9a107.zip |
UnityMenuModel::changeState now uses current state parameter type as a base for parameter GVariant conversion.
Approved by Lars Uebernickel, PS Jenkins bot.
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 031de9a..3ea61ec 100644 --- a/libqmenumodel/src/unitymenumodel.cpp +++ b/libqmenumodel/src/unitymenumodel.cpp @@ -621,13 +621,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); + } } |