diff -ru xchat-2.0.1/src/common/cfgfiles.c xchat-2.0.1-dragtabs/src/common/cfgfiles.c
--- xchat-2.0.1/src/common/cfgfiles.c	2003-02-26 21:37:29.000000000 -0600
+++ xchat-2.0.1-dragtabs/src/common/cfgfiles.c	2003-04-18 01:08:57.000000000 -0500
@@ -465,6 +465,7 @@
 	{"tab_chans", P_OFFINT (tabchannels), TYPE_BOOL},
 /*	{"tab_limited_hilight", P_OFFINT (limitedtabhighlight), TYPE_BOOL},*/
 	{"tab_new_to_front", P_OFFINT (newtabstofront), TYPE_BOOL},
+	{"tab_allow_drag", P_OFFINT (dragtabs), TYPE_BOOL},
 	{"tab_notices", P_OFFINT (notices_tabs), TYPE_BOOL},
 	{"tab_position", P_OFFINT (tabs_position), TYPE_INT},
 	{"tab_trunc", P_OFFINT (truncchans), TYPE_INT},
diff -ru xchat-2.0.1/src/common/xchat.h xchat-2.0.1-dragtabs/src/common/xchat.h
--- xchat-2.0.1/src/common/xchat.h	2003-02-26 21:37:29.000000000 -0600
+++ xchat-2.0.1-dragtabs/src/common/xchat.h	2003-04-18 01:05:24.000000000 -0500
@@ -214,6 +214,7 @@
 	unsigned int logging;
 	unsigned int timestamp_logs;
 	unsigned int newtabstofront;
+	unsigned int dragtabs;
 	unsigned int dccwithnick;
 	unsigned int hilitenotify;
 	unsigned int hidever;
diff -ru xchat-2.0.1/src/fe-gtk/maingui.c xchat-2.0.1-dragtabs/src/fe-gtk/maingui.c
--- xchat-2.0.1/src/fe-gtk/maingui.c	2003-03-02 21:02:32.000000000 -0600
+++ xchat-2.0.1-dragtabs/src/fe-gtk/maingui.c	2003-04-18 01:06:20.000000000 -0500
@@ -988,7 +988,7 @@
 		name = sess->channel;
 
 	sess->res->tab = tab_group_add (sess->gui->tabs_box, name, sess->server,
-											  sess, mg_tab_press_cb, mg_link_cb,
+											  sess, mg_tab_press_cb, prefs.dragtabs ? mg_link_cb : NULL,
 											  prefs.truncchans);
 	g_object_set_data (G_OBJECT (sess->res->tab), "sess", sess);
 
@@ -2259,7 +2259,7 @@
 	gtk_widget_show (box);
 
 	but = tab_group_add (mg_gui->tabs_box, name, family, NULL,
-								mg_tab_press_cb, mg_link_cb, prefs.truncchans);
+								mg_tab_press_cb, prefs.dragtabs ? mg_link_cb : NULL, prefs.truncchans);
 	g_object_set_data (G_OBJECT (but), "title", strdup (title));
 	g_object_set_data (G_OBJECT (but), "box", box);
 	g_object_set_data (G_OBJECT (but), "sess", NULL);
diff -ru xchat-2.0.1/src/fe-gtk/setup.c xchat-2.0.1-dragtabs/src/fe-gtk/setup.c
--- xchat-2.0.1/src/fe-gtk/setup.c	2003-02-27 21:07:02.000000000 -0600
+++ xchat-2.0.1-dragtabs/src/fe-gtk/setup.c	2003-04-18 01:08:14.000000000 -0500
@@ -161,6 +161,7 @@
 	{ST_TOGGLE, N_("Open tab for server messages"), P_OFFINT(use_server_tab), 0, 0, 0},
 	{ST_TOGGLE, N_("Open tab for server notices"), P_OFFINT(notices_tabs), 0, 0, 0},
 	{ST_TOGGLE, N_("Pop new tabs to front"), P_OFFINT(newtabstofront), 0, 0, 0},
+	{ST_TOGGLE, N_("Allow tab drag&drop"), P_OFFINT(dragtabs), 0, 0, 0},
 	{ST_NUMBER,	N_("Shorten tabs to:"), P_OFFINT(truncchans), 0, (char **)N_("letters."), 99},
 	{ST_END, 0, 0, 0, 0, 0}
 };
diff -ru xchat-2.0.1/src/fe-gtk/tabs.c xchat-2.0.1-dragtabs/src/fe-gtk/tabs.c
--- xchat-2.0.1/src/fe-gtk/tabs.c	2003-02-27 22:44:23.000000000 -0600
+++ xchat-2.0.1-dragtabs/src/fe-gtk/tabs.c	2003-04-18 01:02:44.000000000 -0500
@@ -698,11 +698,13 @@
 	tab_add_real (group, but, family);
 
 	/* DND for detaching tabs */
-	gtk_drag_source_set (but, GDK_BUTTON1_MASK, targets, 1, GDK_ACTION_MOVE);
-	gtk_drag_dest_set (but, GTK_DEST_DEFAULT_ALL, targets, 1, GDK_ACTION_MOVE);
-	g_signal_connect (G_OBJECT (but), "drag-end",
-							G_CALLBACK (tab_drag_end), delink_cb);
-
+	if(delink_cb)
+	{
+		gtk_drag_source_set (but, GDK_BUTTON1_MASK, targets, 1, GDK_ACTION_MOVE);
+		gtk_drag_dest_set (but, GTK_DEST_DEFAULT_ALL, targets, 1, GDK_ACTION_MOVE);
+		g_signal_connect (G_OBJECT (but), "drag-end",
+				G_CALLBACK (tab_drag_end), delink_cb);
+	}
 	return but;
 }
 
