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); | ... | ... |