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; }