Commit 8c622e345a0bfa074e220513463d4b51160c12f9
1 parent
a4e04562
Exists in
master
and in
1 other branch
Fixing segfault on page-down accelerator.
Showing
4 changed files
with
13 additions
and
6 deletions
Show diff stats
src/terminal/keyboard/accelerator.c
@@ -55,6 +55,7 @@ | @@ -55,6 +55,7 @@ | ||
55 | { | 55 | { |
56 | V3270PFKeyAccelerator * customAccel = g_new0(V3270PFKeyAccelerator,1); | 56 | V3270PFKeyAccelerator * customAccel = g_new0(V3270PFKeyAccelerator,1); |
57 | *customAccel = *((V3270PFKeyAccelerator *) accel); | 57 | *customAccel = *((V3270PFKeyAccelerator *) accel); |
58 | + customAccel->parent.arg = (gconstpointer) customAccel; | ||
58 | rc = (V3270Accelerator *) customAccel; | 59 | rc = (V3270Accelerator *) customAccel; |
59 | } | 60 | } |
60 | break; | 61 | break; |
@@ -105,6 +106,8 @@ | @@ -105,6 +106,8 @@ | ||
105 | { | 106 | { |
106 | int rc = ((int (*)(GtkWidget *, gconstpointer)) acel->activate)(terminal, acel->arg); | 107 | int rc = ((int (*)(GtkWidget *, gconstpointer)) acel->activate)(terminal, acel->arg); |
107 | 108 | ||
109 | + debug("%s(%s)=%d (%s)",__FUNCTION__,v3270_accelerator_get_name(acel),rc,strerror(rc)); | ||
110 | + | ||
108 | if(rc) | 111 | if(rc) |
109 | gdk_display_beep(gtk_widget_get_display(terminal)); | 112 | gdk_display_beep(gtk_widget_get_display(terminal)); |
110 | 113 |
src/terminal/keyboard/init.c
@@ -89,6 +89,14 @@ | @@ -89,6 +89,14 @@ | ||
89 | 89 | ||
90 | } | 90 | } |
91 | 91 | ||
92 | + static int fire_pfkey_action(GtkWidget *widget, V3270PFKeyAccelerator *accel) | ||
93 | + { | ||
94 | + debug("%s accel=%p",__FUNCTION__,accel); | ||
95 | + debug("%s Accelerator(%s)=%p pfkey=%d",__FUNCTION__,accel->name,accel,accel->keycode); | ||
96 | + | ||
97 | + return lib3270_pfkey(v3270_get_session(widget),(int) accel->keycode); | ||
98 | + } | ||
99 | + | ||
92 | void v3270_init_accelerators(v3270 *widget) | 100 | void v3270_init_accelerators(v3270 *widget) |
93 | { | 101 | { |
94 | size_t ix; | 102 | size_t ix; |
@@ -218,6 +226,8 @@ | @@ -218,6 +226,8 @@ | ||
218 | accelerator->parent.arg = (gconstpointer) accelerator; | 226 | accelerator->parent.arg = (gconstpointer) accelerator; |
219 | accelerator->parent.activate = G_CALLBACK(fire_pfkey_action); | 227 | accelerator->parent.activate = G_CALLBACK(fire_pfkey_action); |
220 | 228 | ||
229 | + debug("%s Accelerator(%s)=%p pfkey=%d",__FUNCTION__,accelerator->name,accelerator,accelerator->keycode); | ||
230 | + | ||
221 | widget->accelerators = g_slist_prepend(widget->accelerators,accelerator); | 231 | widget->accelerators = g_slist_prepend(widget->accelerators,accelerator); |
222 | 232 | ||
223 | } | 233 | } |
src/terminal/keyboard/keyfile.c
@@ -89,11 +89,6 @@ | @@ -89,11 +89,6 @@ | ||
89 | 89 | ||
90 | } | 90 | } |
91 | 91 | ||
92 | - int fire_pfkey_action(GtkWidget *widget, V3270PFKeyAccelerator *accel) | ||
93 | - { | ||
94 | - return lib3270_pfkey(v3270_get_session(widget),(int) accel->keycode); | ||
95 | - } | ||
96 | - | ||
97 | void v3270_accelerator_map_set_entry(v3270 *terminal, const gchar *name, const gchar *keys) | 92 | void v3270_accelerator_map_set_entry(v3270 *terminal, const gchar *name, const gchar *keys) |
98 | { | 93 | { |
99 | V3270Accelerator * accel = NULL; | 94 | V3270Accelerator * accel = NULL; |
src/terminal/keyboard/private.h