Commit bb4e13f2eb4d91e0b6c1081a4de2f4b3d3f22014
1 parent
f3a42a70
Exists in
master
and in
5 other branches
Substituindo "widget" por "user_data" na estrutura de sessão
Showing
9 changed files
with
63 additions
and
67 deletions
Show diff stats
src/include/lib3270.h
| ... | ... | @@ -792,6 +792,18 @@ |
| 792 | 792 | LIB3270_EXPORT void lib3270_main_iterate(H3270 *h, int wait); |
| 793 | 793 | |
| 794 | 794 | /** |
| 795 | + * @brief Associate user data with 3270 session. | |
| 796 | + * | |
| 797 | + */ | |
| 798 | + LIB3270_EXPORT void lib3270_set_user_data(H3270 *h, void *ptr); | |
| 799 | + | |
| 800 | + /** | |
| 801 | + * @brief Get associated user data. | |
| 802 | + * | |
| 803 | + */ | |
| 804 | + LIB3270_EXPORT void * lib3270_get_user_data(H3270 *h); | |
| 805 | + | |
| 806 | + /** | |
| 795 | 807 | * @brief Iterate internal's lib3270 event loop. |
| 796 | 808 | * |
| 797 | 809 | * Use it only if the internal I/O calls wasn't replaced. |
| ... | ... | @@ -818,18 +830,6 @@ |
| 818 | 830 | LIB3270_EXPORT int lib3270_wait_for_ready(H3270 *hSession, int seconds); |
| 819 | 831 | |
| 820 | 832 | /** |
| 821 | - * Get the session's widget. | |
| 822 | - * | |
| 823 | - * Get the handle to the GtkWidget who's handling this session. | |
| 824 | - * | |
| 825 | - * @param h Session handle. | |
| 826 | - * | |
| 827 | - * @return Associated GtkWidget (can be null) | |
| 828 | - * | |
| 829 | - */ | |
| 830 | - LIB3270_EXPORT void * lib3270_get_widget(H3270 *h); | |
| 831 | - | |
| 832 | - /** | |
| 833 | 833 | * "beep" to notify user. |
| 834 | 834 | * |
| 835 | 835 | * If available play a sound signal do alert user. | ... | ... |
src/include/lib3270/session.h
src/lib3270/iocalls.c
| ... | ... | @@ -51,15 +51,6 @@ static void * internal_add_timeout(unsigned long interval_ms, H3270 *session, vo |
| 51 | 51 | static void * internal_add_poll(H3270 *session, int fd, LIB3270_IO_FLAG flag, void(*proc)(H3270 *, int, LIB3270_IO_FLAG, void *), void *userdata ); |
| 52 | 52 | static void internal_remove_poll(void *id); |
| 53 | 53 | |
| 54 | - | |
| 55 | -/* | |
| 56 | -// fdcalls | |
| 57 | -static void internal_remove_source(void *id); | |
| 58 | -static void * internal_add_input(int source, H3270 *session, void (*fn)(H3270 *session)); | |
| 59 | -static void * internal_add_output(int source, H3270 *session, void (*fn)(H3270 *session)); | |
| 60 | -static void * internal_add_except(int source, H3270 *session, void (*fn)(H3270 *session)); | |
| 61 | -*/ | |
| 62 | - | |
| 63 | 54 | static int internal_wait(H3270 *hSession, int seconds); |
| 64 | 55 | |
| 65 | 56 | static int internal_event_dispatcher(H3270 *hSession, int block); | ... | ... |
src/lib3270/screen.c
| ... | ... | @@ -688,7 +688,7 @@ void Error(H3270 *session, const char *fmt, ...) |
| 688 | 688 | |
| 689 | 689 | va_start(arg_ptr, fmt); |
| 690 | 690 | |
| 691 | - popup_handler(session,session->widget,LIB3270_NOTIFY_ERROR, _( "3270 Error" ),NULL,fmt,arg_ptr); | |
| 691 | + popup_handler(session,session->user_data,LIB3270_NOTIFY_ERROR, _( "3270 Error" ),NULL,fmt,arg_ptr); | |
| 692 | 692 | |
| 693 | 693 | va_end(arg_ptr); |
| 694 | 694 | |
| ... | ... | @@ -703,7 +703,7 @@ void Warning(H3270 *session, const char *fmt, ...) |
| 703 | 703 | trace("%s: title=%s fmt=%s",__FUNCTION__,"3270 Warning",fmt); |
| 704 | 704 | |
| 705 | 705 | va_start(arg_ptr, fmt); |
| 706 | - popup_handler(session,session->widget,LIB3270_NOTIFY_WARNING, _( "3270 Warning" ),NULL,fmt,arg_ptr); | |
| 706 | + popup_handler(session,session->user_data,LIB3270_NOTIFY_WARNING, _( "3270 Warning" ),NULL,fmt,arg_ptr); | |
| 707 | 707 | va_end(arg_ptr); |
| 708 | 708 | |
| 709 | 709 | } |
| ... | ... | @@ -718,7 +718,7 @@ void popup_an_error(H3270 *session, const char *fmt, ...) |
| 718 | 718 | trace("%s: title=%s fmt=%s",__FUNCTION__,"3270 Error",fmt); |
| 719 | 719 | |
| 720 | 720 | va_start(args, fmt); |
| 721 | - popup_handler(session,session->widget,LIB3270_NOTIFY_ERROR,_( "3270 Error" ),NULL,fmt,args); | |
| 721 | + popup_handler(session,session->user_data,LIB3270_NOTIFY_ERROR,_( "3270 Error" ),NULL,fmt,args); | |
| 722 | 722 | va_end(args); |
| 723 | 723 | |
| 724 | 724 | } |
| ... | ... | @@ -732,7 +732,7 @@ void popup_system_error(H3270 *session, const char *title, const char *message, |
| 732 | 732 | trace("%s: title=%s msg=%s",__FUNCTION__,"3270 Error",message); |
| 733 | 733 | |
| 734 | 734 | va_start(args, fmt); |
| 735 | - popup_handler(session,session->widget,LIB3270_NOTIFY_ERROR,title ? title : _( "3270 Error" ), message,fmt,args); | |
| 735 | + popup_handler(session,session->user_data,LIB3270_NOTIFY_ERROR,title ? title : _( "3270 Error" ), message,fmt,args); | |
| 736 | 736 | va_end(args); |
| 737 | 737 | } |
| 738 | 738 | |
| ... | ... | @@ -857,7 +857,7 @@ LIB3270_EXPORT void lib3270_popup_va(H3270 *session, LIB3270_NOTIFY id , const c |
| 857 | 857 | |
| 858 | 858 | trace("%s: title=%s msg=%s",__FUNCTION__,"3270 Error",message); |
| 859 | 859 | |
| 860 | - popup_handler(session,session->widget,id,title ? title : _( "3270 Error" ), message,fmt,args); | |
| 860 | + popup_handler(session,session->user_data,id,title ? title : _( "3270 Error" ), message,fmt,args); | |
| 861 | 861 | } |
| 862 | 862 | |
| 863 | 863 | LIB3270_EXPORT int lib3270_is_protected(H3270 *h, unsigned int baddr) | ... | ... |
src/lib3270/session.c
| ... | ... | @@ -320,9 +320,14 @@ LIB3270_EXPORT H3270 * lib3270_get_default_session_handle(void) |
| 320 | 320 | return lib3270_session_new(""); |
| 321 | 321 | } |
| 322 | 322 | |
| 323 | -LIB3270_EXPORT void * lib3270_get_widget(H3270 *h) | |
| 323 | +LIB3270_EXPORT void lib3270_set_user_data(H3270 *h, void *ptr) | |
| 324 | 324 | { |
| 325 | 325 | CHECK_SESSION_HANDLE(h); |
| 326 | - return h->widget; | |
| 326 | + h->user_data = ptr; | |
| 327 | 327 | } |
| 328 | 328 | |
| 329 | +LIB3270_EXPORT void * lib3270_get_user_data(H3270 *h) | |
| 330 | +{ | |
| 331 | + CHECK_SESSION_HANDLE(h); | |
| 332 | + return h->user_data; | |
| 333 | +} | ... | ... |
src/plugins/rx3270/pluginmain.cc
| ... | ... | @@ -658,14 +658,14 @@ extern "C" |
| 658 | 658 | |
| 659 | 659 | int plugin::set_copy(const char *text) |
| 660 | 660 | { |
| 661 | - v3270_set_copy(GTK_WIDGET(lib3270_get_widget(hSession)),text); | |
| 661 | + v3270_set_copy(GTK_WIDGET(lib3270_get_user_data(hSession)),text); | |
| 662 | 662 | return 0; |
| 663 | 663 | } |
| 664 | 664 | |
| 665 | 665 | string plugin::get_copy(void) |
| 666 | 666 | { |
| 667 | 667 | string rc; |
| 668 | - gchar * ptr = v3270_get_copy(GTK_WIDGET(lib3270_get_widget(hSession))); | |
| 668 | + gchar * ptr = v3270_get_copy(GTK_WIDGET(lib3270_get_user_data(hSession))); | |
| 669 | 669 | |
| 670 | 670 | if(ptr) |
| 671 | 671 | { | ... | ... |
src/pw3270/v3270/draw.c
| ... | ... | @@ -379,7 +379,7 @@ void v3270_reload(GtkWidget *widget) |
| 379 | 379 | |
| 380 | 380 | void v3270_update_char(H3270 *session, int addr, unsigned char chr, unsigned short attr, unsigned char cursor) |
| 381 | 381 | { |
| 382 | - v3270 * terminal = GTK_V3270(session->widget); | |
| 382 | + v3270 * terminal = GTK_V3270(session->user_data); | |
| 383 | 383 | cairo_t * cr; |
| 384 | 384 | GdkRectangle rect; |
| 385 | 385 | int rows,cols; | ... | ... |
src/pw3270/v3270/oia.c
| ... | ... | @@ -711,7 +711,7 @@ static void draw_cursor_position(cairo_t *cr, GdkRectangle *rect, struct v3270_m |
| 711 | 711 | |
| 712 | 712 | void v3270_update_cursor(H3270 *session, unsigned short row, unsigned short col, unsigned char c, unsigned short attr) |
| 713 | 713 | { |
| 714 | - v3270 * terminal = GTK_V3270(session->widget); | |
| 714 | + v3270 * terminal = GTK_V3270(session->user_data); | |
| 715 | 715 | GdkRectangle saved; |
| 716 | 716 | |
| 717 | 717 | if(!terminal->surface) |
| ... | ... | @@ -1027,7 +1027,7 @@ void v3270_stop_timer(GtkWidget *widget) |
| 1027 | 1027 | |
| 1028 | 1028 | void v3270_update_ssl(H3270 *session, LIB3270_SSL_STATE state) |
| 1029 | 1029 | { |
| 1030 | - v3270 * terminal = GTK_V3270(session->widget); | |
| 1030 | + v3270 * terminal = GTK_V3270(session->user_data); | |
| 1031 | 1031 | cairo_t * cr; |
| 1032 | 1032 | GdkRectangle * r; |
| 1033 | 1033 | |
| ... | ... | @@ -1046,7 +1046,7 @@ void v3270_update_oia(H3270 *session, LIB3270_FLAG id, unsigned char on) |
| 1046 | 1046 | cairo_t *cr; |
| 1047 | 1047 | GdkRectangle *r; |
| 1048 | 1048 | |
| 1049 | - v3270 *terminal = GTK_V3270(session->widget); | |
| 1049 | + v3270 *terminal = GTK_V3270(session->user_data); | |
| 1050 | 1050 | |
| 1051 | 1051 | if(!terminal->surface) |
| 1052 | 1052 | return; | ... | ... |
src/pw3270/v3270/widget.c
| ... | ... | @@ -649,7 +649,7 @@ void v3270_update_font_metrics(v3270 *terminal, cairo_t *cr, int width, int heig |
| 649 | 649 | |
| 650 | 650 | static void set_timer(H3270 *session, unsigned char on) |
| 651 | 651 | { |
| 652 | - GtkWidget *widget = GTK_WIDGET(session->widget); | |
| 652 | + GtkWidget *widget = GTK_WIDGET(session->user_data); | |
| 653 | 653 | |
| 654 | 654 | if(on) |
| 655 | 655 | v3270_start_timer(widget); |
| ... | ... | @@ -666,52 +666,52 @@ static void update_toggle(H3270 *session, LIB3270_TOGGLE ix, unsigned char value |
| 666 | 666 | { |
| 667 | 667 | case LIB3270_TOGGLE_CURSOR_POS: |
| 668 | 668 | case LIB3270_TOGGLE_CROSSHAIR: |
| 669 | - v3270_reload(GTK_WIDGET(session->widget)); | |
| 670 | - gtk_widget_queue_draw(GTK_WIDGET(session->widget)); | |
| 669 | + v3270_reload(GTK_WIDGET(session->user_data)); | |
| 670 | + gtk_widget_queue_draw(GTK_WIDGET(session->user_data)); | |
| 671 | 671 | break; |
| 672 | 672 | |
| 673 | 673 | case LIB3270_TOGGLE_CURSOR_BLINK: |
| 674 | - GTK_V3270(session->widget)->cursor.show |= 1; | |
| 674 | + GTK_V3270(session->user_data)->cursor.show |= 1; | |
| 675 | 675 | break; |
| 676 | 676 | |
| 677 | 677 | case LIB3270_TOGGLE_INSERT: |
| 678 | - v3270_draw_ins_status(GTK_V3270(session->widget)); | |
| 679 | - v3270_cursor_draw(GTK_V3270(session->widget)); | |
| 678 | + v3270_draw_ins_status(GTK_V3270(session->user_data)); | |
| 679 | + v3270_cursor_draw(GTK_V3270(session->user_data)); | |
| 680 | 680 | break; |
| 681 | 681 | |
| 682 | 682 | case LIB3270_TOGGLE_BOLD: |
| 683 | - v3270_reload(GTK_WIDGET(session->widget)); | |
| 684 | - gtk_widget_queue_draw(GTK_WIDGET(session->widget)); | |
| 683 | + v3270_reload(GTK_WIDGET(session->user_data)); | |
| 684 | + gtk_widget_queue_draw(GTK_WIDGET(session->user_data)); | |
| 685 | 685 | break; |
| 686 | 686 | |
| 687 | 687 | case LIB3270_TOGGLE_FULL_SCREEN: |
| 688 | 688 | if(value) |
| 689 | - gtk_window_fullscreen(GTK_WINDOW(gtk_widget_get_toplevel(GTK_WIDGET(session->widget)))); | |
| 689 | + gtk_window_fullscreen(GTK_WINDOW(gtk_widget_get_toplevel(GTK_WIDGET(session->user_data)))); | |
| 690 | 690 | else |
| 691 | - gtk_window_unfullscreen(GTK_WINDOW(gtk_widget_get_toplevel(GTK_WIDGET(session->widget)))); | |
| 691 | + gtk_window_unfullscreen(GTK_WINDOW(gtk_widget_get_toplevel(GTK_WIDGET(session->user_data)))); | |
| 692 | 692 | } |
| 693 | 693 | #if GTK_CHECK_VERSION(2,26,0) |
| 694 | - g_object_notify_by_pspec(G_OBJECT(session->widget), v3270_properties[PROP_TOGGLE+ix]); | |
| 694 | + g_object_notify_by_pspec(G_OBJECT(session->user_data), v3270_properties[PROP_TOGGLE+ix]); | |
| 695 | 695 | #else |
| 696 | - g_object_notify(G_OBJECT(session->widget),name); | |
| 696 | + g_object_notify(G_OBJECT(session->user_data),name); | |
| 697 | 697 | #endif // GTK_CHECK_VERSION |
| 698 | 698 | |
| 699 | - g_signal_emit(GTK_WIDGET(session->widget), v3270_widget_signal[SIGNAL_TOGGLE_CHANGED], 0, (guint) ix, (gboolean) (value != 0), (gchar *) name); | |
| 699 | + g_signal_emit(GTK_WIDGET(session->user_data), v3270_widget_signal[SIGNAL_TOGGLE_CHANGED], 0, (guint) ix, (gboolean) (value != 0), (gchar *) name); | |
| 700 | 700 | } |
| 701 | 701 | |
| 702 | 702 | static void update_message(H3270 *session, LIB3270_MESSAGE id) |
| 703 | 703 | { |
| 704 | - g_signal_emit(GTK_WIDGET(session->widget), v3270_widget_signal[SIGNAL_MESSAGE_CHANGED], 0, (gint) id); | |
| 704 | + g_signal_emit(GTK_WIDGET(session->user_data), v3270_widget_signal[SIGNAL_MESSAGE_CHANGED], 0, (gint) id); | |
| 705 | 705 | } |
| 706 | 706 | |
| 707 | 707 | static void update_luname(H3270 *session, const char *name) |
| 708 | 708 | { |
| 709 | - v3270_update_luname(GTK_WIDGET(session->widget),name); | |
| 709 | + v3270_update_luname(GTK_WIDGET(session->user_data),name); | |
| 710 | 710 | } |
| 711 | 711 | |
| 712 | 712 | static void select_cursor(H3270 *session, LIB3270_CURSOR id) |
| 713 | 713 | { |
| 714 | - GtkWidget *widget = GTK_WIDGET(session->widget); | |
| 714 | + GtkWidget *widget = GTK_WIDGET(session->user_data); | |
| 715 | 715 | |
| 716 | 716 | #if GTK_CHECK_VERSION(2,20,0) |
| 717 | 717 | if(gtk_widget_get_realized(widget) && gtk_widget_get_has_window(widget)) |
| ... | ... | @@ -726,7 +726,7 @@ static void select_cursor(H3270 *session, LIB3270_CURSOR id) |
| 726 | 726 | |
| 727 | 727 | static void ctlr_done(H3270 *session) |
| 728 | 728 | { |
| 729 | - GtkWidget *widget = GTK_WIDGET(session->widget); | |
| 729 | + GtkWidget *widget = GTK_WIDGET(session->user_data); | |
| 730 | 730 | |
| 731 | 731 | #if GTK_CHECK_VERSION(2,20,0) |
| 732 | 732 | if(gtk_widget_get_realized(widget) && gtk_widget_get_has_window(widget)) |
| ... | ... | @@ -741,7 +741,7 @@ static void ctlr_done(H3270 *session) |
| 741 | 741 | |
| 742 | 742 | static void update_connect(H3270 *session, unsigned char connected) |
| 743 | 743 | { |
| 744 | - v3270 *widget = GTK_V3270(session->widget); | |
| 744 | + v3270 *widget = GTK_V3270(session->user_data); | |
| 745 | 745 | |
| 746 | 746 | trace("%s - %s",__FUNCTION__,connected ? "Connected" : "Disconnected"); |
| 747 | 747 | |
| ... | ... | @@ -770,23 +770,23 @@ static void update_connect(H3270 *session, unsigned char connected) |
| 770 | 770 | static void update_screen_size(H3270 *session,unsigned short rows, unsigned short cols) |
| 771 | 771 | { |
| 772 | 772 | // trace("Widget %p changes to %dx%d",session->widget,cols,rows); |
| 773 | - v3270_reload(GTK_WIDGET(session->widget)); | |
| 774 | - gtk_widget_queue_draw(GTK_WIDGET(session->widget)); | |
| 773 | + v3270_reload(GTK_WIDGET(session->user_data)); | |
| 774 | + gtk_widget_queue_draw(GTK_WIDGET(session->user_data)); | |
| 775 | 775 | } |
| 776 | 776 | |
| 777 | 777 | static void update_model(H3270 *session, const char *name, int model, int rows, int cols) |
| 778 | 778 | { |
| 779 | 779 | #if GTK_CHECK_VERSION(2,26,0) |
| 780 | - g_object_notify_by_pspec(G_OBJECT(session->widget), v3270_properties[PROP_MODEL]); | |
| 780 | + g_object_notify_by_pspec(G_OBJECT(session->user_data), v3270_properties[PROP_MODEL]); | |
| 781 | 781 | #else |
| 782 | - g_object_notify(G_OBJECT(session->widget),"model"); | |
| 782 | + g_object_notify(G_OBJECT(session->user_data),"model"); | |
| 783 | 783 | #endif // GTK_CHECK_VERSION |
| 784 | - g_signal_emit(GTK_WIDGET(session->widget),v3270_widget_signal[SIGNAL_MODEL_CHANGED], 0, (guint) model, name); | |
| 784 | + g_signal_emit(GTK_WIDGET(session->user_data),v3270_widget_signal[SIGNAL_MODEL_CHANGED], 0, (guint) model, name); | |
| 785 | 785 | } |
| 786 | 786 | |
| 787 | 787 | static void changed(H3270 *session, int offset, int len) |
| 788 | 788 | { |
| 789 | - GtkWidget * widget = session->widget; | |
| 789 | + GtkWidget * widget = session->user_data; | |
| 790 | 790 | GtkAccessible * obj = GTK_V3270(widget)->accessible; |
| 791 | 791 | |
| 792 | 792 | #ifdef WIN32 |
| ... | ... | @@ -845,7 +845,7 @@ static void changed(H3270 *session, int offset, int len) |
| 845 | 845 | |
| 846 | 846 | static void set_selection(H3270 *session, unsigned char status) |
| 847 | 847 | { |
| 848 | - GtkWidget * widget = GTK_WIDGET(session->widget); | |
| 848 | + GtkWidget * widget = GTK_WIDGET(session->user_data); | |
| 849 | 849 | |
| 850 | 850 | #if GTK_CHECK_VERSION(2,26,0) |
| 851 | 851 | g_object_notify_by_pspec(G_OBJECT(widget), v3270_properties[PROP_SELECTION]); |
| ... | ... | @@ -859,7 +859,7 @@ static void set_selection(H3270 *session, unsigned char status) |
| 859 | 859 | static void update_selection(H3270 *session, int start, int end) |
| 860 | 860 | { |
| 861 | 861 | // Selected region changed |
| 862 | - GtkWidget * widget = GTK_WIDGET(session->widget); | |
| 862 | + GtkWidget * widget = GTK_WIDGET(session->user_data); | |
| 863 | 863 | GtkAccessible * atk_obj = GTK_V3270(widget)->accessible; |
| 864 | 864 | |
| 865 | 865 | if(atk_obj) |
| ... | ... | @@ -869,7 +869,7 @@ static void update_selection(H3270 *session, int start, int end) |
| 869 | 869 | |
| 870 | 870 | static void message(H3270 *session, LIB3270_NOTIFY id , const char *title, const char *message, const char *text) |
| 871 | 871 | { |
| 872 | - g_signal_emit( GTK_WIDGET(session->widget), v3270_widget_signal[SIGNAL_MESSAGE], 0, | |
| 872 | + g_signal_emit( GTK_WIDGET(session->user_data), v3270_widget_signal[SIGNAL_MESSAGE], 0, | |
| 873 | 873 | (int) id, |
| 874 | 874 | (gchar *) title, |
| 875 | 875 | (gchar *) message, |
| ... | ... | @@ -879,7 +879,7 @@ static void message(H3270 *session, LIB3270_NOTIFY id , const char *title, const |
| 879 | 879 | |
| 880 | 880 | static int emit_print_signal(H3270 *session) |
| 881 | 881 | { |
| 882 | - g_signal_emit(GTK_WIDGET(session->widget), v3270_widget_signal[SIGNAL_PRINT], 0); | |
| 882 | + g_signal_emit(GTK_WIDGET(session->user_data), v3270_widget_signal[SIGNAL_PRINT], 0); | |
| 883 | 883 | return 0; |
| 884 | 884 | } |
| 885 | 885 | |
| ... | ... | @@ -910,7 +910,7 @@ static void v3270_init(v3270 *widget) |
| 910 | 910 | return; |
| 911 | 911 | } |
| 912 | 912 | |
| 913 | - widget->host->widget = widget; | |
| 913 | + widget->host->user_data = widget; | |
| 914 | 914 | |
| 915 | 915 | widget->host->update = v3270_update_char; |
| 916 | 916 | widget->host->changed = changed; |
| ... | ... | @@ -1650,11 +1650,11 @@ GtkWidget * v3270_get_default_widget(void) |
| 1650 | 1650 | return NULL; |
| 1651 | 1651 | } |
| 1652 | 1652 | |
| 1653 | - if(!(hSession->widget && GTK_IS_V3270(hSession->widget))) | |
| 1653 | + if(!(hSession->user_data && GTK_IS_V3270(hSession->user_data))) | |
| 1654 | 1654 | { |
| 1655 | 1655 | g_warning("No widget on default session on %s",__FUNCTION__); |
| 1656 | 1656 | return NULL; |
| 1657 | 1657 | } |
| 1658 | 1658 | |
| 1659 | - return GTK_WIDGET(hSession->widget); | |
| 1659 | + return GTK_WIDGET(hSession->user_data); | |
| 1660 | 1660 | } | ... | ... |