Commit 9b94498cb19867ee6d9edf7ed904fdbe8ecd9f50
1 parent
d144f89f
Exists in
master
and in
1 other branch
Updating print dialog.
Showing
1 changed file
with
28 additions
and
2 deletions
Show diff stats
src/dialogs/print/print.c
| ... | ... | @@ -264,18 +264,20 @@ V3270PrintOperation * v3270_print_operation_new(GtkWidget *widget, LIB3270_PRINT |
| 264 | 264 | case LIB3270_PRINT_SELECTED: |
| 265 | 265 | { |
| 266 | 266 | int row, col; |
| 267 | + int baddr = 0; | |
| 267 | 268 | |
| 268 | 269 | GdkRectangle rect; |
| 269 | 270 | memset(&rect,0,sizeof(rect)); |
| 270 | 271 | rect.x = lib3270_get_width(operation->session); |
| 271 | 272 | rect.y = lib3270_get_height(operation->session); |
| 272 | 273 | |
| 273 | - int baddr = 0; | |
| 274 | + // Get regions | |
| 275 | + | |
| 274 | 276 | for(row = 0; row < lib3270_get_height(operation->session); row++) |
| 275 | 277 | { |
| 276 | 278 | for(col = 0; col < lib3270_get_width(operation->session); col++) |
| 277 | 279 | { |
| 278 | - if(lib3270_is_selected(operation->session,baddr)) | |
| 280 | + if(lib3270_is_selected(operation->session,baddr++)) | |
| 279 | 281 | { |
| 280 | 282 | rect.x = MIN(rect.x,col); |
| 281 | 283 | rect.width = MAX(rect.width,col); |
| ... | ... | @@ -289,6 +291,30 @@ V3270PrintOperation * v3270_print_operation_new(GtkWidget *widget, LIB3270_PRINT |
| 289 | 291 | operation->contents.height = rect.height - rect.y; |
| 290 | 292 | operation->contents.width = rect.width - rect.x; |
| 291 | 293 | |
| 294 | + // Get contents | |
| 295 | + int r = 0; | |
| 296 | + column * text; | |
| 297 | + | |
| 298 | + operation->contents.text = g_new0(column *, operation->contents.height+1); | |
| 299 | + | |
| 300 | + for(row = rect.y; row < rect.width; row++) | |
| 301 | + { | |
| 302 | + int c = 0; | |
| 303 | + operation->contents.text[r++] = text = g_new0(column, operation->contents.width); | |
| 304 | + | |
| 305 | + for(col = rect.x; col < rect.height; col++) | |
| 306 | + { | |
| 307 | + lib3270_get_element(operation->session,lib3270_translate_to_address(operation->session,row,col),&text[c].c,&text[c].attr); | |
| 308 | + if(!(text[c].attr & LIB3270_ATTR_SELECTED)) | |
| 309 | + { | |
| 310 | + text[c].c = 0; | |
| 311 | + text[c].attr = 0; | |
| 312 | + } | |
| 313 | + c++; | |
| 314 | + } | |
| 315 | + | |
| 316 | + } | |
| 317 | + | |
| 292 | 318 | } |
| 293 | 319 | break; |
| 294 | 320 | ... | ... |