Commit c0840359e3086a23d74888ffb383ff4427b9a5e0

Authored by perry.werneck@gmail.com
1 parent 0ceb5c27
Exists in master

Callback de cursor mudado para a estrutura de sessão

latest/src/gtk2/gui.h
@@ -57,7 +57,7 @@ @@ -57,7 +57,7 @@
57 #include <lib3270.h> 57 #include <lib3270.h>
58 #include <lib3270/toggle.h> 58 #include <lib3270/toggle.h>
59 59
60 - #define CURSOR_MODE_3270 (CURSOR_MODE_USER+9) 60 + #define CURSOR_MODE_3270 (LIB3270_CURSOR_USER+9)
61 61
62 enum _drag_type 62 enum _drag_type
63 { 63 {
@@ -75,7 +75,7 @@ @@ -75,7 +75,7 @@
75 }; 75 };
76 76
77 LOCAL_EXTERN int drag_type; 77 LOCAL_EXTERN int drag_type;
78 - LOCAL_EXTERN CURSOR_MODE cursor_mode; 78 + LOCAL_EXTERN LIB3270_CURSOR cursor_mode;
79 79
80 #define MAX_CHR_LENGTH 4 80 #define MAX_CHR_LENGTH 4
81 typedef struct _element 81 typedef struct _element
latest/src/gtk2/mouse.c
@@ -721,7 +721,7 @@ @@ -721,7 +721,7 @@
721 Trace("Type: %d",type); 721 Trace("Type: %d",type);
722 722
723 if(type >= 0) 723 if(type >= 0)
724 - gdk_window_set_cursor(terminal->window,wCursor[CURSOR_MODE_USER+type]); 724 + gdk_window_set_cursor(terminal->window,wCursor[LIB3270_CURSOR_USER+type]);
725 else 725 else
726 gdk_window_set_cursor(terminal->window,wCursor[cursor_mode]); 726 gdk_window_set_cursor(terminal->window,wCursor[cursor_mode]);
727 } 727 }
latest/src/gtk2/screen.c
@@ -70,7 +70,7 @@ @@ -70,7 +70,7 @@
70 70
71 static int SetSuspended(int state); 71 static int SetSuspended(int state);
72 static void SetScript(SCRIPT_STATE state); 72 static void SetScript(SCRIPT_STATE state);
73 - static void set_cursor(CURSOR_MODE mode); 73 + static void set_cursor(H3270 *session, LIB3270_CURSOR mode);
74 static void set_oia(H3270 *session, OIA_FLAG id, unsigned char on); 74 static void set_oia(H3270 *session, OIA_FLAG id, unsigned char on);
75 static void set_lu(H3270 *session, const char *lu); 75 static void set_lu(H3270 *session, const char *lu);
76 // static void changed(int bstart, int bend); 76 // static void changed(int bstart, int bend);
@@ -140,6 +140,7 @@ @@ -140,6 +140,7 @@
140 struct _view view = { 0 }; 140 struct _view view = { 0 };
141 char * charset = NULL; 141 char * charset = NULL;
142 char * window_title = PROGRAM_NAME; 142 char * window_title = PROGRAM_NAME;
  143 + LIB3270_CURSOR cursor_mode = -1;
143 144
144 gboolean screen_updates_enabled = FALSE; 145 gboolean screen_updates_enabled = FALSE;
145 146
@@ -514,7 +515,7 @@ @@ -514,7 +515,7 @@
514 515
515 if(id == LIB3270_STATUS_BLANK) 516 if(id == LIB3270_STATUS_BLANK)
516 { 517 {
517 - set_cursor(CURSOR_MODE_NORMAL); 518 + set_cursor(session,CURSOR_MODE_NORMAL);
518 update_cursor_pixmap(); 519 update_cursor_pixmap();
519 } 520 }
520 else if(id >= LIB3270_STATUS_USER) 521 else if(id >= LIB3270_STATUS_USER)
@@ -527,12 +528,10 @@ @@ -527,12 +528,10 @@
527 528
528 } 529 }
529 530
530 -  
531 - CURSOR_MODE cursor_mode = -1;  
532 -  
533 - static void set_cursor(CURSOR_MODE mode) 531 + static void set_cursor(H3270 *session, LIB3270_CURSOR mode)
534 { 532 {
535 - if(mode == cursor_mode || mode > CURSOR_MODE_USER || !terminal || !terminal->window) 533 +
  534 + if(mode == cursor_mode || mode > LIB3270_CURSOR_USER || !terminal || !terminal->window)
536 return; 535 return;
537 536
538 cursor_mode = mode; 537 cursor_mode = mode;
latest/src/include/lib3270.h
@@ -112,6 +112,24 @@ @@ -112,6 +112,24 @@
112 112
113 } LIB3270_FLAG; 113 } LIB3270_FLAG;
114 114
  115 +
  116 + /**
  117 + * Cursor modes.
  118 + *
  119 + * Cursor modes set by library; an application can us it
  120 + * as a hint to change the mouse cursor based on connection status.
  121 + *
  122 + */
  123 + typedef enum _LIB3270_CURSOR
  124 + {
  125 + LIB3270_CURSOR_NORMAL, /**< Ready for user actions */
  126 + LIB3270_CURSOR_WAITING, /**< Waiting for host */
  127 + LIB3270_CURSOR_LOCKED, /**< Locked, can't receive user actions */
  128 +
  129 + LIB3270_CURSOR_USER
  130 + } LIB3270_CURSOR;
  131 +
  132 +
