Commit 5ac55a01cb27c6d9fa43107ce0ee13319c40d488
1 parent
e4da3ca6
Exists in
master
and in
1 other branch
Rômulo Silva Neiva
29 de agosto de 2012 07:54 * não é tão necessário, mas a versão 4.1 tem, a rolagem de tela através da roda do mouse.
Showing
3 changed files
with
27 additions
and
0 deletions
Show diff stats
mouse.c
| ... | ... | @@ -36,6 +36,10 @@ |
| 36 | 36 | #include <lib3270/actions.h> |
| 37 | 37 | #include <lib3270/log.h> |
| 38 | 38 | |
| 39 | +/*--[ Globals ]--------------------------------------------------------------------------------------*/ | |
| 40 | + | |
| 41 | + static GtkAction *action_scroll[] = { NULL, NULL, NULL, NULL }; | |
| 42 | + | |
| 39 | 43 | /*--[ Implement ]------------------------------------------------------------------------------------*/ |
| 40 | 44 | |
| 41 | 45 | gint v3270_get_offset_at_point(v3270 *widget, gint x, gint y) |
| ... | ... | @@ -262,3 +266,24 @@ gboolean v3270_motion_notify_event(GtkWidget *widget, GdkEventMotion *event) |
| 262 | 266 | |
| 263 | 267 | return FALSE; |
| 264 | 268 | } |
| 269 | + | |
| 270 | +void v3270_set_scroll_action(GtkWidget *widget, GdkScrollDirection direction, GtkAction *action) | |
| 271 | +{ | |
| 272 | + g_return_if_fail(GTK_IS_V3270(widget)); | |
| 273 | + action_scroll[((int) direction) & 0x03] = action; | |
| 274 | +} | |
| 275 | + | |
| 276 | +gboolean v3270_scroll_event(GtkWidget *widget, GdkEventScroll *event, gpointer user_data) | |
| 277 | +{ | |
| 278 | + v3270 * terminal = GTK_V3270(widget); | |
| 279 | + | |
| 280 | + if(lib3270_get_program_message(terminal->host) != LIB3270_MESSAGE_NONE || event->direction < 0 || event->direction > G_N_ELEMENTS(action_scroll)) | |
| 281 | + return FALSE; | |
| 282 | + | |
| 283 | + trace("Scroll: %d Action: %p",event->direction,action_scroll[event->direction]); | |
| 284 | + | |
| 285 | + if(action_scroll[event->direction]) | |
| 286 | + gtk_action_activate(action_scroll[event->direction]); | |
| 287 | + | |
| 288 | + return TRUE; | |
| 289 | + } | ... | ... |
private.h
| ... | ... | @@ -254,5 +254,6 @@ gboolean v3270_button_release_event(GtkWidget *widget, GdkEventButton*event); |
| 254 | 254 | gboolean v3270_motion_notify_event(GtkWidget *widget, GdkEventMotion *event); |
| 255 | 255 | void v3270_emit_popup(v3270 *widget, int baddr, GdkEventButton *event); |
| 256 | 256 | gint v3270_get_offset_at_point(v3270 *widget, gint x, gint y); |
| 257 | +gboolean v3270_scroll_event(GtkWidget *widget, GdkEventScroll *event, gpointer user_data); | |
| 257 | 258 | |
| 258 | 259 | G_END_DECLS | ... | ... |
widget.c
| ... | ... | @@ -294,6 +294,7 @@ static void v3270_class_init(v3270Class *klass) |
| 294 | 294 | widget_class->button_release_event = v3270_button_release_event; |
| 295 | 295 | widget_class->motion_notify_event = v3270_motion_notify_event; |
| 296 | 296 | widget_class->popup_menu = v3270_popup_menu; |
| 297 | + widget_class->scroll_event = v3270_scroll_event; | |
| 297 | 298 | |
| 298 | 299 | /* Accessibility support */ |
| 299 | 300 | widget_class->get_accessible = v3270_get_accessible; | ... | ... |