Commit aba9cdef1e2254dc64fc2ffe22ca920830257a18
1 parent
4ffa4f37
Exists in
master
and in
5 other branches
Incluindo funcoes para obtenção das bordas de palavra e campo para uso no compon…
…ente de acessibilidade
Showing
9 changed files
with
217 additions
and
83 deletions
Show diff stats
pw3270.cbp
... | ... | @@ -174,6 +174,9 @@ |
174 | 174 | <Unit filename="src/lib3270/aplc.h" /> |
175 | 175 | <Unit filename="src/lib3270/appres.h" /> |
176 | 176 | <Unit filename="src/lib3270/arpa_telnet.h" /> |
177 | + <Unit filename="src/lib3270/bounds.c"> | |
178 | + <Option compilerVar="CC" /> | |
179 | + </Unit> | |
177 | 180 | <Unit filename="src/lib3270/cg.h" /> |
178 | 181 | <Unit filename="src/lib3270/charset.c"> |
179 | 182 | <Option compilerVar="CC" /> | ... | ... |
src/gtk/v3270/accessible.c
... | ... | @@ -506,7 +506,34 @@ static gboolean v3270_accessible_set_selection(AtkText *text, gint selection_num |
506 | 506 | return FALSE; |
507 | 507 | } |
508 | 508 | |
509 | -/* | |
509 | +static AtkAttributeSet *add_attribute(AtkAttributeSet * attributes, AtkTextAttribute attr, const gchar *value) | |
510 | +{ | |
511 | + AtkAttribute *at = g_new(AtkAttribute, 1); | |
512 | + | |
513 | + at->name = g_strdup (atk_text_attribute_get_name (attr)); | |
514 | + at->value = g_strdup (value); | |
515 | + | |
516 | + return g_slist_prepend (attributes, at); | |
517 | +} | |
518 | + | |
519 | +static AtkAttributeSet * v3270_accessible_get_default_attributes (AtkText *text) | |
520 | +{ | |
521 | + GtkWidget * widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (text)); | |
522 | + AtkAttributeSet * attributes = NULL; | |
523 | + | |
524 | + if(!widget) | |
525 | + return NULL; | |
526 | + | |
527 | + trace("%s is incomplete ***********************",__FUNCTION__); | |
528 | + | |
529 | + // http://developer.gnome.org/atk/stable/AtkText.html#AtkTextAttribute | |
530 | + | |
531 | + // The direction of the text, if set. Values are "none", "ltr" or "rtl" | |
532 | + attributes = add_attribute(attributes, ATK_TEXT_ATTR_DIRECTION,atk_text_attribute_get_value(ATK_TEXT_ATTR_DIRECTION,gtk_widget_get_direction(widget))); | |
533 | + | |
534 | + return attributes; | |
535 | +} | |
536 | + | |
510 | 537 | static AtkAttributeSet * v3270_accessible_get_run_attributes(AtkText *text, gint offset, gint * start_offset, gint * end_offset) |
511 | 538 | { |
512 | 539 | GtkWidget * widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (text)); |
... | ... | @@ -519,14 +546,33 @@ static AtkAttributeSet * v3270_accessible_get_run_attributes(AtkText *text, gint |
519 | 546 | |
520 | 547 | // http://developer.gnome.org/atk/stable/AtkText.html#AtkTextAttribute |
521 | 548 | |
522 | - attributes = add_attribute (attributes, ATK_TEXT_ATTR_DIRECTION, | |
523 | - atk_text_attribute_get_value (ATK_TEXT_ATTR_DIRECTION, | |
524 | - gtk_widget_get_direction(widget))); | |
549 | + // The direction of the text, if set. Values are "none", "ltr" or "rtl" | |
550 | + attributes = add_attribute(attributes, ATK_TEXT_ATTR_DIRECTION,atk_text_attribute_get_value(ATK_TEXT_ATTR_DIRECTION,gtk_widget_get_direction(widget))); | |
551 | + | |
552 | + | |
553 | + // ATK_TEXT_ATTR_LEFT_MARGIN | |
554 | + // The pixel width of the left margin | |
525 | 555 | |
556 | + // ATK_TEXT_ATTR_RIGHT_MARGIN | |
557 | + // The pixel width of the right margin | |
558 | + | |
559 | + // ATK_TEXT_ATTR_INVISIBLE | |
560 | + // Either "true" or "false" indicating whether text is visible or not | |
561 | + | |
562 | + // Either "true" or "false" indicating whether text is editable or not | |
563 | + // ATK_TEXT_ATTR_EDITABLE | |
564 | + | |
565 | + // The background color. The value is an RGB value of the format "u,u,u" | |
566 | + // ATK_TEXT_ATTR_BG_COLOR | |
567 | + | |
568 | + // The foreground color. The value is an RGB value of the format "u,u,u" | |
569 | + // ATK_TEXT_ATTR_FG_COLOR | |
570 | + | |
571 | + // The font family name | |
572 | + // ATK_TEXT_ATTR_FAMILY_NAME | |
526 | 573 | |
527 | 574 | return attributes; |
528 | 575 | } |
529 | -*/ | |
530 | 576 | |
531 | 577 | static void atk_text_interface_init(AtkTextIface *iface) |
532 | 578 | { |
... | ... | @@ -547,6 +593,9 @@ static void atk_text_interface_init(AtkTextIface *iface) |
547 | 593 | iface->remove_selection = v3270_accessible_remove_selection; |
548 | 594 | iface->set_selection = v3270_accessible_set_selection; |
549 | 595 | iface->get_selection = v3270_accessible_get_selection; |
596 | + iface->get_run_attributes = v3270_accessible_get_run_attributes; | |
597 | + iface->get_default_attributes = v3270_accessible_get_default_attributes; | |
598 | + | |
550 | 599 | |
551 | 600 | /* |
552 | 601 | http://git.gnome.org/browse/gtk+/tree/gtk/a11y/gtklabelaccessible.c |
... | ... | @@ -556,8 +605,6 @@ http://git.gnome.org/browse/gtk+/tree/gtk/a11y/gtklabelaccessible.c |
556 | 605 | iface->get_text_after_offset = gtk_label_accessible_get_text_after_offset; |
557 | 606 | |
558 | 607 | |
559 | - iface->get_run_attributes = gtk_label_accessible_get_run_attributes; | |
560 | - iface->get_default_attributes = gtk_label_accessible_get_default_attributes; | |
561 | 608 | */ |
562 | 609 | } |
563 | 610 | ... | ... |
src/gtk/v3270/mouse.c
... | ... | @@ -87,11 +87,13 @@ static void button_1_press(GtkWidget *widget, GdkEventType type, int baddr) |
87 | 87 | break; |
88 | 88 | |
89 | 89 | case GDK_2BUTTON_PRESS: // Double click - Select word |
90 | - lib3270_select_word(GTK_V3270(widget)->host,baddr); | |
90 | + if(lib3270_select_word_at(GTK_V3270(widget)->host,baddr)); | |
91 | + lib3270_ring_bell(GTK_V3270(widget)->host); | |
91 | 92 | break; |
92 | 93 | |
93 | 94 | case GDK_3BUTTON_PRESS: // Triple clock - Select field |
94 | - lib3270_select_field_at(GTK_V3270(widget)->host,baddr); | |
95 | + if(lib3270_select_field_at(GTK_V3270(widget)->host,baddr)) | |
96 | + lib3270_ring_bell(GTK_V3270(widget)->host); | |
95 | 97 | break; |
96 | 98 | |
97 | 99 | #ifdef DEBUG | ... | ... |
src/include/lib3270.h
... | ... | @@ -695,6 +695,22 @@ |
695 | 695 | */ |
696 | 696 | LIB3270_EXPORT int lib3270_get_element(H3270 *h, int baddr, unsigned char *c, unsigned short *attr); |
697 | 697 | |
698 | + /** | |
699 | + * Get field region | |
700 | + * | |
701 | + * @param h Session handle. | |
702 | + * @param baddr Reference position to get the field start/stop offsets. | |
703 | + * @param start return location for start of selection, as a character offset. | |
704 | + * @param end return location for end of selection, as a character offset. | |
705 | + * | |
706 | + * @return Non 0 if invalid | |
707 | + * | |
708 | + */ | |
709 | + LIB3270_EXPORT int lib3270_get_field_bounds(H3270 *hSession, int baddr, int *start, int *end); | |
710 | + | |
711 | + LIB3270_EXPORT int lib3270_get_word_bounds(H3270 *hSession, int baddr, int *start, int *end); | |
712 | + | |
713 | + | |
698 | 714 | LIB3270_EXPORT int lib3270_set_model(H3270 *session, int model); |
699 | 715 | LIB3270_EXPORT int lib3270_get_model(H3270 *session); |
700 | 716 | ... | ... |
src/include/lib3270/selection.h
... | ... | @@ -35,7 +35,7 @@ |
35 | 35 | |
36 | 36 | LIB3270_EXPORT void lib3270_clear_selection(H3270 *session); |
37 | 37 | LIB3270_EXPORT void lib3270_select_to(H3270 *session, int baddr); |
38 | - LIB3270_EXPORT void lib3270_select_word(H3270 *session, int baddr); | |
38 | + LIB3270_EXPORT int lib3270_select_word_at(H3270 *session, int baddr); | |
39 | 39 | LIB3270_EXPORT int lib3270_select_field_at(H3270 *session, int baddr); |
40 | 40 | |
41 | 41 | /** | ... | ... |
src/include/lib3270/session.h
src/lib3270/Makefile.in
... | ... | @@ -95,7 +95,7 @@ SOURCES = XtGlue.c init.c actions.c ansi.c charset.c ctlr.c \ |
95 | 95 | print.c printer.c proxy.c resources.c rpq.c screen.c see.c \ |
96 | 96 | sf.c tables.c telnet.c toggles.c trace_ds.c utf8.c util.c \ |
97 | 97 | xio.c resolver.c log.c paste.c macros.c fallbacks.c version.c \ |
98 | - selection.c | |
98 | + selection.c bounds.c | |
99 | 99 | |
100 | 100 | #---[ Misc targets ]----------------------------------------------------------- |
101 | 101 | ... | ... |
... | ... | @@ -0,0 +1,94 @@ |
1 | +/* | |
2 | + * "Software pw3270, desenvolvido com base nos códigos fontes do WC3270 e X3270 | |
3 | + * (Paul Mattes Paul.Mattes@usa.net), de emulação de terminal 3270 para acesso a | |
4 | + * aplicativos mainframe. Registro no INPI sob o nome G3270. Registro no INPI sob o nome G3270. | |
5 | + * | |
6 | + * Copyright (C) <2008> <Banco do Brasil S.A.> | |
7 | + * | |
8 | + * Este programa é software livre. Você pode redistribuí-lo e/ou modificá-lo sob | |
9 | + * os termos da GPL v.2 - Licença Pública Geral GNU, conforme publicado pela | |
10 | + * Free Software Foundation. | |
11 | + * | |
12 | + * Este programa é distribuído na expectativa de ser útil, mas SEM QUALQUER | |
13 | + * GARANTIA; sem mesmo a garantia implícita de COMERCIALIZAÇÃO ou de ADEQUAÇÃO | |
14 | + * A QUALQUER PROPÓSITO EM PARTICULAR. Consulte a Licença Pública Geral GNU para | |
15 | + * obter mais detalhes. | |
16 | + * | |
17 | + * Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com este | |
18 | + * programa; se não, escreva para a Free Software Foundation, Inc., 59 Temple | |
19 | + * Place, Suite 330, Boston, MA, 02111-1307, USA | |
20 | + * | |
21 | + * Este programa está nomeado como bounds.c e possui - linhas de código. | |
22 | + * | |
23 | + * Contatos: | |
24 | + * | |
25 | + * perry.werneck@gmail.com (Alexandre Perry de Souza Werneck) | |
26 | + * erico.mendonca@gmail.com (Erico Mascarenhas Mendonça) | |
27 | + * licinio@bb.com.br (Licínio Luis Branco) | |
28 | + * kraucer@bb.com.br (Kraucer Fernandes Mazuco) | |
29 | + * macmiranda@bb.com.br (Marco Aurélio Caldas Miranda) | |
30 | + * | |
31 | + */ | |
32 | + | |
33 | +#include "globals.h" | |
34 | + | |
35 | +/*--[ Implement ]------------------------------------------------------------------------------------*/ | |
36 | + | |
37 | +LIB3270_EXPORT int lib3270_get_field_bounds(H3270 *session, int baddr, int *start, int *end) | |
38 | +{ | |
39 | + int first; | |
40 | + | |
41 | + CHECK_SESSION_HANDLE(session); | |
42 | + | |
43 | + if(!lib3270_connected(session)) | |
44 | + return -1; | |
45 | + | |
46 | + first = lib3270_field_addr(session,baddr); | |
47 | + | |
48 | + if(first < 0) | |
49 | + return -1; | |
50 | + | |
51 | + first++; | |
52 | + | |
53 | + if(start) | |
54 | + *start = first; | |
55 | + | |
56 | + if(end) | |
57 | + { | |
58 | + int maxlen = (session->rows * session->cols)-1; | |
59 | + *end = first + lib3270_field_length(session,first); | |
60 | + if(*end > maxlen) | |
61 | + *end = maxlen; | |
62 | + } | |
63 | + | |
64 | + return 0; | |
65 | +} | |
66 | + | |
67 | +LIB3270_EXPORT int lib3270_get_word_bounds(H3270 *session, int baddr, int *start, int *end) | |
68 | +{ | |
69 | + int pos; | |
70 | + | |
71 | + CHECK_SESSION_HANDLE(session); | |
72 | + | |
73 | + if(!lib3270_connected(session) || isspace(session->text[baddr].chr)) | |
74 | + return -1; | |
75 | + | |
76 | + if(start) | |
77 | + { | |
78 | + for(pos = baddr; pos > 0 && !isspace(session->text[pos].chr);pos--); | |
79 | + | |
80 | + *start = pos > 0 ? pos+1 : 0; | |
81 | + } | |
82 | + | |
83 | + if(end) | |
84 | + { | |
85 | + int maxlen = session->rows * session->cols; | |
86 | + for(pos = baddr; pos < maxlen && !isspace(session->text[pos].chr);pos++); | |
87 | + | |
88 | + *end = pos < maxlen ? pos-1 : maxlen; | |
89 | + } | |
90 | + | |
91 | + return 0; | |
92 | +} | |
93 | + | |
94 | + | ... | ... |
src/lib3270/selection.c
... | ... | @@ -34,13 +34,16 @@ |
34 | 34 | #include <lib3270/session.h> |
35 | 35 | #include <lib3270/selection.h> |
36 | 36 | |
37 | - #define SELECTION_LEFT 0x01 | |
38 | - #define SELECTION_TOP 0x02 | |
39 | - #define SELECTION_RIGHT 0x04 | |
40 | - #define SELECTION_BOTTOM 0x08 | |
41 | - #define SELECTION_ACTIVE 0x10 | |
37 | + #define SELECTION_LEFT 0x01 | |
38 | + #define SELECTION_TOP 0x02 | |
39 | + #define SELECTION_RIGHT 0x04 | |
40 | + #define SELECTION_BOTTOM 0x08 | |
41 | + #define SELECTION_SINGLE_ROW 0x10 | |
42 | + #define SELECTION_SINGLE_COL 0x20 | |
42 | 43 | |
43 | - static void select_region(H3270 *h, int start, int end); | |
44 | + #define SELECTION_ACTIVE 0x80 | |
45 | + | |
46 | + static void do_select(H3270 *h, int start, int end, int rect); | |
44 | 47 | |
45 | 48 | /*--[ Implement ]------------------------------------------------------------------------------------*/ |
46 | 49 | |
... | ... | @@ -212,7 +215,7 @@ LIB3270_EXPORT void lib3270_select_to(H3270 *session, int baddr) |
212 | 215 | |
213 | 216 | cursor_move(session,end = baddr); |
214 | 217 | |
215 | - select_region(session,start,end); | |
218 | + do_select(session,start,end,lib3270_get_toggle(session,LIB3270_TOGGLE_RECTANGLE_SELECT)); | |
216 | 219 | |
217 | 220 | } |
218 | 221 | |
... | ... | @@ -231,12 +234,12 @@ LIB3270_EXPORT void lib3270_select_region(H3270 *h, int start, int end) |
231 | 234 | if(start < 0 || start > maxlen || end < 0 || end > maxlen || start > end) |
232 | 235 | return; |
233 | 236 | |
234 | - select_region(h,start,end); | |
237 | + do_select(h,start,end,lib3270_get_toggle(h,LIB3270_TOGGLE_RECTANGLE_SELECT)); | |
235 | 238 | cursor_move(h,h->select.end); |
236 | 239 | |
237 | 240 | } |
238 | 241 | |
239 | -static void select_region(H3270 *h, int start, int end) | |
242 | +static void do_select(H3270 *h, int start, int end, int rect) | |
240 | 243 | { |
241 | 244 | |
242 | 245 | // Do we really need to change selection? |
... | ... | @@ -246,10 +249,16 @@ static void select_region(H3270 *h, int start, int end) |
246 | 249 | h->select.start = start; |
247 | 250 | h->select.end = end; |
248 | 251 | |
249 | - if(lib3270_get_toggle(h,LIB3270_TOGGLE_RECTANGLE_SELECT)) | |
252 | + if(rect) | |
253 | + { | |
254 | + h->rectsel = 1; | |
250 | 255 | update_selected_rectangle(h); |
256 | + } | |
251 | 257 | else |
258 | + { | |
259 | + h->rectsel = 0; | |
252 | 260 | update_selected_region(h); |
261 | + } | |
253 | 262 | |
254 | 263 | if(!h->selected) |
255 | 264 | { |
... | ... | @@ -275,6 +284,12 @@ LIB3270_EXPORT unsigned char lib3270_get_selection_flags(H3270 *hSession, int ba |
275 | 284 | col = baddr % hSession->cols; |
276 | 285 | rc |= SELECTION_ACTIVE; |
277 | 286 | |
287 | + if( (hSession->select.start % hSession->cols) == (hSession->select.end % hSession->cols) ) | |
288 | + rc |= SELECTION_SINGLE_COL; | |
289 | + | |
290 | + if( (hSession->select.start / hSession->cols) == (hSession->select.end / hSession->cols) ) | |
291 | + rc |= SELECTION_SINGLE_ROW; | |
292 | + | |
278 | 293 | if( (col == 0) || !(hSession->text[baddr-1].attr & LIB3270_ATTR_SELECTED) ) |
279 | 294 | rc |= SELECTION_LEFT; |
280 | 295 | |
... | ... | @@ -290,57 +305,28 @@ LIB3270_EXPORT unsigned char lib3270_get_selection_flags(H3270 *hSession, int ba |
290 | 305 | return rc; |
291 | 306 | } |
292 | 307 | |
293 | -LIB3270_EXPORT void lib3270_select_word(H3270 *session, int baddr) | |
308 | +LIB3270_EXPORT int lib3270_select_word_at(H3270 *session, int baddr) | |
294 | 309 | { |
295 | - int pos, len, start, end; | |
296 | - | |
297 | - CHECK_SESSION_HANDLE(session); | |
310 | + int start, end; | |
298 | 311 | |
299 | - if(!lib3270_connected(session) || isspace(session->text[baddr].chr)) | |
300 | - { | |
301 | - lib3270_ring_bell(session); | |
302 | - return; | |
303 | - } | |
312 | + if(lib3270_get_word_bounds(session,baddr,&start,&end)) | |
313 | + return -1; | |
304 | 314 | |
305 | - start = session->select.start; | |
306 | - for(pos = baddr; pos > 0 && !isspace(session->text[pos].chr);pos--); | |
307 | - start = pos > 0 ? pos+1 : 0; | |
315 | + trace("%s: baddr=%d start=%d end=%d",__FUNCTION__,baddr,start,end); | |
308 | 316 | |
309 | - len = session->rows * session->cols; | |
310 | - for(pos = baddr; pos < len && !isspace(session->text[pos].chr);pos++); | |
311 | - end = pos < len ? pos-1 : len; | |
317 | + do_select(session,start,end,0); | |
312 | 318 | |
313 | - select_region(session,start,end); | |
319 | + return 0; | |
314 | 320 | } |
315 | 321 | |
316 | 322 | LIB3270_EXPORT int lib3270_select_field_at(H3270 *session, int baddr) |
317 | 323 | { |
318 | - int start, end,len; | |
319 | - | |
320 | - CHECK_SESSION_HANDLE(session); | |
321 | - | |
322 | - if(!lib3270_connected(session)) | |
323 | - { | |
324 | - lib3270_ring_bell(session); | |
325 | - return -1; | |
326 | - } | |
327 | - | |
328 | - start = lib3270_field_addr(session,baddr); | |
324 | + int start, end; | |
329 | 325 | |
330 | - if(start < 0) | |
331 | - { | |
332 | - lib3270_ring_bell(session); | |
326 | + if(lib3270_get_field_bounds(session,baddr,&start,&end)) | |
333 | 327 | return -1; |
334 | - } | |
335 | - | |
336 | - start++; | |
337 | 328 | |
338 | - len = (session->rows * session->cols)-1; | |
339 | - end = start + lib3270_field_length(session,start); | |
340 | - if(end > len) | |
341 | - end = len; | |
342 | - | |
343 | - select_region(session,start,end); | |
329 | + do_select(session,start,end,0); | |
344 | 330 | |
345 | 331 | return 0; |
346 | 332 | } |
... | ... | @@ -358,21 +344,8 @@ LIB3270_ACTION( selectall ) |
358 | 344 | |
359 | 345 | CHECK_SESSION_HANDLE(hSession); |
360 | 346 | |
361 | - select_region(hSession,0,hSession->rows*hSession->cols); | |
362 | -/* | |
363 | - len = hSession->rows*hSession->cols; | |
364 | - | |
365 | - for(baddr = 0; baddr < len; baddr++) | |
366 | - { | |
367 | - if(!(hSession->text[baddr].attr & LIB3270_ATTR_SELECTED)) | |
368 | - { | |
369 | - hSession->text[baddr].attr |= LIB3270_ATTR_SELECTED; | |
370 | - hSession->update(hSession,baddr,hSession->text[baddr].chr,hSession->text[baddr].attr,baddr == hSession->cursor_addr); | |
371 | - } | |
372 | - } | |
347 | + do_select(hSession,0,hSession->rows*hSession->cols,0); | |
373 | 348 | |
374 | - set_selected(hSession); | |
375 | -*/ | |
376 | 349 | return 0; |
377 | 350 | } |
378 | 351 | |
... | ... | @@ -385,7 +358,7 @@ LIB3270_ACTION( reselect ) |
385 | 358 | if(!lib3270_connected(hSession) || hSession->select.start == hSession->select.end || hSession->selected) |
386 | 359 | return 0; |
387 | 360 | |
388 | - select_region(hSession, hSession->select.start,hSession->select.end); | |
361 | + do_select(hSession, hSession->select.start,hSession->select.end,lib3270_get_toggle(hSession,LIB3270_TOGGLE_RECTANGLE_SELECT)); | |
389 | 362 | |
390 | 363 | return 0; |
391 | 364 | } |
... | ... | @@ -589,9 +562,9 @@ LIB3270_EXPORT int lib3270_move_selected_area(H3270 *hSession, int from, int to) |
589 | 562 | cols = hSession->cols - ((pos[f] % hSession->cols)+1); |
590 | 563 | } |
591 | 564 | |
592 | - step = (rows * hSession->cols) + cols; | |
565 | + step = (rows * hSession->cols) + cols; | |
593 | 566 | |
594 | - select_region(hSession,hSession->select.start + step,hSession->select.end + step); | |
567 | + do_select(hSession,hSession->select.start + step,hSession->select.end + step,hSession->rectsel); | |
595 | 568 | cursor_move(hSession,hSession->select.end); |
596 | 569 | |
597 | 570 | return from+step; |
... | ... | @@ -604,8 +577,6 @@ LIB3270_EXPORT int lib3270_drag_selection(H3270 *h, unsigned char flag, int orig |
604 | 577 | if(!lib3270_get_selection_bounds(h,&first,&last)) |
605 | 578 | return origin; |
606 | 579 | |
607 | - flag &= 0x1f; | |
608 | - | |
609 | 580 | trace("%s: flag=%04x",__FUNCTION__,flag); |
610 | 581 | |
611 | 582 | if(!flag) |
... | ... | @@ -629,9 +600,9 @@ LIB3270_EXPORT int lib3270_drag_selection(H3270 *h, unsigned char flag, int orig |
629 | 600 | origin = last = (row*h->cols) + (last%h->cols); |
630 | 601 | |
631 | 602 | if(first < last) |
632 | - select_region(h,first,last); | |
603 | + do_select(h,first,last,h->rectsel); | |
633 | 604 | else |
634 | - select_region(h,last,first); | |
605 | + do_select(h,last,first,h->rectsel); | |
635 | 606 | |
636 | 607 | cursor_move(h,h->select.end); |
637 | 608 | |
... | ... | @@ -683,7 +654,7 @@ LIB3270_EXPORT int lib3270_move_selection(H3270 *hSession, LIB3270_DIRECTION dir |
683 | 654 | return -1; |
684 | 655 | } |
685 | 656 | |
686 | - select_region(hSession,start,end); | |
657 | + do_select(hSession,start,end,hSession->rectsel); | |
687 | 658 | cursor_move(hSession,hSession->select.end); |
688 | 659 | |
689 | 660 | return 0; | ... | ... |