Commit c7e72e0e1bd7c1ef4057cf24bb32e70a076ef778

Authored by Perry Werneck
1 parent 06f4b00a
Exists in master and in 1 other branch develop

Adding lib3270's toggle accelerators.

src/include/internals.h
... ... @@ -148,6 +148,7 @@
148 148 {
149 149 V3270_ACCELERATOR_TYPE_INTERNAL, ///< @brief Accelerator is internal.
150 150 V3270_ACCELERATOR_TYPE_LIB3270_ACTION, ///< @brief Accelerator is a lib3270 action.
  151 + V3270_ACCELERATOR_TYPE_LIB3270_TOGGLE, ///< @brief Accelerator is a lib3270 toggle.
151 152 V3270_ACCELERATOR_TYPE_CUSTOM, ///< @brief Custom (application based) accelerator.
152 153 };
153 154  
... ...
src/terminal/keyboard/accelerator.c
... ... @@ -113,6 +113,9 @@
113 113 case V3270_ACCELERATOR_TYPE_LIB3270_ACTION:
114 114 return ((LIB3270_ACTION *) accel->arg)->name;
115 115  
  116 + case V3270_ACCELERATOR_TYPE_LIB3270_TOGGLE:
  117 + return ((LIB3270_TOGGLE *) accel->arg)->name;
  118 +
116 119 case V3270_ACCELERATOR_TYPE_INTERNAL:
117 120 return ((struct InternalAction *) accel->arg)->name;
118 121  
... ...
src/terminal/keyboard/init.c
... ... @@ -34,6 +34,7 @@
34 34 #include <lib3270/actions.h>
35 35 #include <gdk/gdkkeysyms-compat.h>
36 36 #include <v3270/actions.h>
  37 + #include <lib3270/toggle.h>
37 38  
38 39 #ifndef GDK_NUMLOCK_MASK
39 40 #define GDK_NUMLOCK_MASK GDK_MOD2_MASK
... ... @@ -111,6 +112,13 @@
111 112 .activate = G_CALLBACK(fire_paste_accelerator)
112 113 },
113 114  
  115 + /*
  116 + <accelerator action='zoom' mode='in' key='<ctrl>KP_Add' group='online' />
  117 + <accelerator action='zoom' mode='out' key='<ctrl>KP_Subtract' group='online' />
  118 + <accelerator action='zoom' mode='fit' key='<ctrl>0' group='online' />
  119 + */
  120 +
  121 +
114 122 };
115 123  
116 124 /*--[ Implement ]------------------------------------------------------------------------------------*/
... ... @@ -131,6 +139,12 @@
131 139  
132 140 }
133 141  
  142 + static int fire_lib3270_toggle(GtkWidget *widget, const LIB3270_TOGGLE * action)
  143 + {
  144 + debug("%s(%s)",__FUNCTION__,action->name);
  145 + return lib3270_toggle(v3270_get_session(widget),action->id);
  146 + }
  147 +
134 148 static int fire_keypad_action(GtkWidget *widget, const struct InternalAction * action)
135 149 {
136 150 int rc = 0;
... ... @@ -193,6 +207,30 @@
193 207  
194 208 }
195 209  
  210 + // Create accelerators for lib3270 toggles.
  211 + {
  212 + const LIB3270_TOGGLE * toggles = lib3270_get_toggles();
  213 + size_t ix;
  214 +
  215 + for(ix = 0; toggles[ix].name; ix++)
  216 + {
  217 + if(toggles[ix].key)
  218 + {
  219 + V3270Accelerator * accelerator = g_new0(V3270Accelerator,1);
  220 +
  221 + accelerator->type = V3270_ACCELERATOR_TYPE_LIB3270_TOGGLE;
  222 + accelerator->arg = (gconstpointer) &toggles[ix];
  223 + accelerator->activate = G_CALLBACK(fire_lib3270_toggle);
  224 +
  225 + gtk_accelerator_parse(toggles[ix].key,&accelerator->key,&accelerator->mods);
  226 +
  227 + widget->accelerators = g_slist_prepend(widget->accelerators,accelerator);
  228 +
  229 + }
  230 + }
  231 +
  232 + }
  233 +
196 234 // Create accelerators for internal actions.
197 235 {
198 236 size_t ix;
... ...