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,18 +264,20 @@ V3270PrintOperation * v3270_print_operation_new(GtkWidget *widget, LIB3270_PRINT | ||
264 | case LIB3270_PRINT_SELECTED: | 264 | case LIB3270_PRINT_SELECTED: |
265 | { | 265 | { |
266 | int row, col; | 266 | int row, col; |
267 | + int baddr = 0; | ||
267 | 268 | ||
268 | GdkRectangle rect; | 269 | GdkRectangle rect; |
269 | memset(&rect,0,sizeof(rect)); | 270 | memset(&rect,0,sizeof(rect)); |
270 | rect.x = lib3270_get_width(operation->session); | 271 | rect.x = lib3270_get_width(operation->session); |
271 | rect.y = lib3270_get_height(operation->session); | 272 | rect.y = lib3270_get_height(operation->session); |
272 | 273 | ||
273 | - int baddr = 0; | 274 | + // Get regions |
275 | + | ||
274 | for(row = 0; row < lib3270_get_height(operation->session); row++) | 276 | for(row = 0; row < lib3270_get_height(operation->session); row++) |
275 | { | 277 | { |
276 | for(col = 0; col < lib3270_get_width(operation->session); col++) | 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 | rect.x = MIN(rect.x,col); | 282 | rect.x = MIN(rect.x,col); |
281 | rect.width = MAX(rect.width,col); | 283 | rect.width = MAX(rect.width,col); |
@@ -289,6 +291,30 @@ V3270PrintOperation * v3270_print_operation_new(GtkWidget *widget, LIB3270_PRINT | @@ -289,6 +291,30 @@ V3270PrintOperation * v3270_print_operation_new(GtkWidget *widget, LIB3270_PRINT | ||
289 | operation->contents.height = rect.height - rect.y; | 291 | operation->contents.height = rect.height - rect.y; |
290 | operation->contents.width = rect.width - rect.x; | 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 | break; | 319 | break; |
294 | 320 |