115 /** 133 /**
116 * connection state 134 * connection state
117 */ 135 */
latest/src/include/lib3270/api.h
@@ -277,6 +277,7 @@ @@ -277,6 +277,7 @@
277 void (*update_luname)(H3270 *session, const char *name); 277 void (*update_luname)(H3270 *session, const char *name);
278 void (*update_status)(H3270 *session, LIB3270_STATUS id); 278 void (*update_status)(H3270 *session, LIB3270_STATUS id);
279 void (*erase)(H3270 *session); 279 void (*erase)(H3270 *session);
  280 + void (*cursor)(H3270 *session, LIB3270_CURSOR id);
280 281
281 }; 282 };
282 283
@@ -447,14 +448,10 @@ @@ -447,14 +448,10 @@
447 448
448 449
449 /* Screen processing */ 450 /* Screen processing */
450 - typedef enum _CURSOR_MODE  
451 - {  
452 - CURSOR_MODE_NORMAL,  
453 - CURSOR_MODE_WAITING,  
454 - CURSOR_MODE_LOCKED,  
455 451
456 - CURSOR_MODE_USER  
457 - } CURSOR_MODE; 452 + #define CURSOR_MODE_NORMAL LIB3270_CURSOR_NORMAL
  453 + #define CURSOR_MODE_WAITING LIB3270_CURSOR_WAITING
  454 + #define CURSOR_MODE_LOCKED LIB3270_CURSOR_LOCKED
458 455
459 typedef enum _SCRIPT_STATE 456 typedef enum _SCRIPT_STATE
460 { 457 {
@@ -509,7 +506,7 @@ @@ -509,7 +506,7 @@
509 void (*set_script)(SCRIPT_STATE state); 506 void (*set_script)(SCRIPT_STATE state);
510 void (*reset)(int lock); 507 void (*reset)(int lock);
511 void (*status)(H3270 *session, LIB3270_STATUS id); 508 void (*status)(H3270 *session, LIB3270_STATUS id);
512 - void (*cursor)(CURSOR_MODE mode); 509 + void (*cursor)(H3270 *session, LIB3270_CURSOR mode);
513 void (*lu)(H3270 *session, const char *lu); 510 void (*lu)(H3270 *session, const char *lu);
514 void (*set_oia)(H3270 *session, OIA_FLAG id, unsigned char on); 511 void (*set_oia)(H3270 *session, OIA_FLAG id, unsigned char on);
515 512
latest/src/lib/kybd.c
@@ -527,15 +527,15 @@ key_AID(unsigned char aid_code) @@ -527,15 +527,15 @@ key_AID(unsigned char aid_code)
527 buffer_addr = h3270.cursor_addr; 527 buffer_addr = h3270.cursor_addr;
528 } 528 }
529 if (!IN_SSCP || aid_code != AID_CLEAR) { 529 if (!IN_SSCP || aid_code != AID_CLEAR) {
530 - status_twait(NULL); 530 + status_twait(&h3270);
531 mcursor_waiting(&h3270); 531 mcursor_waiting(&h3270);
532 set_toggle(INSERT,0); 532 set_toggle(INSERT,0);
533 kybdlock_set(KL_OIA_TWAIT | KL_OIA_LOCKED, "key_AID"); 533 kybdlock_set(KL_OIA_TWAIT | KL_OIA_LOCKED, "key_AID");
534 } 534 }
535 aid = aid_code; 535 aid = aid_code;
536 ctlr_read_modified(aid, False); 536 ctlr_read_modified(aid, False);
537 - ticking_start(NULL,False);  
538 - status_ctlr_done(NULL); 537 + ticking_start(&h3270,False);
  538 + status_ctlr_done(&h3270);
