Commit b2c6fb58abfdecf01c66509e5102a2bc37758244
1 parent
431eace4
Exists in
master
and in
1 other branch
Fixing auto-scroll on trace window.
Showing
2 changed files
with
37 additions
and
25 deletions
Show diff stats
src/terminal/widget.c
@@ -235,6 +235,13 @@ static void finalize(GObject *object) | @@ -235,6 +235,13 @@ static void finalize(GObject *object) | ||
235 | G_OBJECT_CLASS(v3270_parent_class)->finalize(object); | 235 | G_OBJECT_CLASS(v3270_parent_class)->finalize(object); |
236 | } | 236 | } |
237 | 237 | ||
238 | +static gboolean signal_keypress(GtkWidget *widget,guint keyval, GdkModifierType state) | ||
239 | +{ | ||
240 | +// debug("v3270::%s",__FUNCTION__); | ||
241 | + | ||
242 | + return FALSE; | ||
243 | +} | ||
244 | + | ||
238 | static void v3270_class_init(v3270Class *klass) | 245 | static void v3270_class_init(v3270Class *klass) |
239 | { | 246 | { |
240 | GObjectClass * gobject_class = G_OBJECT_CLASS(klass); | 247 | GObjectClass * gobject_class = G_OBJECT_CLASS(klass); |
@@ -246,6 +253,9 @@ static void v3270_class_init(v3270Class *klass) | @@ -246,6 +253,9 @@ static void v3270_class_init(v3270Class *klass) | ||
246 | 253 | ||
247 | lib3270_set_log_handler(loghandler); | 254 | lib3270_set_log_handler(loghandler); |
248 | 255 | ||
256 | + // V3270 methods | ||
257 | + klass->keypress = signal_keypress; | ||
258 | + | ||
249 | // Object methods | 259 | // Object methods |
250 | gobject_class->finalize = finalize; | 260 | gobject_class->finalize = finalize; |
251 | 261 |
src/trace/widget.c
@@ -68,16 +68,18 @@ | @@ -68,16 +68,18 @@ | ||
68 | 68 | ||
69 | struct _V3270Trace | 69 | struct _V3270Trace |
70 | { | 70 | { |
71 | - GtkGrid parent; | ||
72 | - H3270 * hSession; ///< @brief TN3270 Session. | ||
73 | - GtkWidget * terminal; ///< @brief V3270 Widget. | 71 | + GtkGrid parent; |
72 | + H3270 * hSession; ///< @brief TN3270 Session. | ||
73 | + GtkWidget * terminal; ///< @brief V3270 Widget. | ||
74 | + GtkScrolledWindow * scroll; | ||
74 | 75 | ||
75 | - GtkTextBuffer * text; ///< @brief Trace window contents. | ||
76 | - GtkEntry * entry; ///< @brief Command line entry. | 76 | + GtkTextView * view; ///< @brief Text view; |
77 | + GtkTextBuffer * text; ///< @brief Trace window contents. | ||
78 | + GtkEntry * entry; ///< @brief Command line entry. | ||
77 | 79 | ||
78 | - gchar * filename; ///< @brief Selected file name. | 80 | + gchar * filename; ///< @brief Selected file name. |
79 | 81 | ||
80 | - guint log_handler; ///< @brief GTK Log Handler. | 82 | + guint log_handler; ///< @brief GTK Log Handler. |
81 | 83 | ||
82 | /// @brief lib3270's saved trace handler. | 84 | /// @brief lib3270's saved trace handler. |
83 | struct { | 85 | struct { |
@@ -248,21 +250,23 @@ | @@ -248,21 +250,23 @@ | ||
248 | 250 | ||
249 | // Create text view | 251 | // Create text view |
250 | { | 252 | { |
251 | - GtkWidget *scrolled = gtk_scrolled_window_new(NULL,NULL); | ||
252 | - gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolled),GTK_POLICY_AUTOMATIC,GTK_POLICY_AUTOMATIC); | ||
253 | - gtk_widget_set_vexpand(scrolled,TRUE); | ||
254 | - gtk_widget_set_hexpand(scrolled,TRUE); | ||
255 | - gtk_grid_attach(GTK_GRID(widget),scrolled,0,0,10,1); | 253 | + widget->scroll = GTK_SCROLLED_WINDOW(gtk_scrolled_window_new(NULL,NULL)); |
254 | + gtk_scrolled_window_set_policy(widget->scroll,GTK_POLICY_AUTOMATIC,GTK_POLICY_AUTOMATIC); | ||
255 | + gtk_widget_set_vexpand(GTK_WIDGET(widget->scroll),TRUE); | ||
256 | + gtk_widget_set_hexpand(GTK_WIDGET(widget->scroll),TRUE); | ||
257 | + gtk_grid_attach(GTK_GRID(widget),GTK_WIDGET(widget->scroll),0,0,10,1); | ||
256 | 258 | ||
257 | - GtkWidget *view = gtk_text_view_new(); | ||
258 | - gtk_text_view_set_monospace(GTK_TEXT_VIEW(view),TRUE); | 259 | + widget->view = GTK_TEXT_VIEW(gtk_text_view_new()); |
259 | 260 | ||
260 | - widget->text = gtk_text_view_get_buffer(GTK_TEXT_VIEW(view)); | ||
261 | - gtk_text_view_set_editable(GTK_TEXT_VIEW(view), TRUE); | 261 | +#if GTK_CHECK_VERSION(3,16,0) |
262 | + gtk_text_view_set_monospace(widget->view,TRUE); | ||
263 | +#endif // GTK_CHECK_VERSION | ||
262 | 264 | ||
263 | - gtk_container_add(GTK_CONTAINER(scrolled),view); | 265 | + widget->text = gtk_text_view_get_buffer(widget->view); |
266 | + gtk_text_view_set_editable(widget->view, TRUE); | ||
264 | 267 | ||
265 | - gtk_widget_set_can_default(view,FALSE); | 268 | + gtk_container_add(GTK_CONTAINER(widget->scroll),GTK_WIDGET(widget->view)); |
269 | + gtk_widget_set_can_default(GTK_WIDGET(widget->view),FALSE); | ||
266 | 270 | ||
267 | } | 271 | } |
268 | 272 | ||
@@ -339,8 +343,6 @@ | @@ -339,8 +343,6 @@ | ||
339 | GtkTextIter itr; | 343 | GtkTextIter itr; |
340 | gtk_text_buffer_get_end_iter(cfg->widget->text,&itr); | 344 | gtk_text_buffer_get_end_iter(cfg->widget->text,&itr); |
341 | 345 | ||
342 | - printf("%s\n",cfg->text); | ||
343 | - | ||
344 | if(g_utf8_validate(cfg->text,strlen(cfg->text),NULL)) | 346 | if(g_utf8_validate(cfg->text,strlen(cfg->text),NULL)) |
345 | { | 347 | { |
346 | gtk_text_buffer_insert(cfg->widget->text,&itr,cfg->text,strlen(cfg->text)); | 348 | gtk_text_buffer_insert(cfg->widget->text,&itr,cfg->text,strlen(cfg->text)); |
@@ -350,12 +352,12 @@ | @@ -350,12 +352,12 @@ | ||
350 | gtk_text_buffer_insert(cfg->widget->text,&itr,"** Invalid UTF8 String **",-1); | 352 | gtk_text_buffer_insert(cfg->widget->text,&itr,"** Invalid UTF8 String **",-1); |
351 | } | 353 | } |
352 | 354 | ||
353 | - // gtk_text_buffer_get_end_iter(hwnd->text,&itr); | ||
354 | - // gtk_text_view_scroll_to_iter (GTK_TEXT_VIEW(hwnd->view), &itr, 0.0, FALSE, 0.0, 0.0); | 355 | + // gtk_text_buffer_get_end_iter(cfg->widget->text,&itr); |
356 | + // gtk_text_view_scroll_to_iter(GTK_TEXT_VIEW(cfg->widget->view), &itr, 0.0, FALSE, 0.0, 0.0); | ||
355 | 357 | ||
356 | - //GtkAdjustment *vadj = gtk_scrolled_window_get_vadjustment(GTK_SCROLLED_WINDOW(hwnd->scroll)); | ||
357 | - //gtk_adjustment_set_value(vadj,gtk_adjustment_get_upper(vadj)); | ||
358 | - //gtk_scrolled_window_set_vadjustment(GTK_SCROLLED_WINDOW(hwnd->scroll), vadj); | 358 | + GtkAdjustment *vadj = gtk_scrolled_window_get_vadjustment(cfg->widget->scroll); |
359 | + gtk_adjustment_set_value(vadj,gtk_adjustment_get_upper(vadj)); | ||
360 | + gtk_scrolled_window_set_vadjustment(cfg->widget->scroll, vadj); | ||
359 | 361 | ||
360 | return FALSE; | 362 | return FALSE; |
361 | 363 |