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 | } |