539 } 539 }
540 540
541 LIB3270_FKEY_ACTION( pfkey ) 541 LIB3270_FKEY_ACTION( pfkey )
latest/src/lib/screen.c
@@ -147,6 +147,9 @@ int screen_init(H3270 *session) @@ -147,6 +147,9 @@ int screen_init(H3270 *session)
147 if(callbacks->erase) 147 if(callbacks->erase)
148 session->erase = callbacks->erase; 148 session->erase = callbacks->erase;
149 149
  150 + if(callbacks->cursor)
  151 + session->cursor = callbacks->cursor;
  152 +
150 if(callbacks->init()) 153 if(callbacks->init())
151 { 154 {
152 popup_an_error("Can't initialize terminal."); 155 popup_an_error("Can't initialize terminal.");
@@ -539,16 +542,16 @@ void status_oerr(H3270 *session, int error_type) @@ -539,16 +542,16 @@ void status_oerr(H3270 *session, int error_type)
539 542
540 void status_resolving(H3270 *session, Boolean on) 543 void status_resolving(H3270 *session, Boolean on)
541 { 544 {
542 - if(callbacks && callbacks->cursor)  
543 - callbacks->cursor(on ? CURSOR_MODE_LOCKED : CURSOR_MODE_NORMAL); 545 + if(session->cursor)
  546 + session->cursor(session, on ? CURSOR_MODE_LOCKED : CURSOR_MODE_NORMAL);
544 547
545 status_changed(session, on ? LIB3270_STATUS_RESOLVING : LIB3270_STATUS_BLANK); 548 status_changed(session, on ? LIB3270_STATUS_RESOLVING : LIB3270_STATUS_BLANK);
546 } 549 }
547 550
548 void status_connecting(H3270 *session, Boolean on) 551 void status_connecting(H3270 *session, Boolean on)
549 { 552 {
550 - if(callbacks && callbacks->cursor)  
551 - callbacks->cursor(on ? CURSOR_MODE_LOCKED : CURSOR_MODE_NORMAL); 553 + if(session->cursor)
  554 + session->cursor(session,on ? CURSOR_MODE_LOCKED : CURSOR_MODE_NORMAL);
552 555
553 status_changed(session, on ? LIB3270_STATUS_CONNECTING : LIB3270_STATUS_BLANK); 556 status_changed(session, on ? LIB3270_STATUS_CONNECTING : LIB3270_STATUS_BLANK);
554 } 557 }
@@ -822,12 +825,12 @@ void Warning(const char *fmt, ...) @@ -822,12 +825,12 @@ void Warning(const char *fmt, ...)
822 825
823 } 826 }
824 827
825 -void mcursor_set(H3270 *session,CURSOR_MODE m) 828 +void mcursor_set(H3270 *session,LIB3270_CURSOR m)
826 { 829 {
827 CHECK_SESSION_HANDLE(session); 830 CHECK_SESSION_HANDLE(session);
828 831
829 - if(callbacks && callbacks->cursor)  
830 - callbacks->cursor(m); 832 + if(session->cursor)
  833 + session->cursor(session,m);
831 } 834 }
832 835
833 /* 836 /*
latest/src/lib/screenc.h
@@ -32,7 +32,7 @@ LIB3270_INTERNAL int screen_init(H3270 *session); @@ -32,7 +32,7 @@ LIB3270_INTERNAL int screen_init(H3270 *session);
32 LIB3270_INTERNAL FILE *start_pager(void); 32 LIB3270_INTERNAL FILE *start_pager(void);
33 LIB3270_INTERNAL Boolean screen_new_display_charsets(char *cslist, char *csname); 33 LIB3270_INTERNAL Boolean screen_new_display_charsets(char *cslist, char *csname);
34 34
35 -LIB3270_INTERNAL void mcursor_set(H3270 *session,CURSOR_MODE m); 35 +LIB3270_INTERNAL void mcursor_set(H3270 *session,LIB3270_CURSOR m);
36 36
37 #define mcursor_locked(x) mcursor_set(x,CURSOR_MODE_LOCKED) 37 #define mcursor_locked(x) mcursor_set(x,CURSOR_MODE_LOCKED)
38 #define mcursor_normal(x) mcursor_set(x,CURSOR_MODE_NORMAL) 38 #define mcursor_normal(x) mcursor_set(x,CURSOR_MODE_NORMAL)