Use a standard GtkScrolledWindow with xtext

Used in maingui, fkeys, text events, rawlog

This also implements the set_scroll_adjustments signal in xtext
This commit is contained in:
TingPing
2014-02-05 18:08:40 -05:00
parent 8d77fd6a57
commit 5f7321280e
8 changed files with 96 additions and 82 deletions

View File

@@ -54,7 +54,6 @@
#define GUI_SPACING (3)
#define GUI_BORDER (0)
#define SCROLLBAR_SPACING (2)
enum
{
@@ -2309,7 +2308,7 @@ mg_update_xtext (GtkWidget *wid)
static void
mg_create_textarea (session *sess, GtkWidget *box)
{
GtkWidget *inbox, *vbox, *frame;
GtkWidget *scrolledwindow;
GtkXText *xtext;
session_gui *gui = sess->gui;
static const GtkTargetEntry dnd_targets[] =
@@ -2322,15 +2321,12 @@ mg_create_textarea (session *sess, GtkWidget *box)
{"HEXCHAT_USERLIST", GTK_TARGET_SAME_APP, 75 }
};
vbox = gtk_vbox_new (FALSE, 0);
gtk_container_add (GTK_CONTAINER (box), vbox);
inbox = gtk_hbox_new (FALSE, SCROLLBAR_SPACING);
gtk_container_add (GTK_CONTAINER (vbox), inbox);
frame = gtk_frame_new (NULL);
gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_IN);
gtk_container_add (GTK_CONTAINER (inbox), frame);
scrolledwindow = gtk_scrolled_window_new (NULL, NULL);
gui->vscrollbar = gtk_scrolled_window_get_vscrollbar (GTK_SCROLLED_WINDOW (scrolledwindow)); /* For fkeys */
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW(scrolledwindow), GTK_POLICY_NEVER, GTK_POLICY_ALWAYS);
gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolledwindow), GTK_SHADOW_IN);
gtk_container_add (GTK_CONTAINER (box), scrolledwindow);
gui->xtext = gtk_xtext_new (colors, TRUE);
xtext = GTK_XTEXT (gui->xtext);
@@ -2338,14 +2334,12 @@ mg_create_textarea (session *sess, GtkWidget *box)
gtk_xtext_set_thin_separator (xtext, prefs.hex_text_thin_sep);
gtk_xtext_set_urlcheck_function (xtext, mg_word_check);
gtk_xtext_set_max_lines (xtext, prefs.hex_text_max_lines);
gtk_container_add (GTK_CONTAINER (frame), GTK_WIDGET (xtext));
gtk_container_add (GTK_CONTAINER (scrolledwindow), GTK_WIDGET (xtext));
mg_update_xtext (GTK_WIDGET (xtext));
g_signal_connect (G_OBJECT (xtext), "word_click",
G_CALLBACK (mg_word_clicked), NULL);
gui->vscrollbar = gtk_vscrollbar_new (GTK_XTEXT (xtext)->adj);
gtk_box_pack_start (GTK_BOX (inbox), gui->vscrollbar, FALSE, TRUE, 0);
#ifndef WIN32 /* needs more work */
gtk_drag_dest_set (gui->vscrollbar, 5, dnd_dest_targets, 2,
GDK_ACTION_MOVE | GDK_ACTION_COPY | GDK_ACTION_LINK);