From 1ae4cd71e10761e19c7e35b66f7d808815a4bad2 Mon Sep 17 00:00:00 2001 From: perry.werneck@gmail.com Date: Tue, 20 Mar 2012 12:21:23 +0000 Subject: [PATCH] Implementando movimentação da caixa de seleção --- src/gtk/actions.c | 49 ++++++++++++++++++++++++++++++++++++++++++++++++- src/gtk/uiparser/parsefile.c | 8 ++++---- src/lib3270/selection.c | 4 +++- ui/00default.xml | 8 ++++---- 4 files changed, 59 insertions(+), 10 deletions(-) diff --git a/src/gtk/actions.c b/src/gtk/actions.c index d18f988..2e1ce7e 100644 --- a/src/gtk/actions.c +++ b/src/gtk/actions.c @@ -177,9 +177,56 @@ void ui_connect_toggle(GtkAction *action, GtkWidget *widget, const gchar *name, gtk_action_set_sensitive(action,FALSE); } +static void selection_move_action(GtkAction *action, GtkWidget *widget) +{ + trace("Action %s activated on widget %p dir=%d",gtk_action_get_name(action),widget,g_object_get_data(G_OBJECT(action),"direction")); + lib3270_move_selection(GTK_V3270(widget)->host,(LIB3270_DIRECTION) g_object_get_data(G_OBJECT(action),"direction")); +} + void ui_connect_target_action(GtkAction *action, GtkWidget *widget, const gchar *target, const gchar *direction, GError **error) { - #warning TODO: Implementar + static const gchar *dirname[] = { "up", "down", "left", "right" }; + + LIB3270_DIRECTION dir = (LIB3270_DIRECTION) -1; + int f; + + if(!(direction && target)) + { + gtk_action_set_sensitive(action,FALSE); + return; + } + + for(f=0;f= 0) ui_connect_index_action(info->action[ix] = action,info->center_widget,ix,info->action); - else if(g_strcasecmp(name,"quit")) - connect(action,info->center_widget,name,id); else if(target) ui_connect_target_action(action,info->center_widget,target,direction,error); + else if(g_strcasecmp(name,"quit")) + connect(action,info->center_widget,name,id); else g_signal_connect(action,"activate",G_CALLBACK(gtk_main_quit), NULL); diff --git a/src/lib3270/selection.c b/src/lib3270/selection.c index 20d4505..e965fb2 100644 --- a/src/lib3270/selection.c +++ b/src/lib3270/selection.c @@ -376,7 +376,7 @@ LIB3270_EXPORT int lib3270_move_selection(H3270 *hSession, LIB3270_DIRECTION dir break; case LIB3270_DIR_RIGHT: - if( (hSession->select.end % hSession->cols) >= hSession->cols) + if( (hSession->select.end % hSession->cols) >= (hSession->cols-1)) return EINVAL; hSession->select.begin++; hSession->select.end++; @@ -387,5 +387,7 @@ LIB3270_EXPORT int lib3270_move_selection(H3270 *hSession, LIB3270_DIRECTION dir } update_selection(hSession); + lib3270_set_cursor_address(hSession,hSession->select.end); + return 0; } diff --git a/ui/00default.xml b/ui/00default.xml index 1ca622d..4e33c4d 100644 --- a/ui/00default.xml +++ b/ui/00default.xml @@ -194,10 +194,10 @@ - - - - + + + + -- libgit2 0.21.2