Commit 3c3aa221325b21d083cc9908073dd2ad59cbf94a
1 parent
aba9cdef
Exists in
master
and in
5 other branches
Corrigindo "drag" da area selecionada
Showing
2 changed files
with
33 additions
and
16 deletions
Show diff stats
src/lib3270/selection.c
... | ... | @@ -38,8 +38,9 @@ |
38 | 38 | #define SELECTION_TOP 0x02 |
39 | 39 | #define SELECTION_RIGHT 0x04 |
40 | 40 | #define SELECTION_BOTTOM 0x08 |
41 | - #define SELECTION_SINGLE_ROW 0x10 | |
42 | - #define SELECTION_SINGLE_COL 0x20 | |
41 | + | |
42 | + #define SELECTION_SINGLE_COL 0x10 | |
43 | + #define SELECTION_SINGLE_ROW 0x20 | |
43 | 44 | |
44 | 45 | #define SELECTION_ACTIVE 0x80 |
45 | 46 | |
... | ... | @@ -285,22 +286,30 @@ LIB3270_EXPORT unsigned char lib3270_get_selection_flags(H3270 *hSession, int ba |
285 | 286 | rc |= SELECTION_ACTIVE; |
286 | 287 | |
287 | 288 | if( (hSession->select.start % hSession->cols) == (hSession->select.end % hSession->cols) ) |
289 | + { | |
288 | 290 | rc |= SELECTION_SINGLE_COL; |
291 | + } | |
292 | + else | |
293 | + { | |
294 | + if( (col == 0) || !(hSession->text[baddr-1].attr & LIB3270_ATTR_SELECTED) ) | |
295 | + rc |= SELECTION_LEFT; | |
296 | + | |
297 | + if( (col == hSession->cols) || !(hSession->text[baddr+1].attr & LIB3270_ATTR_SELECTED) ) | |
298 | + rc |= SELECTION_RIGHT; | |
299 | + } | |
289 | 300 | |
290 | 301 | if( (hSession->select.start / hSession->cols) == (hSession->select.end / hSession->cols) ) |
302 | + { | |
291 | 303 | rc |= SELECTION_SINGLE_ROW; |
304 | + } | |
305 | + else | |
306 | + { | |
307 | + if( (row == 0) || !(hSession->text[baddr-hSession->cols].attr & LIB3270_ATTR_SELECTED) ) | |
308 | + rc |= SELECTION_TOP; | |
292 | 309 | |
293 | - if( (col == 0) || !(hSession->text[baddr-1].attr & LIB3270_ATTR_SELECTED) ) | |
294 | - rc |= SELECTION_LEFT; | |
295 | - | |
296 | - if( (row == 0) || !(hSession->text[baddr-hSession->cols].attr & LIB3270_ATTR_SELECTED) ) | |
297 | - rc |= SELECTION_TOP; | |
298 | - | |
299 | - if( (col == hSession->cols) || !(hSession->text[baddr+1].attr & LIB3270_ATTR_SELECTED) ) | |
300 | - rc |= SELECTION_RIGHT; | |
301 | - | |
302 | - if( (row == hSession->rows) || !(hSession->text[baddr+hSession->cols].attr & LIB3270_ATTR_SELECTED) ) | |
303 | - rc |= SELECTION_BOTTOM; | |
310 | + if( (row == hSession->rows) || !(hSession->text[baddr+hSession->cols].attr & LIB3270_ATTR_SELECTED) ) | |
311 | + rc |= SELECTION_BOTTOM; | |
312 | + } | |
304 | 313 | |
305 | 314 | return rc; |
306 | 315 | } |
... | ... | @@ -577,13 +586,21 @@ LIB3270_EXPORT int lib3270_drag_selection(H3270 *h, unsigned char flag, int orig |
577 | 586 | if(!lib3270_get_selection_bounds(h,&first,&last)) |
578 | 587 | return origin; |
579 | 588 | |
580 | - trace("%s: flag=%04x",__FUNCTION__,flag); | |
589 | + trace("%s: flag=%04x %s %s %s %s",__FUNCTION__, | |
590 | + flag, | |
591 | + flag & SELECTION_LEFT ? "Left" : "-", | |
592 | + flag & SELECTION_TOP ? "Top" : "-", | |
593 | + flag & SELECTION_RIGHT ? "Right" : "-", | |
594 | + flag & SELECTION_BOTTOM ? "Bottom" : "-" | |
595 | + ); | |
581 | 596 | |
582 | 597 | if(!flag) |
583 | 598 | return origin; |
584 | - else if(flag == SELECTION_ACTIVE) | |
599 | + else if((flag&0x8F) == SELECTION_ACTIVE) | |
585 | 600 | return lib3270_move_selected_area(h,origin,baddr); |
586 | 601 | |
602 | + trace("%s",__FUNCTION__); | |
603 | + | |
587 | 604 | row = baddr/h->cols; |
588 | 605 | col = baddr%h->cols; |
589 | 606 | ... | ... |
src/lib3270/telnet.c
... | ... | @@ -880,7 +880,7 @@ connection_complete(void) |
880 | 880 | */ |
881 | 881 | static void output_possible(H3270 *session) |
882 | 882 | { |
883 | - trace("%s: %s",HALF_CONNECTED ? "Half connected" : "Connected"); | |
883 | + trace("%s: %s",__FUNCTION__,HALF_CONNECTED ? "Half connected" : "Connected"); | |
884 | 884 | if (HALF_CONNECTED) |
885 | 885 | { |
886 | 886 | connection_complete(); | ... | ... |