Commit 596b82c155c361de72a92e6b7631fa285cbb9f6a

Authored by Perry Werneck
2 parents 409a16f0 5f8647ab
Exists in master and in 1 other branch develop

Merge branch 'master' into fix_print_segfault

src/dialogs/security.c
... ... @@ -196,6 +196,7 @@
196 196  
197 197 LIB3270_EXPORT void v3270_popup_security_dialog(GtkWidget *widget)
198 198 {
  199 + /*
199 200 GtkWidget * dialog = gtk_dialog_new_with_buttons(
200 201 _("About security"),
201 202 GTK_WINDOW(gtk_widget_get_toplevel(widget)),
... ... @@ -203,14 +204,44 @@
203 204 _( "_Close" ), GTK_RESPONSE_ACCEPT,
204 205 NULL
205 206 );
  207 + */
206 208  
  209 + gboolean use_header = FALSE;
  210 +
  211 +#if GTK_CHECK_VERSION(3,12,0)
  212 +
  213 + g_object_get(gtk_settings_get_default(), "gtk-dialogs-use-header", &use_header, NULL);
  214 +
  215 + GtkWidget * dialog =
  216 + GTK_WIDGET(g_object_new(
  217 + GTK_TYPE_DIALOG,
  218 + "use-header-bar", (use_header ? 1 : 0),
  219 + NULL
  220 + ));
  221 +
  222 +#else
  223 +
  224 + GtkWidget * dialog = GTK_WIDGET(g_object_new(GTK_TYPE_DIALOG, NULL));
  225 +
  226 +#endif // GTK 3.12
  227 +
  228 + if(!use_header) {
  229 + gtk_dialog_add_buttons(
  230 + GTK_DIALOG(dialog),
  231 + _("_Close"), GTK_RESPONSE_CANCEL,
  232 + NULL
  233 + );
  234 + }
  235 +
  236 + gtk_window_set_title(GTK_WINDOW(dialog),_("About security"));
207 237 gtk_window_set_default_size(GTK_WINDOW(dialog), 800, 500);
  238 + gtk_window_set_transient_for(GTK_WINDOW(dialog),GTK_WINDOW(gtk_widget_get_toplevel(widget)));
  239 + gtk_window_set_modal(GTK_WINDOW(dialog),TRUE);
208 240  
209 241 gtk_box_pack_start(GTK_BOX(gtk_dialog_get_content_area(GTK_DIALOG(dialog))),v3270_security_dialog_new(widget),TRUE,TRUE,2);
210 242 gtk_widget_show_all(dialog);
211 243  
212   - gtk_dialog_run(GTK_DIALOG(dialog));
213   - gtk_widget_destroy(GTK_WIDGET(dialog));
214   -
  244 + g_signal_connect(dialog,"close",G_CALLBACK(gtk_widget_destroy),NULL);
  245 + g_signal_connect(dialog,"response",G_CALLBACK(gtk_widget_destroy),NULL);
215 246  
216 247 }
... ...
src/selection/text.c
... ... @@ -53,6 +53,7 @@ gchar * v3270_get_selection_as_text(v3270 * terminal, const GList *selection, co
53 53 src++;
54 54  
55 55 }
  56 + g_string_append_c(string,'\n');
