Commit 1280051c8ce9a70fdb768a01c5dfb1df1d7a260b
1 parent
179483d8
Exists in
master
and in
1 other branch
Moving class properties to the class structure.
Showing
8 changed files
with
87 additions
and
89 deletions
Show diff stats
src/include/internals.h
@@ -37,6 +37,7 @@ | @@ -37,6 +37,7 @@ | ||
37 | #define GETTEXT_PACKAGE PACKAGE_NAME | 37 | #define GETTEXT_PACKAGE PACKAGE_NAME |
38 | 38 | ||
39 | #include <glib.h> | 39 | #include <glib.h> |
40 | + #include <glib/gi18n.h> | ||
40 | #include <gtk/gtk.h> | 41 | #include <gtk/gtk.h> |
41 | #include <lib3270.h> | 42 | #include <lib3270.h> |
42 | #include <lib3270/log.h> | 43 | #include <lib3270/log.h> |
@@ -133,6 +134,7 @@ | @@ -133,6 +134,7 @@ | ||
133 | 134 | ||
134 | G_GNUC_INTERNAL gboolean v3270_draw(GtkWidget * widget, cairo_t * cr); | 135 | G_GNUC_INTERNAL gboolean v3270_draw(GtkWidget * widget, cairo_t * cr); |
135 | G_GNUC_INTERNAL void v3270_cursor_draw(v3270 *widget); | 136 | G_GNUC_INTERNAL void v3270_cursor_draw(v3270 *widget); |
137 | + G_GNUC_INTERNAL void v3270_set_cursor(GtkWidget *widget, LIB3270_POINTER id); | ||
136 | 138 | ||
137 | G_GNUC_INTERNAL void v3270_draw_oia(v3270 *terminal, cairo_t *cr, int row, int cols); | 139 | G_GNUC_INTERNAL void v3270_draw_oia(v3270 *terminal, cairo_t *cr, int row, int cols); |
138 | G_GNUC_INTERNAL void v3270_update_mouse_pointer(GtkWidget *widget); | 140 | G_GNUC_INTERNAL void v3270_update_mouse_pointer(GtkWidget *widget); |
src/terminal/callbacks.c
@@ -71,7 +71,8 @@ static void set_timer(H3270 *session, unsigned char on) | @@ -71,7 +71,8 @@ static void set_timer(H3270 *session, unsigned char on) | ||
71 | 71 | ||
72 | static void update_toggle(H3270 *session, LIB3270_TOGGLE ix, unsigned char value, G_GNUC_UNUSED LIB3270_TOGGLE_TYPE reason, const char *name) | 72 | static void update_toggle(H3270 *session, LIB3270_TOGGLE ix, unsigned char value, G_GNUC_UNUSED LIB3270_TOGGLE_TYPE reason, const char *name) |
73 | { | 73 | { |
74 | - GtkWidget *widget = GTK_WIDGET(lib3270_get_user_data(session)); | 74 | + GtkWidget * widget = GTK_WIDGET(lib3270_get_user_data(session)); |
75 | + v3270Class * klass = GTK_V3270_GET_CLASS(widget); | ||
75 | 76 | ||
76 | trace("%s(%s,%d)",__FUNCTION__,name,(int) value); | 77 | trace("%s(%s,%d)",__FUNCTION__,name,(int) value); |
77 | 78 | ||
@@ -133,7 +134,7 @@ static void update_toggle(H3270 *session, LIB3270_TOGGLE ix, unsigned char value | @@ -133,7 +134,7 @@ static void update_toggle(H3270 *session, LIB3270_TOGGLE ix, unsigned char value | ||
133 | 134 | ||
134 | } | 135 | } |
135 | 136 | ||
136 | - g_object_notify_by_pspec(G_OBJECT(widget), v3270_properties.toggle[ix]); | 137 | + g_object_notify_by_pspec(G_OBJECT(widget), klass->properties.toggle[ix]); |
137 | g_signal_emit(widget, v3270_widget_signal[V3270_SIGNAL_TOGGLE_CHANGED], 0, (guint) ix, (gboolean) (value != 0), (gchar *) name); | 138 | g_signal_emit(widget, v3270_widget_signal[V3270_SIGNAL_TOGGLE_CHANGED], 0, (guint) ix, (gboolean) (value != 0), (gchar *) name); |
138 | 139 | ||
139 | } | 140 | } |
@@ -226,8 +227,7 @@ static void update_connect(H3270 *session, unsigned char connected) | @@ -226,8 +227,7 @@ static void update_connect(H3270 *session, unsigned char connected) | ||
226 | g_signal_emit(GTK_WIDGET(widget), v3270_widget_signal[V3270_SIGNAL_DISCONNECTED], 0); | 227 | g_signal_emit(GTK_WIDGET(widget), v3270_widget_signal[V3270_SIGNAL_DISCONNECTED], 0); |
227 | } | 228 | } |
228 | 229 | ||
229 | - if(v3270_properties.online) | ||
230 | - g_object_notify_by_pspec(G_OBJECT(widget), v3270_properties.online); | 230 | + g_object_notify_by_pspec(G_OBJECT(widget), GTK_V3270_GET_CLASS(widget)->properties.online); |
231 | 231 | ||
232 | widget->activity.timestamp = time(0); | 232 | widget->activity.timestamp = time(0); |
233 | 233 | ||
@@ -236,16 +236,16 @@ static void update_connect(H3270 *session, unsigned char connected) | @@ -236,16 +236,16 @@ static void update_connect(H3270 *session, unsigned char connected) | ||
236 | 236 | ||
237 | static void update_screen_size(H3270 *session, G_GNUC_UNUSED unsigned short rows, G_GNUC_UNUSED unsigned short cols) | 237 | static void update_screen_size(H3270 *session, G_GNUC_UNUSED unsigned short rows, G_GNUC_UNUSED unsigned short cols) |
238 | { | 238 | { |
239 | - v3270_reload(GTK_WIDGET(lib3270_get_user_data(session))); | ||
240 | - gtk_widget_queue_draw(GTK_WIDGET(lib3270_get_user_data(session))); | 239 | + GtkWidget * widget = GTK_WIDGET(lib3270_get_user_data(session)); |
240 | + v3270_reload(widget); | ||
241 | + gtk_widget_queue_draw(widget); | ||
241 | } | 242 | } |
242 | 243 | ||
243 | static void update_model(H3270 *session, const char *name, int model, G_GNUC_UNUSED int rows, G_GNUC_UNUSED int cols) | 244 | static void update_model(H3270 *session, const char *name, int model, G_GNUC_UNUSED int rows, G_GNUC_UNUSED int cols) |
244 | { | 245 | { |
245 | - if(v3270_properties.model) | ||
246 | - g_object_notify_by_pspec(G_OBJECT(lib3270_get_user_data(session)), v3270_properties.model); | ||
247 | - | ||
248 | - g_signal_emit(GTK_WIDGET(lib3270_get_user_data(session)),v3270_widget_signal[V3270_SIGNAL_MODEL_CHANGED], 0, (guint) model, name); | 246 | + GtkWidget * widget = GTK_WIDGET(lib3270_get_user_data(session)); |
247 | + g_object_notify_by_pspec(G_OBJECT(lib3270_get_user_data(session)), GTK_V3270_GET_CLASS(widget)->properties.model); | ||
248 | + g_signal_emit(widget,v3270_widget_signal[V3270_SIGNAL_MODEL_CHANGED], 0, (guint) model, name); | ||
249 | } | 249 | } |
250 | 250 | ||
251 | static void changed(H3270 *session, int offset, int len) | 251 | static void changed(H3270 *session, int offset, int len) |
@@ -299,9 +299,7 @@ static void set_selection(H3270 *session, unsigned char status) | @@ -299,9 +299,7 @@ static void set_selection(H3270 *session, unsigned char status) | ||
299 | { | 299 | { |
300 | GtkWidget * widget = GTK_WIDGET(lib3270_get_user_data(session)); | 300 | GtkWidget * widget = GTK_WIDGET(lib3270_get_user_data(session)); |
301 | 301 | ||
302 | - if(v3270_properties.selection) | ||
303 | - g_object_notify_by_pspec(G_OBJECT(widget), v3270_properties.selection); | ||
304 | - | 302 | + g_object_notify_by_pspec(G_OBJECT(widget), GTK_V3270_GET_CLASS(widget)->properties.selection); |
305 | g_signal_emit(widget,v3270_widget_signal[V3270_SIGNAL_SELECTING], 0, status ? TRUE : FALSE); | 303 | g_signal_emit(widget,v3270_widget_signal[V3270_SIGNAL_SELECTING], 0, status ? TRUE : FALSE); |
306 | 304 | ||
307 | } | 305 | } |
src/terminal/mouse.c
@@ -222,7 +222,7 @@ static void update_mouse_pointer(GtkWidget *widget, int baddr) | @@ -222,7 +222,7 @@ static void update_mouse_pointer(GtkWidget *widget, int baddr) | ||
222 | 222 | ||
223 | if(baddr >= 0 && terminal->pointer_id == LIB3270_POINTER_UNLOCKED) | 223 | if(baddr >= 0 && terminal->pointer_id == LIB3270_POINTER_UNLOCKED) |
224 | { | 224 | { |
225 | - gdk_window_set_cursor(gtk_widget_get_window(widget),v3270_cursor[lib3270_get_pointer(terminal->host,baddr)]); | 225 | + v3270_set_cursor(widget,lib3270_get_pointer(terminal->host,baddr)); |
226 | } | 226 | } |
227 | } | 227 | } |
228 | 228 | ||
@@ -240,7 +240,7 @@ gboolean v3270_motion_notify_event(GtkWidget *widget, GdkEventMotion *event) | @@ -240,7 +240,7 @@ gboolean v3270_motion_notify_event(GtkWidget *widget, GdkEventMotion *event) | ||
240 | 240 | ||
241 | if(!lib3270_connected(terminal->host)) | 241 | if(!lib3270_connected(terminal->host)) |
242 | { | 242 | { |
243 | - gdk_window_set_cursor(gtk_widget_get_window(widget),v3270_cursor[LIB3270_POINTER_LOCKED]); | 243 | + v3270_set_cursor(widget,LIB3270_POINTER_LOCKED); |
244 | return FALSE; | 244 | return FALSE; |
245 | } | 245 | } |
246 | 246 | ||
@@ -292,7 +292,7 @@ gboolean v3270_motion_notify_event(GtkWidget *widget, GdkEventMotion *event) | @@ -292,7 +292,7 @@ gboolean v3270_motion_notify_event(GtkWidget *widget, GdkEventMotion *event) | ||
292 | } | 292 | } |
293 | } | 293 | } |
294 | 294 | ||
295 | - gdk_window_set_cursor(gtk_widget_get_window(widget),v3270_cursor[id]); | 295 | + v3270_set_cursor(widget,id); |
296 | } | 296 | } |
297 | 297 | ||
298 | return FALSE; | 298 | return FALSE; |
src/terminal/oia.c
@@ -721,7 +721,7 @@ void v3270_update_luname(GtkWidget *widget,const gchar *name) | @@ -721,7 +721,7 @@ void v3270_update_luname(GtkWidget *widget,const gchar *name) | ||
721 | v3270_queue_draw_area(GTK_WIDGET(terminal),rect->x,rect->y,rect->width,rect->height); | 721 | v3270_queue_draw_area(GTK_WIDGET(terminal),rect->x,rect->y,rect->width,rect->height); |
722 | } | 722 | } |
723 | 723 | ||
724 | - g_object_notify_by_pspec(G_OBJECT(widget), v3270_properties.luname); | 724 | + g_object_notify_by_pspec(G_OBJECT(widget), GTK_V3270_GET_CLASS(widget)->properties.luname); |
725 | 725 | ||
726 | } | 726 | } |
727 | 727 |
src/terminal/private.h
@@ -28,15 +28,8 @@ | @@ -28,15 +28,8 @@ | ||
28 | */ | 28 | */ |
29 | 29 | ||
30 | #include <config.h> | 30 | #include <config.h> |
31 | - | ||
32 | #include <internals.h> | 31 | #include <internals.h> |
33 | 32 | ||
34 | -#include <libintl.h> | ||
35 | -#include <glib/gi18n.h> | ||
36 | - | ||
37 | -#include <gtk/gtk.h> | ||
38 | -#include <v3270.h> | ||
39 | - | ||
40 | G_BEGIN_DECLS | 33 | G_BEGIN_DECLS |
41 | 34 | ||
42 | struct _v3270Class | 35 | struct _v3270Class |
@@ -45,12 +38,31 @@ G_BEGIN_DECLS | @@ -45,12 +38,31 @@ G_BEGIN_DECLS | ||
45 | 38 | ||
46 | // Internal properties. | 39 | // Internal properties. |
47 | struct { | 40 | struct { |
41 | + | ||
48 | size_t count; // Number of properties. | 42 | size_t count; // Number of properties. |
49 | 43 | ||
50 | GParamSpec * font_family; | 44 | GParamSpec * font_family; |
45 | + GParamSpec * toggle[LIB3270_TOGGLE_COUNT]; // Toggle properties. | ||
46 | + | ||
47 | + // Signal related properties | ||
48 | + GParamSpec * online; | ||
49 | + GParamSpec * luname; | ||
50 | + GParamSpec * model; | ||
51 | + GParamSpec * selection; | ||
52 | + | ||
53 | + struct | ||
54 | + { | ||
55 | + guint toggle; | ||
56 | + guint boolean; | ||
57 | + guint integer; | ||
58 | + guint str; | ||
59 | + } type; | ||
51 | 60 | ||
52 | } properties; | 61 | } properties; |
53 | 62 | ||
63 | + // Cursors | ||
64 | + GdkCursor * cursors[LIB3270_POINTER_COUNT]; | ||
65 | + | ||
54 | // Signals | 66 | // Signals |
55 | void (*activate)(GtkWidget *widget); | 67 | void (*activate)(GtkWidget *widget); |
56 | void (*toggle_changed)(v3270 *widget,LIB3270_TOGGLE toggle_id,gboolean toggle_state,const gchar *toggle_name); | 68 | void (*toggle_changed)(v3270 *widget,LIB3270_TOGGLE toggle_id,gboolean toggle_state,const gchar *toggle_name); |
@@ -168,31 +180,4 @@ G_BEGIN_DECLS | @@ -168,31 +180,4 @@ G_BEGIN_DECLS | ||
168 | 180 | ||
169 | /*--[ Globals ]--------------------------------------------------------------------------------------*/ | 181 | /*--[ Globals ]--------------------------------------------------------------------------------------*/ |
170 | 182 | ||
171 | - G_GNUC_INTERNAL GdkCursor * v3270_cursor[LIB3270_POINTER_COUNT]; | ||
172 | - | ||
173 | - G_GNUC_INTERNAL struct _v3270_properties | ||
174 | - { | ||
175 | - GParamSpec * toggle[LIB3270_TOGGLE_COUNT]; // Toggle properties. | ||
176 | - | ||
177 | - struct | ||
178 | - { | ||
179 | - guint toggle; | ||
180 | - guint boolean; | ||
181 | - guint integer; | ||
182 | - guint str; | ||
183 | - } type; | ||
184 | - | ||
185 | - /* | ||
186 | - // V3270 Internal properties. | ||
187 | - GParamSpec * font_family; | ||
188 | - */ | ||
189 | - | ||
190 | - // Properties who launch signals. | ||
191 | - GParamSpec * online; | ||
192 | - GParamSpec * luname; | ||
193 | - GParamSpec * model; | ||
194 | - GParamSpec * selection; | ||
195 | - | ||
196 | - } v3270_properties; | ||
197 | - | ||
198 | G_END_DECLS | 183 | G_END_DECLS |
src/terminal/properties.c
@@ -51,41 +51,42 @@ | @@ -51,41 +51,42 @@ | ||
51 | 51 | ||
52 | static void v3270_set_property(GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) | 52 | static void v3270_set_property(GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) |
53 | { | 53 | { |
54 | - v3270 *window = GTK_V3270(object); | 54 | + v3270 * window = GTK_V3270(object); |
55 | + v3270Class * klass = GTK_V3270_GET_CLASS(object); | ||
55 | 56 | ||
56 | debug("%s(%u,%s)",__FUNCTION__,prop_id,g_param_spec_get_name(pspec)); | 57 | debug("%s(%u,%s)",__FUNCTION__,prop_id,g_param_spec_get_name(pspec)); |
57 | 58 | ||
58 | - if(prop_id >= v3270_properties.type.str) | 59 | + if(prop_id >= klass->properties.type.str) |
59 | { | 60 | { |
60 | - const LIB3270_STRING_PROPERTY * prop = (lib3270_get_string_properties_list()+(prop_id - v3270_properties.type.str)); | 61 | + const LIB3270_STRING_PROPERTY * prop = (lib3270_get_string_properties_list()+(prop_id - klass->properties.type.str)); |
61 | debug("%s.%s.%s=%s",__FUNCTION__,"string",prop->name,g_value_get_string(value)); | 62 | debug("%s.%s.%s=%s",__FUNCTION__,"string",prop->name,g_value_get_string(value)); |
62 | 63 | ||
63 | if(prop->set) | 64 | if(prop->set) |
64 | prop->set(window->host,g_value_get_string(value)); | 65 | prop->set(window->host,g_value_get_string(value)); |
65 | 66 | ||
66 | } | 67 | } |
67 | - else if(prop_id >= v3270_properties.type.integer) | 68 | + else if(prop_id >= klass->properties.type.integer) |
68 | { | 69 | { |
69 | - const LIB3270_INT_PROPERTY * prop = (lib3270_get_int_properties_list()+(prop_id - v3270_properties.type.integer)); | 70 | + const LIB3270_INT_PROPERTY * prop = (lib3270_get_int_properties_list()+(prop_id - klass->properties.type.integer)); |
70 | debug("%s.%s.%s",__FUNCTION__,"integer",prop->name); | 71 | debug("%s.%s.%s",__FUNCTION__,"integer",prop->name); |
71 | 72 | ||
72 | if(prop->set) | 73 | if(prop->set) |
73 | prop->set(window->host,g_value_get_int(value)); | 74 | prop->set(window->host,g_value_get_int(value)); |
74 | 75 | ||
75 | } | 76 | } |
76 | - else if(prop_id >= v3270_properties.type.boolean) | 77 | + else if(prop_id >= klass->properties.type.boolean) |
77 | { | 78 | { |
78 | - const LIB3270_INT_PROPERTY * prop = (lib3270_get_boolean_properties_list()+(prop_id - v3270_properties.type.boolean)); | 79 | + const LIB3270_INT_PROPERTY * prop = (lib3270_get_boolean_properties_list()+(prop_id - klass->properties.type.boolean)); |
79 | debug("%s.%s.%s",__FUNCTION__,"boolean",prop->name); | 80 | debug("%s.%s.%s",__FUNCTION__,"boolean",prop->name); |
80 | 81 | ||
81 | if(prop->set) | 82 | if(prop->set) |
82 | prop->set(window->host,g_value_get_boolean(value) ? 1 : 0); | 83 | prop->set(window->host,g_value_get_boolean(value) ? 1 : 0); |
83 | 84 | ||
84 | } | 85 | } |
85 | - else if(prop_id >= v3270_properties.type.toggle) | 86 | + else if(prop_id >= klass->properties.type.toggle) |
86 | { | 87 | { |
87 | debug("%s.%s",__FUNCTION__,"toggle"); | 88 | debug("%s.%s",__FUNCTION__,"toggle"); |
88 | - lib3270_set_toggle(window->host,prop_id - v3270_properties.type.toggle, (int) g_value_get_boolean (value)); | 89 | + lib3270_set_toggle(window->host,prop_id - klass->properties.type.toggle, (int) g_value_get_boolean (value)); |
89 | 90 | ||
90 | } | 91 | } |
91 | 92 | ||
@@ -104,41 +105,42 @@ | @@ -104,41 +105,42 @@ | ||
104 | 105 | ||
105 | static void v3270_get_property(GObject *object,guint prop_id, GValue *value, GParamSpec *pspec) | 106 | static void v3270_get_property(GObject *object,guint prop_id, GValue *value, GParamSpec *pspec) |
106 | { | 107 | { |
107 | - v3270 *window = GTK_V3270(object); | 108 | + v3270 * window = GTK_V3270(object); |
109 | + v3270Class * klass = GTK_V3270_GET_CLASS(object); | ||
108 | 110 | ||
109 | debug("%s(%u,%s)",__FUNCTION__,prop_id,g_param_spec_get_name(pspec)); | 111 | debug("%s(%u,%s)",__FUNCTION__,prop_id,g_param_spec_get_name(pspec)); |
110 | 112 | ||
111 | - if(prop_id >= v3270_properties.type.str) | 113 | + if(prop_id >= klass->properties.type.str) |
112 | { | 114 | { |
113 | - const LIB3270_STRING_PROPERTY * prop = (lib3270_get_string_properties_list()+(prop_id - v3270_properties.type.str)); | 115 | + const LIB3270_STRING_PROPERTY * prop = (lib3270_get_string_properties_list()+(prop_id - klass->properties.type.str)); |
114 | debug("%s.%s.%s",__FUNCTION__,"string",prop->name); | 116 | debug("%s.%s.%s",__FUNCTION__,"string",prop->name); |
115 | 117 | ||
116 | if(prop->get) | 118 | if(prop->get) |
117 | g_value_set_string(value,prop->get(window->host)); | 119 | g_value_set_string(value,prop->get(window->host)); |
118 | 120 | ||
119 | } | 121 | } |
120 | - else if(prop_id >= v3270_properties.type.integer) | 122 | + else if(prop_id >= klass->properties.type.integer) |
121 | { | 123 | { |
122 | - const LIB3270_INT_PROPERTY * prop = (lib3270_get_int_properties_list()+(prop_id - v3270_properties.type.integer)); | 124 | + const LIB3270_INT_PROPERTY * prop = (lib3270_get_int_properties_list()+(prop_id - klass->properties.type.integer)); |
123 | debug("%s.%s.%s",__FUNCTION__,"integer",prop->name); | 125 | debug("%s.%s.%s",__FUNCTION__,"integer",prop->name); |
124 | 126 | ||
125 | if(prop->get) | 127 | if(prop->get) |
126 | g_value_set_int(value,prop->get(window->host)); | 128 | g_value_set_int(value,prop->get(window->host)); |
127 | 129 | ||
128 | } | 130 | } |
129 | - else if(prop_id >= v3270_properties.type.boolean) | 131 | + else if(prop_id >= klass->properties.type.boolean) |
130 | { | 132 | { |
131 | - const LIB3270_INT_PROPERTY * prop = (lib3270_get_boolean_properties_list()+(prop_id - v3270_properties.type.boolean)); | 133 | + const LIB3270_INT_PROPERTY * prop = (lib3270_get_boolean_properties_list()+(prop_id - klass->properties.type.boolean)); |
132 | debug("%s.%s.%s",__FUNCTION__,"boolean",prop->name); | 134 | debug("%s.%s.%s",__FUNCTION__,"boolean",prop->name); |
133 | 135 | ||
134 | if(prop->get) | 136 | if(prop->get) |
135 | g_value_set_boolean(value,prop->get(window->host) != 0 ? TRUE : FALSE); | 137 | g_value_set_boolean(value,prop->get(window->host) != 0 ? TRUE : FALSE); |
136 | 138 | ||
137 | } | 139 | } |
138 | - else if(prop_id >= v3270_properties.type.toggle) | 140 | + else if(prop_id >= klass->properties.type.toggle) |
139 | { | 141 | { |
140 | - debug("%s.%s.%s",__FUNCTION__,"toggle",lib3270_get_toggle_name(prop_id - v3270_properties.type.toggle)); | ||
141 | - g_value_set_boolean(value,lib3270_get_toggle(window->host,prop_id - v3270_properties.type.toggle) ? TRUE : FALSE ); | 142 | + debug("%s.%s.%s",__FUNCTION__,"toggle",lib3270_get_toggle_name(prop_id - klass->properties.type.toggle)); |
143 | + g_value_set_boolean(value,lib3270_get_toggle(window->host,prop_id - klass->properties.type.toggle) ? TRUE : FALSE ); | ||
142 | 144 | ||
143 | } | 145 | } |
144 | 146 | ||
@@ -159,15 +161,17 @@ | @@ -159,15 +161,17 @@ | ||
159 | 161 | ||
160 | void v3270_install_property(GObjectClass *oclass, guint property_id, GParamSpec *pspec) | 162 | void v3270_install_property(GObjectClass *oclass, guint property_id, GParamSpec *pspec) |
161 | { | 163 | { |
162 | - static const struct | 164 | + v3270Class * klass = GTK_V3270_CLASS(oclass); |
165 | + | ||
166 | + const struct | ||
163 | { | 167 | { |
164 | const char *name; | 168 | const char *name; |
165 | GParamSpec **prop; | 169 | GParamSpec **prop; |
166 | } properties[] = { | 170 | } properties[] = { |
167 | - { "connected", &v3270_properties.online }, | ||
168 | - { "luname", &v3270_properties.luname }, | ||
169 | - { "model", &v3270_properties.model }, | ||
170 | - { "has-selection", &v3270_properties.selection }, | 171 | + { "connected", &klass->properties.online }, |
172 | + { "luname", &klass->properties.luname }, | ||
173 | + { "model", &klass->properties.model }, | ||
174 | + { "has-selection", &klass->properties.selection }, | ||
171 | }; | 175 | }; |
172 | 176 | ||
173 | size_t ix; | 177 | size_t ix; |
@@ -195,7 +199,6 @@ | @@ -195,7 +199,6 @@ | ||
195 | 199 | ||
196 | debug("%s",__FUNCTION__); | 200 | debug("%s",__FUNCTION__); |
197 | 201 | ||
198 | - memset(&v3270_properties,0,sizeof(v3270_properties)); | ||
199 | gobject_class->set_property = v3270_set_property; | 202 | gobject_class->set_property = v3270_set_property; |
200 | gobject_class->get_property = v3270_get_property; | 203 | gobject_class->get_property = v3270_get_property; |
201 | 204 | ||
@@ -221,12 +224,12 @@ | @@ -221,12 +224,12 @@ | ||
221 | // | 224 | // |
222 | 225 | ||
223 | // Extract toggle class. | 226 | // Extract toggle class. |
224 | - v3270_properties.type.toggle = klass->properties.count; | 227 | + klass->properties.type.toggle = klass->properties.count; |
225 | for(ix = 0; ix < LIB3270_TOGGLE_COUNT; ix++) | 228 | for(ix = 0; ix < LIB3270_TOGGLE_COUNT; ix++) |
226 | { | 229 | { |
227 | - debug("Property %u=%s (Toggle)",(unsigned int) v3270_properties.type.toggle + ix, lib3270_get_toggle_name(ix)); | 230 | + debug("Property %u=%s (Toggle)",(unsigned int) klass->properties.type.toggle + ix, lib3270_get_toggle_name(ix)); |
228 | 231 | ||
229 | - v3270_properties.toggle[ix] = | 232 | + klass->properties.toggle[ix] = |
230 | g_param_spec_boolean( | 233 | g_param_spec_boolean( |
231 | lib3270_get_toggle_name(ix), | 234 | lib3270_get_toggle_name(ix), |
232 | lib3270_get_toggle_name(ix), | 235 | lib3270_get_toggle_name(ix), |
@@ -235,17 +238,17 @@ | @@ -235,17 +238,17 @@ | ||
235 | G_PARAM_WRITABLE|G_PARAM_READABLE | 238 | G_PARAM_WRITABLE|G_PARAM_READABLE |
236 | ); | 239 | ); |
237 | 240 | ||
238 | - v3270_install_property(gobject_class, klass->properties.count++, v3270_properties.toggle[ix]); | 241 | + v3270_install_property(gobject_class, klass->properties.count++, klass->properties.toggle[ix]); |
239 | 242 | ||
240 | } | 243 | } |
241 | 244 | ||
242 | // Creating boolean properties. | 245 | // Creating boolean properties. |
243 | - v3270_properties.type.boolean = klass->properties.count; | 246 | + klass->properties.type.boolean = klass->properties.count; |
244 | const LIB3270_INT_PROPERTY * bool_props = lib3270_get_boolean_properties_list(); | 247 | const LIB3270_INT_PROPERTY * bool_props = lib3270_get_boolean_properties_list(); |
245 | 248 | ||
246 | for(ix = 0; bool_props[ix].name; ix++) | 249 | for(ix = 0; bool_props[ix].name; ix++) |
247 | { | 250 | { |
248 | - debug("Property %u=%s (Boolean)",(unsigned int) v3270_properties.type.boolean + ix, bool_props[ix].name); | 251 | + debug("Property %u=%s (Boolean)",(unsigned int) klass->properties.type.boolean + ix, bool_props[ix].name); |
249 | spec = g_param_spec_boolean( | 252 | spec = g_param_spec_boolean( |
250 | bool_props[ix].name, | 253 | bool_props[ix].name, |
251 | bool_props[ix].name, | 254 | bool_props[ix].name, |
@@ -260,11 +263,11 @@ | @@ -260,11 +263,11 @@ | ||
260 | 263 | ||
261 | // Creating integer properties. | 264 | // Creating integer properties. |
262 | const LIB3270_INT_PROPERTY * int_props = lib3270_get_int_properties_list(); | 265 | const LIB3270_INT_PROPERTY * int_props = lib3270_get_int_properties_list(); |
263 | - v3270_properties.type.integer = klass->properties.count; | 266 | + klass->properties.type.integer = klass->properties.count; |
264 | 267 | ||
265 | for(ix = 0; int_props[ix].name; ix++) | 268 | for(ix = 0; int_props[ix].name; ix++) |
266 | { | 269 | { |
267 | - debug("Property %u=%s (Integer)",(unsigned int) v3270_properties.type.integer + ix, int_props[ix].name); | 270 | + debug("Property %u=%s (Integer)",(unsigned int) klass->properties.type.integer + ix, int_props[ix].name); |
268 | 271 | ||
269 | spec = g_param_spec_int( | 272 | spec = g_param_spec_int( |
270 | int_props[ix].name, | 273 | int_props[ix].name, |
@@ -287,12 +290,12 @@ | @@ -287,12 +290,12 @@ | ||
287 | 290 | ||
288 | // Creating string properties. | 291 | // Creating string properties. |
289 | const LIB3270_STRING_PROPERTY * str_props = lib3270_get_string_properties_list(); | 292 | const LIB3270_STRING_PROPERTY * str_props = lib3270_get_string_properties_list(); |
290 | - v3270_properties.type.str = klass->properties.count; | 293 | + klass->properties.type.str = klass->properties.count; |
291 | 294 | ||
292 | for(ix = 0; str_props[ix].name; ix++) | 295 | for(ix = 0; str_props[ix].name; ix++) |
293 | { | 296 | { |
294 | 297 | ||
295 | - debug("Property %u=%s (String)",(unsigned int) v3270_properties.type.str + ix, str_props[ix].name); | 298 | + debug("Property %u=%s (String)",(unsigned int) klass->properties.type.str + ix, str_props[ix].name); |
296 | 299 | ||
297 | spec = g_param_spec_string( | 300 | spec = g_param_spec_string( |
298 | str_props[ix].name, | 301 | str_props[ix].name, |
src/terminal/widget.c
@@ -64,7 +64,6 @@ | @@ -64,7 +64,6 @@ | ||
64 | /*--[ Globals ]--------------------------------------------------------------------------------------*/ | 64 | /*--[ Globals ]--------------------------------------------------------------------------------------*/ |
65 | 65 | ||
66 | guint v3270_widget_signal[V3270_SIGNAL_LAST] = { 0 }; | 66 | guint v3270_widget_signal[V3270_SIGNAL_LAST] = { 0 }; |
67 | - GdkCursor * v3270_cursor[LIB3270_POINTER_COUNT] = { 0 }; | ||
68 | 67 | ||
69 | /*--[ Prototipes ]-----------------------------------------------------------------------------------*/ | 68 | /*--[ Prototipes ]-----------------------------------------------------------------------------------*/ |
70 | 69 | ||
@@ -337,9 +336,9 @@ static void v3270_class_init(v3270Class *klass) | @@ -337,9 +336,9 @@ static void v3270_class_init(v3270Class *klass) | ||
337 | for(f=0;f<LIB3270_POINTER_COUNT;f++) | 336 | for(f=0;f<LIB3270_POINTER_COUNT;f++) |
338 | { | 337 | { |
339 | #ifdef WIN32 | 338 | #ifdef WIN32 |
340 | - v3270_cursor[f] = gdk_cursor_new_from_name(gdk_display_get_default(),cr[f]); | 339 | + klass->cursors[f] = gdk_cursor_new_from_name(gdk_display_get_default(),cr[f]); |
341 | #else | 340 | #else |
342 | - v3270_cursor[f] = gdk_cursor_new_for_display(gdk_display_get_default(),cr[f]); | 341 | + klass->cursors[f] = gdk_cursor_new_for_display(gdk_display_get_default(),cr[f]); |
343 | #endif | 342 | #endif |
344 | } | 343 | } |
345 | } | 344 | } |
@@ -1041,3 +1040,11 @@ LIB3270_EXPORT GtkWidget * v3270_get_default_widget(void) | @@ -1041,3 +1040,11 @@ LIB3270_EXPORT GtkWidget * v3270_get_default_widget(void) | ||
1041 | return GTK_WIDGET(widget); | 1040 | return GTK_WIDGET(widget); |
1042 | } | 1041 | } |
1043 | 1042 | ||
1043 | +void v3270_set_cursor(GtkWidget *widget, LIB3270_POINTER id) | ||
1044 | +{ | ||
1045 | + gdk_window_set_cursor( | ||
1046 | + gtk_widget_get_window(widget), | ||
1047 | + GTK_V3270_GET_CLASS(widget)->cursors[id % LIB3270_POINTER_COUNT] | ||
1048 | + ); | ||
1049 | +} | ||
1050 | + |
v3270.cbp
@@ -172,6 +172,9 @@ | @@ -172,6 +172,9 @@ | ||
172 | <Option compilerVar="CC" /> | 172 | <Option compilerVar="CC" /> |
173 | </Unit> | 173 | </Unit> |
174 | <Unit filename="src/terminal/marshal.h" /> | 174 | <Unit filename="src/terminal/marshal.h" /> |
175 | + <Unit filename="src/terminal/mouse.c"> | ||
176 | + <Option compilerVar="CC" /> | ||
177 | + </Unit> | ||
175 | <Unit filename="src/terminal/oia.c"> | 178 | <Unit filename="src/terminal/oia.c"> |
176 | <Option compilerVar="CC" /> | 179 | <Option compilerVar="CC" /> |
177 | </Unit> | 180 | </Unit> |