Commit 18e73fa39869002f5f20920360accd2a6936cda3
1 parent
99b409ca
Exists in
master
and in
1 other branch
Blinkgin SSL indicator while downloadin CRL.
Showing
6 changed files
with
29 additions
and
22 deletions
Show diff stats
src/include/internals.h
... | ... | @@ -338,7 +338,7 @@ G_GNUC_INTERNAL void v3270_draw_element(cairo_t *cr, unsigned char chr, unsigned |
338 | 338 | G_GNUC_INTERNAL void v3270_update_cursor(H3270 *session, unsigned short row, unsigned short col, unsigned char c, unsigned short attr); |
339 | 339 | G_GNUC_INTERNAL void v3270_update_oia(v3270 *terminal, LIB3270_FLAG id, unsigned char on); |
340 | 340 | |
341 | - G_GNUC_INTERNAL void v3270_blink_ssl(v3270 *terminal); | |
341 | + G_GNUC_INTERNAL gboolean v3270_blink_ssl(v3270 *terminal); | |
342 | 342 | |
343 | 343 | G_GNUC_INTERNAL void v3270_queue_draw_area(GtkWidget *widget, gint x, gint y, gint width, gint height); |
344 | 344 | ... | ... |
src/terminal/blink.c
... | ... | @@ -34,6 +34,12 @@ |
34 | 34 | |
35 | 35 | /*--[ Implement ]------------------------------------------------------------------------------------*/ |
36 | 36 | |
37 | + gboolean v3270_blink_ssl(v3270 *terminal) | |
38 | + { | |
39 | + LIB3270_SSL_STATE state = lib3270_get_ssl_state(terminal->host); | |
40 | + return (state == LIB3270_SSL_NEGOTIATING || state == LIB3270_SSL_VERIFYING); | |
41 | + } | |
42 | + | |
37 | 43 | static gboolean blink_timer_tick(v3270 *widget) |
38 | 44 | { |
39 | 45 | gboolean rc = FALSE; |
... | ... | @@ -47,7 +53,7 @@ |
47 | 53 | rc = TRUE; |
48 | 54 | } |
49 | 55 | |
50 | - if(lib3270_get_ssl_state(widget->host) == LIB3270_SSL_NEGOTIATING) | |
56 | + if(v3270_blink_ssl(widget)) | |
51 | 57 | { |
52 | 58 | GdkRectangle * r; |
53 | 59 | cairo_t * cr = v3270_oia_set_update_region(widget,&r,V3270_OIA_SSL); | ... | ... |
src/terminal/callbacks.c
... | ... | @@ -349,9 +349,21 @@ static void popup_handler(H3270 *session, LIB3270_NOTIFY type, const char *title |
349 | 349 | |
350 | 350 | static gboolean bg_update_ssl(H3270 *session) |
351 | 351 | { |
352 | - v3270_blink_ssl(GTK_V3270(lib3270_get_user_data(session))); | |
352 | + v3270 *terminal = GTK_V3270(lib3270_get_user_data(session)); | |
353 | 353 | |
354 | - if(lib3270_get_ssl_state(session) == LIB3270_SSL_NEGOTIATING) | |
354 | + if(terminal->surface) | |
355 | + { | |
356 | + // Redraw SSL area. | |
357 | + GdkRectangle * r; | |
358 | + cairo_t * cr = v3270_oia_set_update_region(terminal,&r,V3270_OIA_SSL); | |
359 | + | |
360 | + v3270_draw_ssl_status(terminal,cr,r); | |
361 | + v3270_queue_draw_area(GTK_WIDGET(terminal),r->x,r->y,r->width,r->height); | |
362 | + cairo_destroy(cr); | |
363 | + | |
364 | + } | |
365 | + | |
366 | + if(v3270_blink_ssl(terminal)) | |
355 | 367 | v3270_start_blinking(GTK_WIDGET(lib3270_get_user_data(session))); |
356 | 368 | |
357 | 369 | return FALSE; |
... | ... | @@ -359,6 +371,8 @@ static void popup_handler(H3270 *session, LIB3270_NOTIFY type, const char *title |
359 | 371 | |
360 | 372 | static void update_ssl(H3270 *session, G_GNUC_UNUSED LIB3270_SSL_STATE state) |
361 | 373 | { |
374 | + debug("----------------------> %d", (int) state); | |
375 | + | |
362 | 376 | g_idle_add((GSourceFunc) bg_update_ssl, session); |
363 | 377 | } |
364 | 378 | ... | ... |
src/terminal/drawing/oia.c
... | ... | @@ -363,6 +363,7 @@ void v3270_draw_ssl_status(v3270 *widget, cairo_t *cr, GdkRectangle *rect) |
363 | 363 | break; |
364 | 364 | |
365 | 365 | case LIB3270_SSL_NEGOTIATING: // Negotiating SSL |
366 | + case LIB3270_SSL_VERIFYING: // Verifying SSL | |
366 | 367 | if(widget->blink.show) |
367 | 368 | { |
368 | 369 | gdk_cairo_set_source_rgba(cr,widget->color+V3270_COLOR_OIA_STATUS_WARNING); |
... | ... | @@ -1077,21 +1078,6 @@ void v3270_stop_timer(GtkWidget *widget) |
1077 | 1078 | |
1078 | 1079 | } |
1079 | 1080 | |
1080 | -void v3270_blink_ssl(v3270 *terminal) | |
1081 | -{ | |
1082 | - if(terminal->surface) | |
1083 | - { | |
1084 | - GdkRectangle * r; | |
1085 | - cairo_t * cr = v3270_oia_set_update_region(terminal,&r,V3270_OIA_SSL); | |
1086 | - | |
1087 | - v3270_draw_ssl_status(terminal,cr,r); | |
1088 | - v3270_queue_draw_area(GTK_WIDGET(terminal),r->x,r->y,r->width,r->height); | |
1089 | - cairo_destroy(cr); | |
1090 | - | |
1091 | - } | |
1092 | - | |
1093 | -} | |
1094 | - | |
1095 | 1081 | void v3270_update_oia(v3270 *terminal, LIB3270_FLAG id, unsigned char on) |
1096 | 1082 | { |
1097 | 1083 | cairo_t *cr; | ... | ... |
src/terminal/mouse.c
... | ... | @@ -363,11 +363,12 @@ gboolean v3270_motion_notify_event(GtkWidget *widget, GdkEventMotion *event) |
363 | 363 | { |
364 | 364 | switch(lib3270_get_ssl_state(terminal->host)) |
365 | 365 | { |
366 | - case LIB3270_SSL_UNSECURE: /**< No secure connection */ | |
366 | + case LIB3270_SSL_UNSECURE: // No secure connection | |
367 | 367 | id = LIB3270_POINTER_QUESTION; |
368 | 368 | break; |
369 | 369 | |
370 | - case LIB3270_SSL_NEGOTIATING: /**< Negotiating SSL */ | |
370 | + case LIB3270_SSL_NEGOTIATING: // Negotiating SSL | |
371 | + case LIB3270_SSL_VERIFYING: // Verifying SSL | |
371 | 372 | id = LIB3270_POINTER_WAITING; |
372 | 373 | break; |
373 | 374 | ... | ... |
src/testprogram/testprogram.c
... | ... | @@ -101,7 +101,7 @@ |
101 | 101 | GtkWidget * notebook = gtk_notebook_new(); |
102 | 102 | |
103 | 103 | // Hack to speed up the tests. |
104 | - lib3270_ssl_set_crl_download(v3270_get_session(terminal),0); | |
104 | + //lib3270_ssl_set_crl_download(v3270_get_session(terminal),0); | |
105 | 105 | |
106 | 106 | gtk_box_pack_start(GTK_BOX(vBox),create_toolbar(terminal),FALSE,TRUE,0); |
107 | 107 | gtk_box_pack_start(GTK_BOX(vBox),notebook,TRUE,TRUE,0); | ... | ... |