summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gui/Cheat.c25
1 files changed, 20 insertions, 5 deletions
diff --git a/gui/Cheat.c b/gui/Cheat.c
index 01aab2b1..4eeef198 100644
--- a/gui/Cheat.c
+++ b/gui/Cheat.c
@@ -275,14 +275,29 @@ static void OnCheatListDlg_DelClicked(GtkWidget *widget, gpointer user_data) {
// rather than regenerating the whole list
}
-static void OnCheatListDlg_EnableToggled(GtkWidget *widget, gchar *path, gpointer user_data) {
- int i = atoi(path);
+static void OnCheatListDlg_EnableToggled(GtkCellRendererToggle *cell, gchar *path_str, gpointer user_data) {
+ GtkWidget *widget;
+ GtkTreeModel *model;
+ GtkTreePath *path;
+ GtkTreeIter iter;
+ gboolean fixed;
+
+ widget = gtk_builder_get_object (builder, "GtkCList_Cheat");
+ model = gtk_tree_view_get_model (GTK_TREE_VIEW(widget));
+ path = gtk_tree_path_new_from_string (path_str);
+
+ gtk_tree_model_get_iter (model, &iter, path);
+ gtk_tree_model_get (model, &iter, 0, &fixed, -1);
+ fixed ^= 1;
+
+ int i = atoi(path_str);
assert(i >= 0 && i < NumCheats);
- Cheats[i].Enabled ^= 1;
+
+ Cheats[i].Enabled = fixed;
- LoadCheatListItems(i); // FIXME: should modify it in the list directly
- // rather than regenerating the whole list
+ gtk_list_store_set (GTK_LIST_STORE (model), &iter, 0, fixed, -1);
+ gtk_tree_path_free (path);
}
static void OnCheatListDlg_OpenClicked(GtkWidget *widget, gpointer user_data) {