Commit 9eb284f7cd3ecedc7e488d250cebaf22031902d4
1 parent
4beab7ef
Exists in
master
and in
4 other branches
Keeping a list of keypads in the object model.
Showing
2 changed files
with
15 additions
and
1 deletions
Show diff stats
src/objects/keypad/private.h
src/objects/keypad/widget.c
@@ -58,6 +58,13 @@ | @@ -58,6 +58,13 @@ | ||
58 | 58 | ||
59 | } | 59 | } |
60 | 60 | ||
61 | + static void destroy(GtkWidget *grid, KeypadModel * keypad) { | ||
62 | + | ||
63 | + keypad->widgets = g_list_remove(keypad->widgets,grid); | ||
64 | + g_object_unref(keypad); | ||
65 | + | ||
66 | + } | ||
67 | + | ||
61 | GtkWidget * pw3270_keypad_get_from_model(GObject *model) { | 68 | GtkWidget * pw3270_keypad_get_from_model(GObject *model) { |
62 | 69 | ||
63 | g_return_val_if_fail(PW_IS_KEYPAD_MODEL(model),NULL); | 70 | g_return_val_if_fail(PW_IS_KEYPAD_MODEL(model),NULL); |
@@ -66,7 +73,13 @@ | @@ -66,7 +73,13 @@ | ||
66 | gtk_grid_set_column_homogeneous(GTK_GRID(grid),TRUE); | 73 | gtk_grid_set_column_homogeneous(GTK_GRID(grid),TRUE); |
67 | gtk_grid_set_row_homogeneous(GTK_GRID(grid),TRUE); | 74 | gtk_grid_set_row_homogeneous(GTK_GRID(grid),TRUE); |
68 | 75 | ||
69 | - g_list_foreach(PW_KEYPAD_MODEL(model)->elements,(GFunc) create_child, grid); | 76 | + KeypadModel * keypad = PW_KEYPAD_MODEL(model); |
77 | + | ||
78 | + keypad->widgets = g_list_prepend(keypad->widgets,grid); | ||
79 | + g_object_ref_sink(keypad); | ||
80 | + g_signal_connect(G_OBJECT(grid),"destroy", G_CALLBACK(destroy),keypad); | ||
81 | + | ||
82 | + g_list_foreach(keypad->elements,(GFunc) create_child, grid); | ||
70 | 83 | ||
71 | return grid; | 84 | return grid; |
72 | } | 85 | } |