diff --git a/src/gtk/actions.c b/src/gtk/actions.c index 8dc8809..5ef0130 100644 --- a/src/gtk/actions.c +++ b/src/gtk/actions.c @@ -36,6 +36,7 @@ #include #define ERROR_DOMAIN g_quark_from_static_string(PACKAGE_NAME) + #define TOGGLE_GDKDEBUG LIB3270_TOGGLE_COUNT+1 /*--[ Implement ]------------------------------------------------------------------------------------*/ @@ -186,7 +187,10 @@ static void lib3270_toggle_action(GtkToggleAction *action,GtkWidget *widget) trace("Action %s toggled on widget %p (id=%d)",gtk_action_get_name(GTK_ACTION(action)),widget,(int) toggle); - lib3270_set_toggle(GTK_V3270(widget)->host,toggle,gtk_toggle_action_get_active(action)); + if(toggle == TOGGLE_GDKDEBUG) + gdk_window_set_debug_updates(gtk_toggle_action_get_active(action)); + else + lib3270_set_toggle(GTK_V3270(widget)->host,toggle,gtk_toggle_action_get_active(action)); } static void selection_move_action(GtkAction *action, GtkWidget *widget) @@ -327,11 +331,18 @@ GtkAction * ui_get_action(GtkWidget *widget, const gchar *name, GHashTable *hash if(!attr) attr = ui_get_attribute("toggle",names,values); - id = lib3270_get_toggle_id(attr); - if(id < 0) + if(g_strcasecmp(attr,"gdkdebug")) { - *error = g_error_new(ERROR_DOMAIN,EINVAL,_("%s action needs a valid toggle name" ), name); - return NULL; + id = lib3270_get_toggle_id(attr); + if(id < 0) + { + *error = g_error_new(ERROR_DOMAIN,EINVAL,_("%s action needs a valid toggle name" ), name); + return NULL; + } + } + else + { + id = TOGGLE_GDKDEBUG; } nm = g_strconcat(name,attr,NULL); } diff --git a/src/gtk/mainwindow.c b/src/gtk/mainwindow.c index de7a8da..aacd5d3 100644 --- a/src/gtk/mainwindow.c +++ b/src/gtk/mainwindow.c @@ -199,6 +199,11 @@ } + static void has_text(GtkWidget *widget, gboolean on, GtkActionGroup **group) + { + gtk_action_group_set_sensitive(group[ACTION_GROUP_CLIPBOARD],on); + } + static void pastenext(GtkWidget *widget, gboolean on, GtkAction **action) { gtk_action_set_sensitive(action[ACTION_PASTENEXT],on); @@ -346,9 +351,10 @@ g_signal_connect(terminal,"model_changed",G_CALLBACK(update_model),0); g_signal_connect(terminal,"selecting",G_CALLBACK(selecting),group); g_signal_connect(terminal,"popup",G_CALLBACK(popup_menu),popup); + g_signal_connect(terminal,"has_text",G_CALLBACK(has_text),group); g_free(path); - gtk_widget_grab_focus(terminal); +// gtk_widget_grab_focus(terminal); if(lib3270_get_toggle(host,LIB3270_TOGGLE_FULL_SCREEN)) gtk_window_fullscreen(GTK_WINDOW(window)); @@ -358,6 +364,7 @@ #endif trace("%s ends",__FUNCTION__); + gtk_window_set_focus(GTK_WINDOW(window),terminal); return window; } diff --git a/src/gtk/v3270/clipboard.c b/src/gtk/v3270/clipboard.c index 29d9db2..6bee43f 100644 --- a/src/gtk/v3270/clipboard.c +++ b/src/gtk/v3270/clipboard.c @@ -90,6 +90,7 @@ void v3270_copy_clipboard(v3270 *widget) if(!text) { + g_signal_emit(widget,v3270_widget_signal[SIGNAL_CLIPBOARD], 0, FALSE); lib3270_ring_bell(widget->host); return; } @@ -108,6 +109,9 @@ void v3270_copy_clipboard(v3270 *widget) { gtk_clipboard_set_can_store(clipboard,targets,1); } + + g_signal_emit(widget,v3270_widget_signal[SIGNAL_CLIPBOARD], 0, TRUE); + } void v3270_paste_string(GtkWidget *widget, const gchar *text, const gchar *encoding) diff --git a/src/gtk/v3270/private.h b/src/gtk/v3270/private.h index fa8197d..4bd8354 100644 --- a/src/gtk/v3270/private.h +++ b/src/gtk/v3270/private.h @@ -75,6 +75,7 @@ G_BEGIN_DECLS SIGNAL_SELECTING, SIGNAL_POPUP, SIGNAL_PASTENEXT, + SIGNAL_CLIPBOARD, LAST_SIGNAL }; diff --git a/src/gtk/v3270/widget.c b/src/gtk/v3270/widget.c index 498161f..aaeb752 100644 --- a/src/gtk/v3270/widget.c +++ b/src/gtk/v3270/widget.c @@ -302,6 +302,14 @@ static void v3270_class_init(v3270Class *klass) pw3270_VOID__VOID_BOOL, G_TYPE_NONE, 1, G_TYPE_BOOLEAN); + v3270_widget_signal[SIGNAL_CLIPBOARD] = + g_signal_new( "has_text", + G_OBJECT_CLASS_TYPE (gobject_class), + G_SIGNAL_RUN_FIRST, + 0, + NULL, NULL, + pw3270_VOID__VOID_BOOL, + G_TYPE_NONE, 1, G_TYPE_BOOLEAN); } void v3270_update_font_metrics(v3270 *terminal, cairo_t *cr, int width, int height) @@ -875,12 +883,8 @@ int v3270_connect(GtkWidget *widget, const gchar *host) g_return_val_if_fail(GTK_IS_V3270(widget),EINVAL); - terminal = GTK_V3270(widget); - rc = lib3270_connect(terminal->host,host,0); - -/* if(host) { set_string_to_config("host","uri","%s",host); @@ -897,7 +901,7 @@ int v3270_connect(GtkWidget *widget, const gchar *host) g_free(hs); } -*/ + trace("%s exits with rc=%d (%s)",__FUNCTION__,rc,strerror(rc)); return rc; diff --git a/ui/00default.xml b/ui/00default.xml index c449046..4826421 100644 --- a/ui/00default.xml +++ b/ui/00default.xml @@ -181,7 +181,7 @@ - + diff --git a/ui/99debug.xml b/ui/99debug.xml index 69be3ff..fa3823c 100644 --- a/ui/99debug.xml +++ b/ui/99debug.xml @@ -41,6 +41,7 @@ + -- libgit2 0.21.2