56 57 }
57 58  
58 59 selection = g_list_next(selection);
... ... @@ -60,6 +61,13 @@ gchar * v3270_get_selection_as_text(v3270 * terminal, const GList *selection, co
60 61  
61 62 g_autofree char * text = g_string_free(string,FALSE);
62 63  
  64 + // Remove ending CR.
  65 + {
  66 + size_t length = strlen(text);
  67 + if(length > 1 && text[length-1] == '\n') // The '\n' isn't really necessary but...
  68 + text[length-1] = 0;
  69 + }
  70 +
63 71 return g_convert(text, -1, (encoding ? encoding : "UTF-8"), lib3270_get_display_charset(terminal->host), NULL, NULL, NULL);
64 72  
65 73 }
... ... @@ -138,31 +146,6 @@ gchar * v3270_convert_to_3270_charset(GtkWidget *widget, const gchar *text, cons
138 146  
139 147 }
140 148  
141   - /*
142   - // Still failing, convert line by line
143   - {
144   - size_t f;
145   - gchar **ln = g_strsplit(text,"\n",-1);
146   -
147   - for(f=0;ln[f];f++)
148   - {
149   - GError *error = NULL;
150   - gchar *str = g_convert(ln[f], -1, charset, encoding, NULL, NULL, error);
151   -
152   - if(!str)
153   - {
154   - g_strfreev(ln);
155   - return NULL;
156   - }
157   -
158   - g_free(str);
159   -
160   - }
161   - g_strfreev(ln);
162   -
163   - }
164   - */
165   -
166 149 // Can't convert, use fallbacks
167 150 return g_convert_with_fallback(
168 151 text,
... ...
src/terminal/mouse.c
... ... @@ -194,15 +194,31 @@ gboolean v3270_button_release_event(GtkWidget *widget, GdkEventButton*event)
194 194 if(GTK_V3270(widget)->oia.selected != V3270_OIA_FIELD_INVALID && GTK_V3270(widget)->oia.selected == get_field_from_event(GTK_V3270(widget),event))
195 195 {
196 196 gboolean handled = FALSE;
  197 + gboolean connected = lib3270_is_connected(GTK_V3270(widget)->host) ? TRUE : FALSE;
  198 + V3270_OIA_FIELD field = GTK_V3270(widget)->oia.selected;
197 199  
198 200 g_signal_emit(widget, v3270_widget_signal[V3270_SIGNAL_FIELD], 0,
199   - lib3270_is_connected(GTK_V3270(widget)->host) ? TRUE : FALSE,
200   - GTK_V3270(widget)->oia.selected,
  201 + connected,
  202 + field,
201 203 event,
202 204 &handled);
203 205  
204   - if(!handled)
205   - gdk_display_beep(gdk_display_get_default());
  206 + debug("Field click was %s", handled ? "Handled" : "Not handled");
  207 +
  208 + if(!handled) {
  209 +
  210 + // The signal was not handled, take default action.
  211 + if(connected && field == V3270_OIA_SSL) {
  212 +
  213 + // Show the default ssl status dialog.
  214 + debug("%s: Showing the default SSL status dialog",__FUNCTION__);
  215 + v3270_popup_security_dialog(widget);
  216 +
  217 + } else {
  218 + gdk_display_beep(gdk_display_get_default());
  219 + }
  220 +
  221 + }
206 222  
207 223 }
208 224  
... ...
src/testprogram/testprogram.c
... ... @@ -48,6 +48,23 @@
48 48 gtk_window_set_title(GTK_WINDOW(window),v3270_get_session_title(terminal));
49 49 }
50 50  
  51 + /*
  52 + static gboolean field_clicked(GtkWidget *widget, gboolean connected, V3270_OIA_FIELD field, GdkEventButton *event, GtkWidget *window) {
  53 + debug("%s: %s field=%d event=%p window=%p",__FUNCTION__,connected ? "Connected" : "Disconnected", field, event, window);
  54 +
  55 + if(!connected)
  56 + return FALSE;
  57 +
  58 + if(field == V3270_OIA_SSL) {
  59 + // v3270_popup_security_dialog(widget);
  60 + debug("%s: Show SSL connection info dialog",__FUNCTION__);
  61 + return TRUE;
  62 + }
  63 +
  64 + return FALSE;
  65 + }
  66 + */
  67 +
51 68 static void activate(GtkApplication* app, G_GNUC_UNUSED gpointer user_data) {
52 69  
53 70 GtkWidget * window = gtk_application_window_new(app);
... ... @@ -92,6 +109,7 @@
92 109 gtk_widget_show_all(window);
93 110  
94 111 g_signal_connect(G_OBJECT(terminal),"session_changed",G_CALLBACK(session_changed),window);
  112 + // g_signal_connect(G_OBJECT(terminal),"field_clicked",G_CALLBACK(field_clicked),window);
95 113  
96 114 gtk_widget_grab_focus(terminal);
97 115  
... ...