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 | 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 | 245 | static void v3270_class_init(v3270Class *klass) |
239 | 246 | { |
240 | 247 | GObjectClass * gobject_class = G_OBJECT_CLASS(klass); |
... | ... | @@ -246,6 +253,9 @@ static void v3270_class_init(v3270Class *klass) |
246 | 253 | |
247 | 254 | lib3270_set_log_handler(loghandler); |
248 | 255 | |
256 | + // V3270 methods | |
257 | + klass->keypress = signal_keypress; | |
258 | + | |
249 | 259 | // Object methods |
250 | 260 | gobject_class->finalize = finalize; |
251 | 261 | ... | ... |
src/trace/widget.c
... | ... | @@ -68,16 +68,18 @@ |
68 | 68 | |
69 | 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 | 84 | /// @brief lib3270's saved trace handler. |
83 | 85 | struct { |
... | ... | @@ -248,21 +250,23 @@ |
248 | 250 | |
249 | 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 | 343 | GtkTextIter itr; |
340 | 344 | gtk_text_buffer_get_end_iter(cfg->widget->text,&itr); |
341 | 345 | |
342 | - printf("%s\n",cfg->text); | |
343 | - | |
344 | 346 | if(g_utf8_validate(cfg->text,strlen(cfg->text),NULL)) |
345 | 347 | { |
346 | 348 | gtk_text_buffer_insert(cfg->widget->text,&itr,cfg->text,strlen(cfg->text)); |
... | ... | @@ -350,12 +352,12 @@ |
350 | 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 | 362 | return FALSE; |
361 | 363 | ... | ... |