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 | ... | ... |