Commit b2028ce844206a15054885b876570f8a3e068dbe

Authored by perry.werneck@gmail.com
1 parent 2d35de35

Melhorando posicionamento na OIA

src/pw3270/v3270/oia.c
... ... @@ -278,11 +278,22 @@ static void draw_undera(cairo_t *cr, H3270 *host, struct v3270_metrics *metrics,
278 278  
279 279 }
280 280  
281   -void v3270_draw_connection(cairo_t *cr, H3270 *host, struct v3270_metrics *metrics, GdkColor *color, GdkRectangle *rect)
  281 +static void draw_centered_text(cairo_t *cr, struct v3270_metrics *metrics, int x, int y, const gchar *str)
282 282 {
283 283 cairo_text_extents_t extents;
  284 + cairo_text_extents(cr,str,&extents);
  285 + cairo_move_to(cr,x+(((metrics->width+2)/2)-(extents.width/2)),y+extents.height+( (metrics->spacing/2) - (extents.height/2)));
  286 + cairo_show_text(cr,str);
  287 +}
  288 +
  289 +void v3270_draw_connection(cairo_t *cr, H3270 *host, struct v3270_metrics *metrics, GdkColor *color, const GdkRectangle *rect)
  290 +{
284 291 const gchar *str;
285 292  
  293 + gdk_cairo_set_source_color(cr,color+V3270_COLOR_OIA_BACKGROUND);
  294 + cairo_rectangle(cr, rect->x, rect->y, rect->width, rect->height);
  295 + cairo_fill(cr);
  296 +
286 297 gdk_cairo_set_source_color(cr,color+V3270_COLOR_OIA_FOREGROUND);
287 298 cairo_rectangle(cr, rect->x, rect->y, rect->width, rect->height);
288 299 cairo_stroke(cr);
... ... @@ -301,9 +312,7 @@ void v3270_draw_connection(cairo_t *cr, H3270 *host, struct v3270_metrics *metri
301 312 else
302 313 str = "?";
303 314  
304   - cairo_text_extents(cr,str,&extents);
305   - cairo_move_to(cr,rect->x+((rect->width/2)-(extents.width/2)),rect->y+extents.height+( (rect->height/2) - (extents.height/2)));
306   - cairo_show_text(cr,str);
  315 + draw_centered_text(cr,metrics,rect->x,rect->y,str);
307 316  
308 317 }
309 318  
... ... @@ -533,8 +542,6 @@ void v3270_draw_oia(cairo_t *cr, H3270 *host, int row, int cols, struct v3270_me
533 542 cairo_rectangle(cr, metrics->left, row, cols*metrics->width, metrics->spacing);
534 543 cairo_fill(cr);
535 544  
536   - gdk_cairo_set_source_color(cr,color+V3270_COLOR_OIA_FOREGROUND);
537   -
538 545 for(f=0;f<G_N_ELEMENTS(right);f++)
539 546 {
540 547 GdkRectangle *r = rect+right[f].id;
... ... @@ -551,12 +558,7 @@ void v3270_draw_oia(cairo_t *cr, H3270 *host, int row, int cols, struct v3270_me
551 558  
552 559 gdk_cairo_set_source_color(cr,color+V3270_COLOR_OIA_FOREGROUND);
553 560  
554   - const gchar *str = "4";
555   - cairo_text_extents_t extents;
556   -
557   - cairo_text_extents(cr,str,&extents);
558   - cairo_move_to(cr,lCol+(((metrics->width+2)/2)-(extents.width/2)),row+extents.height+( (metrics->spacing/2) - (extents.height/2)));
559   - cairo_show_text(cr,str);
  561 + draw_centered_text(cr,metrics,lCol,row,"4");
560 562  
561 563 cairo_stroke(cr);
562 564 cairo_rectangle(cr, lCol, row, metrics->width+2, metrics->spacing);
... ...
src/pw3270/v3270/private.h
... ... @@ -253,7 +253,7 @@ void v3270_draw_char(cairo_t *cr, unsigned char chr, unsigned short attr, H3
253 253 void v3270_start_timer(GtkWidget *terminal);
254 254 void v3270_stop_timer(GtkWidget *terminal);
255 255  
256   -void v3270_draw_connection(cairo_t *cr, H3270 *host, struct v3270_metrics *metrics, GdkColor *color, GdkRectangle *rect);
  256 +void v3270_draw_connection(cairo_t *cr, H3270 *host, struct v3270_metrics *metrics, GdkColor *color, const GdkRectangle *rect);
257 257 void v3270_draw_ssl_status(cairo_t *cr, H3270 *host, struct v3270_metrics *metrics, GdkColor *color, GdkRectangle *rect);
258 258  
259 259 void v3270_update_char(H3270 *session, int addr, unsigned char chr, unsigned short attr, unsigned char cursor);
... ...