Commit b2c6fb58abfdecf01c66509e5102a2bc37758244

Authored by Perry Werneck
1 parent 431eace4
Exists in master and in 1 other branch develop

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