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