diff -urN xchat-systray-integration-2.4.5/src/data_manager.c xchat-systray-integration/src/data_manager.c
--- xchat-systray-integration-2.4.5/src/data_manager.c	2004-04-30 14:38:10.000000000 +0200
+++ xchat-systray-integration/src/data_manager.c	2006-09-01 01:49:19.000000000 +0200
@@ -47,6 +47,10 @@
 		if (notify_list== TRUE) fprintf(systray,"1\n");
 		else fprintf(systray,"0\n");
 		fprintf(systray,"%d\n",flash_interval);
+		if (swap_buttons== TRUE) fprintf(systray,"1\n");
+		else fprintf(systray,"0\n");
+		if (hide_systray== TRUE) fprintf(systray,"1\n");
+		else fprintf(systray,"0\n");
 
 		if (control) xchat_printf(ph,"Successfully saved settings to file.\n");
 		fclose(systray);
@@ -60,7 +64,8 @@
 	FILE *systray;
 	char path[150];
 	int len,check;
-	sprintf(path,"%s/systray.conf", xchat_get_info(ph, "xchatdir"));
+	gboolean retval;
+    sprintf(path,"%s/systray.conf", xchat_get_info(ph, "xchatdir"));
 	systray = fopen(path,"r");
 	if (systray != NULL) {
 		//cut off the "\n" value
@@ -134,7 +139,13 @@
 		fscanf(systray,"%d",&check);
 		flash_interval=check;
 
-		if (control) xchat_printf(ph,"Successfully loaded settings from file.\n");
+		if (fscanf(systray,"%d",&retval) == 1)
+            swap_buttons = retval ? TRUE : FALSE;
+
+		if (fscanf(systray,"%d",&retval) == 1)
+            hide_systray = retval ? TRUE : FALSE;
+
+        if (control) xchat_printf(ph,"Successfully loaded settings from file.\n");
 		fclose(systray);
 	}
 	else if (onstart_warning) {
@@ -191,9 +202,11 @@
 	if (KDE) xchat_printf(ph,"Your Window Manager has KDE like style");
 	else xchat_printf(ph,"Your Window Manager has Gnome like style");
 #endif
+    if (swap_buttons) xchat_printf(ph,"Swap the left and middle mouse buttons: on");
+    else xchat_printf(ph,"Swap the left and middle mouse buttons: off");
+    if (hide_systray) xchat_printf(ph,"Hide XChat to the SysTray after startup: on");
+    else xchat_printf(ph,"Hide XChat to the SysTray after startup: off");
 	xchat_print(ph, "\nIf you want to change settings, please select Settings again.");
 	write2file(TRUE);
 	get_info(FALSE,FALSE);
 }
-
-
diff -urN xchat-systray-integration-2.4.5/src/data_manager.h xchat-systray-integration/src/data_manager.h
--- xchat-systray-integration-2.4.5/src/data_manager.h	2004-04-30 14:38:10.000000000 +0200
+++ xchat-systray-integration/src/data_manager.h	2006-09-01 01:40:16.000000000 +0200
@@ -24,6 +24,8 @@
 	gboolean KDE;
 	gboolean window_manager_modified;
 #endif
+gboolean swap_buttons;
+gboolean hide_systray;
 //settings items array
 char ppath[150];
 char epath[150];
@@ -37,5 +39,3 @@
 void save();
 
 #endif
-
-
diff -urN xchat-systray-integration-2.4.5/src/menu.c xchat-systray-integration/src/menu.c
--- xchat-systray-integration-2.4.5/src/menu.c	2004-04-30 14:38:10.000000000 +0200
+++ xchat-systray-integration/src/menu.c	2006-09-01 01:40:16.000000000 +0200
@@ -66,15 +66,17 @@
 //catch mouse clicks on icon
 gboolean tray_clicked (GtkWidget *event_box, GdkEventButton *event, gpointer data)
 {
+    int left_button = swap_buttons ? 2 : 1;
+    int middle_button = swap_buttons ? 1 : 2;
 
 	//mouse wheel or middle click + left double click
-	if ( (event->button == 1 && event->type == GDK_2BUTTON_PRESS) ||event->button == 2) {
-        	if (status == 0) tray_restore();
+	if ( (event->button == left_button && event->type == GDK_2BUTTON_PRESS) ||event->button == middle_button) {
+	if (status == 0) tray_restore();
 	        else tray_minimize();
 	}
 
 	//single click gives focus only
-	if (event->button == 1) select_event_tab(FALSE);
+	if (event->button == left_button) select_event_tab(FALSE);
 
 	//mouse right click
 	if (event->button == 3) {
@@ -85,11 +87,11 @@
 }
 #endif
 
-GdkPixbuf* loadmenuicons(char* filename) 
+GdkPixbuf* loadmenuicons(char* filename)
 {
 	GdkPixbuf* tempbuffer=NULL;
 	char temp[200];
-	if (filename) 
+	if (filename)
 	{
 		if (imagepath) sprintf(temp,"%s/Menu/%s", imagepath ,filename);
 		else sprintf(temp,"%s/Menu/%s", xchat_get_info(ph, "xchatdir"),filename);
@@ -217,7 +219,7 @@
 	//minimize item
 	item = gtk_image_menu_item_new_with_label ("Minimize");
 	menuImage = gtk_image_new_from_pixbuf (buffer6);
- 	gtk_container_add (GTK_CONTAINER (status_menu), item);
+	gtk_container_add (GTK_CONTAINER (status_menu), item);
 	gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (item), menuImage);
 	g_signal_connect (G_OBJECT (item), "activate",G_CALLBACK (tray_minimize),NULL);
 
@@ -259,4 +261,3 @@
 #endif
 	return TRUE;
 }
-
diff -urN xchat-systray-integration-2.4.5/src/settings.c xchat-systray-integration/src/settings.c
--- xchat-systray-integration-2.4.5/src/settings.c	2004-04-30 14:38:10.000000000 +0200
+++ xchat-systray-integration/src/settings.c	2006-09-01 01:48:38.000000000 +0200
@@ -59,7 +59,7 @@
 
 	app2set=&imagepath_text;
 	app_select();
-	
+
 }
 // SETTINGS GUI
 
@@ -183,6 +183,22 @@
 }
 #endif
 
+void swap_buttons_yes() {
+    swap_buttons=TRUE;
+}
+
+void swap_buttons_not() {
+    swap_buttons=FALSE;
+}
+
+void hide_systray_yes() {
+    hide_systray=TRUE;
+}
+
+void hide_systray_not() {
+    hide_systray=FALSE;
+}
+
 //events notification selection
  void set_noti_events(){
 
@@ -221,27 +237,27 @@
 
 	label = gtk_label_new ("Notification Events Selection. Select your favorite events.");
 	gtk_table_attach_defaults(GTK_TABLE(table),label,0,2,0,1);
-  	gtk_widget_show (label);
+	gtk_widget_show (label);
 
 	//Hilighted Msg
 	gtk_table_attach_defaults(GTK_TABLE(table),box1,1,2,2,3);
 
 	label = gtk_label_new ("HighLighted Message");
 	gtk_table_attach_defaults(GTK_TABLE(table),label,0,1,2,3);
-    	gtk_widget_show (label);
+	gtk_widget_show (label);
 
 	checkbut = gtk_radio_button_new_with_label (NULL, "yes");
 	g_signal_connect (G_OBJECT (checkbut), "toggled", G_CALLBACK (high_use_yes),G_OBJECT (checkbut));
 	gtk_box_pack_start (GTK_BOX (box1), checkbut, FALSE, FALSE, 15);
- 	gtk_widget_show (checkbut);
+	gtk_widget_show (checkbut);
 	if(highlight) gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbut), TRUE);
 	else gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbut), FALSE);
 
- 	group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (checkbut));
-  	checkbut1 = gtk_radio_button_new_with_label (group, "no");
+	group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (checkbut));
+	checkbut1 = gtk_radio_button_new_with_label (group, "no");
 	g_signal_connect (G_OBJECT (checkbut1), "toggled", G_CALLBACK (high_use_not),G_OBJECT (checkbut1));
-  	gtk_box_pack_start (GTK_BOX (box1), checkbut1, FALSE, FALSE, 15);
-  	gtk_widget_show (checkbut1);
+	gtk_box_pack_start (GTK_BOX (box1), checkbut1, FALSE, FALSE, 15);
+	gtk_widget_show (checkbut1);
 	gtk_widget_show (box1);
 	if(!highlight) gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbut1), TRUE);
 	else gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbut1), FALSE);
@@ -251,20 +267,20 @@
 
 	label = gtk_label_new ("Query (private message)");
 	gtk_table_attach_defaults(GTK_TABLE(table),label,0,1,3,4);
-    	gtk_widget_show (label);
+	gtk_widget_show (label);
 
 	checkbut = gtk_radio_button_new_with_label (NULL, "yes");
 	g_signal_connect (G_OBJECT (checkbut), "toggled", G_CALLBACK (query_use_yes),G_OBJECT (checkbut));
-   	gtk_box_pack_start (GTK_BOX (box2), checkbut, FALSE, FALSE, 15);
- 	gtk_widget_show (checkbut);
+	gtk_box_pack_start (GTK_BOX (box2), checkbut, FALSE, FALSE, 15);
+	gtk_widget_show (checkbut);
 	if (query) gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbut), TRUE);
 	else gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbut), FALSE);
 
- 	group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (checkbut));
-  	checkbut1 = gtk_radio_button_new_with_label (group, "no");
+	group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (checkbut));
+	checkbut1 = gtk_radio_button_new_with_label (group, "no");
 	g_signal_connect (G_OBJECT (checkbut1), "toggled", G_CALLBACK (query_use_not),G_OBJECT (checkbut1));
 	gtk_box_pack_start (GTK_BOX (box2), checkbut1, FALSE, FALSE, 15);
-  	gtk_widget_show (checkbut1);
+	gtk_widget_show (checkbut1);
 	gtk_widget_show(box2);
 	if(!query) gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbut1), TRUE);
 	else gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbut1), FALSE);
@@ -274,20 +290,20 @@
 
 	label = gtk_label_new ("Disconnection");
 	gtk_table_attach_defaults(GTK_TABLE(table),label,0,1,4,5);
-    	gtk_widget_show (label);
+	gtk_widget_show (label);
 
 	checkbut = gtk_radio_button_new_with_label (NULL, "yes");
-   	g_signal_connect (G_OBJECT (checkbut), "toggled", G_CALLBACK (disc_use_yes),G_OBJECT (checkbut));
-   	gtk_box_pack_start (GTK_BOX (box3), checkbut, FALSE, FALSE, 15);
- 	gtk_widget_show (checkbut);
+	g_signal_connect (G_OBJECT (checkbut), "toggled", G_CALLBACK (disc_use_yes),G_OBJECT (checkbut));
+	gtk_box_pack_start (GTK_BOX (box3), checkbut, FALSE, FALSE, 15);
+	gtk_widget_show (checkbut);
 	if(disconnection) gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbut), TRUE);
 	else gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbut), FALSE);
 
- 	group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (checkbut));
-  	checkbut1 = gtk_radio_button_new_with_label (group, "no");
+	group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (checkbut));
+	checkbut1 = gtk_radio_button_new_with_label (group, "no");
 	g_signal_connect (G_OBJECT (checkbut1), "toggled", G_CALLBACK (disc_use_not),G_OBJECT (checkbut1));
-  	gtk_box_pack_start (GTK_BOX (box3), checkbut1, FALSE, FALSE, 15);
-  	gtk_widget_show (checkbut1);
+	gtk_box_pack_start (GTK_BOX (box3), checkbut1, FALSE, FALSE, 15);
+	gtk_widget_show (checkbut1);
 	gtk_widget_show(box3);
 	if(!disconnection) gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbut1), TRUE);
 	else gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbut1), FALSE);
@@ -297,20 +313,20 @@
 
 	label = gtk_label_new ("Kill");
 	gtk_table_attach_defaults(GTK_TABLE(table),label,0,1,5,6);
-    	gtk_widget_show (label);
+	gtk_widget_show (label);
 
 	checkbut= gtk_radio_button_new_with_label (NULL, "yes");
 	g_signal_connect (G_OBJECT (checkbut), "toggled", G_CALLBACK (kill_use_yes),G_OBJECT (checkbut));
-   	gtk_box_pack_start (GTK_BOX (box4), checkbut, FALSE, FALSE, 15);
- 	gtk_widget_show (checkbut);
+	gtk_box_pack_start (GTK_BOX (box4), checkbut, FALSE, FALSE, 15);
+	gtk_widget_show (checkbut);
 	if (killevent==TRUE) gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbut), TRUE);
 	else gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbut), FALSE);
 
- 	group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (checkbut));
-  	checkbut1 = gtk_radio_button_new_with_label (group, "no");
+	group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (checkbut));
+	checkbut1 = gtk_radio_button_new_with_label (group, "no");
 	g_signal_connect (G_OBJECT (checkbut1), "toggled", G_CALLBACK (kill_use_not),G_OBJECT (checkbut1));
-  	gtk_box_pack_start (GTK_BOX (box4), checkbut1, FALSE, FALSE, 15);
-  	gtk_widget_show (checkbut1);
+	gtk_box_pack_start (GTK_BOX (box4), checkbut1, FALSE, FALSE, 15);
+	gtk_widget_show (checkbut1);
 	gtk_widget_show(box4);
 	if(killevent==FALSE) gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbut1), TRUE);
 	else gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbut1), FALSE);
@@ -318,22 +334,22 @@
 	//Kick & ban
 	label = gtk_label_new ("Kick (& Ban)");
 	gtk_table_attach_defaults(GTK_TABLE(table),label,0,1,6,7);
-    	gtk_widget_show (label);
+	gtk_widget_show (label);
 
 	gtk_table_attach_defaults(GTK_TABLE(table),box5,1,3,6,7);
 
 	checkbut = gtk_radio_button_new_with_label (NULL, "yes");
 	g_signal_connect (G_OBJECT (checkbut), "toggled", G_CALLBACK (kick_use_yes),G_OBJECT (checkbut));
-   	gtk_box_pack_start (GTK_BOX (box5), checkbut, FALSE, FALSE, 15);
- 	gtk_widget_show (checkbut);
+	gtk_box_pack_start (GTK_BOX (box5), checkbut, FALSE, FALSE, 15);
+	gtk_widget_show (checkbut);
 	if (kick) gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbut), TRUE);
 	else gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbut), FALSE);
 
- 	group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (checkbut));
-  	checkbut1 = gtk_radio_button_new_with_label (group, "no");
+	group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (checkbut));
+	checkbut1 = gtk_radio_button_new_with_label (group, "no");
 	g_signal_connect (G_OBJECT (checkbut1), "toggled", G_CALLBACK (kick_use_not),G_OBJECT (checkbut1));
-  	gtk_box_pack_start (GTK_BOX (box5), checkbut1, FALSE, FALSE, 15);
-  	gtk_widget_show (checkbut1);
+	gtk_box_pack_start (GTK_BOX (box5), checkbut1, FALSE, FALSE, 15);
+	gtk_widget_show (checkbut1);
 	gtk_widget_show(box5);
 	if(!kick) gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbut1), TRUE);
 	else gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbut1), FALSE);
@@ -343,22 +359,22 @@
 
 	label = gtk_label_new ("DCC Chat");
 	gtk_table_attach_defaults(GTK_TABLE(table),label,0,1,7,8);
-    	gtk_widget_show (label);
+	gtk_widget_show (label);
 
 	checkbut = gtk_radio_button_new_with_label (NULL, "yes");
 	g_signal_connect (G_OBJECT (checkbut), "toggled", G_CALLBACK (dcc_chat_use_yes),G_OBJECT (checkbut));
-   	gtk_box_pack_start (GTK_BOX (box6), checkbut, FALSE, FALSE, 15);
- 	gtk_widget_show (checkbut);
+	gtk_box_pack_start (GTK_BOX (box6), checkbut, FALSE, FALSE, 15);
+	gtk_widget_show (checkbut);
 	if (dcc_chat) gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbut), TRUE);
 	else gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbut), FALSE);
 
- 	group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (checkbut));
-  	checkbut1 = gtk_radio_button_new_with_label (group, "no");
+	group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (checkbut));
+	checkbut1 = gtk_radio_button_new_with_label (group, "no");
 	if(!dcc_chat) gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbut1), TRUE);
 	else gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbut1), FALSE);
- 	g_signal_connect (G_OBJECT (checkbut1), "toggled", G_CALLBACK (dcc_chat_use_not),G_OBJECT (checkbut1));
-  	gtk_box_pack_start (GTK_BOX (box6), checkbut1, FALSE, FALSE, 15);
-  	gtk_widget_show (checkbut1);
+	g_signal_connect (G_OBJECT (checkbut1), "toggled", G_CALLBACK (dcc_chat_use_not),G_OBJECT (checkbut1));
+	gtk_box_pack_start (GTK_BOX (box6), checkbut1, FALSE, FALSE, 15);
+	gtk_widget_show (checkbut1);
 	gtk_widget_show(box6);
 
 	//DCC Send
@@ -366,20 +382,20 @@
 
 	label = gtk_label_new ("DCC send");
 	gtk_table_attach_defaults(GTK_TABLE(table),label,0,1,8,9);
-    	gtk_widget_show (label);
+	gtk_widget_show (label);
 
 	checkbut = gtk_radio_button_new_with_label (NULL, "yes");
 	g_signal_connect (G_OBJECT (checkbut), "toggled", G_CALLBACK (dcc_send_use_yes),G_OBJECT (checkbut));
-   	gtk_box_pack_start (GTK_BOX (box7), checkbut, FALSE, FALSE, 15);
- 	gtk_widget_show (checkbut);
+	gtk_box_pack_start (GTK_BOX (box7), checkbut, FALSE, FALSE, 15);
+	gtk_widget_show (checkbut);
 	if (dcc_send) gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbut), TRUE);
 	else gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbut), FALSE);
 
- 	group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (checkbut));
-  	checkbut1 = gtk_radio_button_new_with_label (group, "no");
+	group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (checkbut));
+	checkbut1 = gtk_radio_button_new_with_label (group, "no");
 	g_signal_connect (G_OBJECT (checkbut1), "toggled", G_CALLBACK (dcc_send_use_not),G_OBJECT (checkbut1));
-  	gtk_box_pack_start (GTK_BOX (box7), checkbut1, FALSE, FALSE, 15);
-  	gtk_widget_show (checkbut1);
+	gtk_box_pack_start (GTK_BOX (box7), checkbut1, FALSE, FALSE, 15);
+	gtk_widget_show (checkbut1);
 	gtk_widget_show(box7);
 	if(!dcc_send) gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbut1), TRUE);
 	else gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbut1), FALSE);
@@ -389,20 +405,20 @@
 
 	label = gtk_label_new ("Invite");
 	gtk_table_attach_defaults(GTK_TABLE(table),label,0,1,9,10);
-    	gtk_widget_show (label);
+	gtk_widget_show (label);
 
 	checkbut = gtk_radio_button_new_with_label (NULL, "yes");
-   	g_signal_connect (G_OBJECT (checkbut), "toggled", G_CALLBACK (invite_use_yes),G_OBJECT (checkbut));
-   	gtk_box_pack_start (GTK_BOX (box8), checkbut, FALSE, FALSE, 15);
- 	gtk_widget_show (checkbut);
+	g_signal_connect (G_OBJECT (checkbut), "toggled", G_CALLBACK (invite_use_yes),G_OBJECT (checkbut));
+	gtk_box_pack_start (GTK_BOX (box8), checkbut, FALSE, FALSE, 15);
+	gtk_widget_show (checkbut);
 	if (invite) gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbut), TRUE);
 	else gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbut), FALSE);
 
- 	group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (checkbut));
-  	checkbut = gtk_radio_button_new_with_label (group, "no");
+	group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (checkbut));
+	checkbut = gtk_radio_button_new_with_label (group, "no");
 	g_signal_connect (G_OBJECT (checkbut), "toggled", G_CALLBACK (invite_use_not),G_OBJECT (checkbut));
-  	gtk_box_pack_start (GTK_BOX (box8), checkbut, FALSE, FALSE, 15);
-  	gtk_widget_show (checkbut);
+	gtk_box_pack_start (GTK_BOX (box8), checkbut, FALSE, FALSE, 15);
+	gtk_widget_show (checkbut);
 	gtk_widget_show(box8);
 	if(!invite) gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbut), TRUE);
 	else gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbut), FALSE);
@@ -412,20 +428,20 @@
 
 	label = gtk_label_new ("Notify List");
 	gtk_table_attach_defaults(GTK_TABLE(table),label,0,1,10,11);
-    	gtk_widget_show (label);
+	gtk_widget_show (label);
 
 	checkbut = gtk_radio_button_new_with_label (NULL, "yes");
-   	g_signal_connect (G_OBJECT (checkbut), "toggled", G_CALLBACK (notify_use_yes),G_OBJECT (checkbut));
-   	gtk_box_pack_start (GTK_BOX (box9), checkbut, FALSE, FALSE, 15);
- 	gtk_widget_show (checkbut);
+	g_signal_connect (G_OBJECT (checkbut), "toggled", G_CALLBACK (notify_use_yes),G_OBJECT (checkbut));
+	gtk_box_pack_start (GTK_BOX (box9), checkbut, FALSE, FALSE, 15);
+	gtk_widget_show (checkbut);
 	if(notify_list) gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbut), TRUE);
 	else gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbut), FALSE);
 
- 	group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (checkbut));
-  	checkbut = gtk_radio_button_new_with_label (group, "no");
- 	g_signal_connect (G_OBJECT (checkbut), "toggled", G_CALLBACK (notify_use_not),G_OBJECT (checkbut));
-  	gtk_box_pack_start (GTK_BOX (box9), checkbut, FALSE, FALSE, 15);
-  	gtk_widget_show (checkbut);
+	group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (checkbut));
+	checkbut = gtk_radio_button_new_with_label (group, "no");
+	g_signal_connect (G_OBJECT (checkbut), "toggled", G_CALLBACK (notify_use_not),G_OBJECT (checkbut));
+	gtk_box_pack_start (GTK_BOX (box9), checkbut, FALSE, FALSE, 15);
+	gtk_widget_show (checkbut);
 	gtk_widget_show(box9);
 	if(!notify_list) gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbut), TRUE);
 	else gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbut), FALSE);
@@ -435,11 +451,11 @@
 
 	label = gtk_label_new ("Select Tray Flash Timeout (msec)");
 	gtk_table_attach_defaults(GTK_TABLE(table),label,0,1,11,12);
-    	gtk_widget_show (label);
+	gtk_widget_show (label);
 
 	adj = (GtkAdjustment *) gtk_adjustment_new (500, 200, 2000, 100, 0, 0);
 	spinbutton = gtk_spin_button_new (adj, 0, 0);
-  	gtk_spin_button_set_wrap (GTK_SPIN_BUTTON (spinbutton), FALSE);
+	gtk_spin_button_set_wrap (GTK_SPIN_BUTTON (spinbutton), FALSE);
 	gtk_spin_button_set_numeric(GTK_SPIN_BUTTON (spinbutton), TRUE);
 	gtk_spin_button_set_value(GTK_SPIN_BUTTON (spinbutton), flash_interval);
 	gtk_box_pack_start (GTK_BOX (box10), spinbutton, FALSE, TRUE, 15);
@@ -450,21 +466,21 @@
 	gtk_table_attach_defaults(GTK_TABLE(table),box11,0,3,12,13);
 
 	button = gtk_button_new_with_label ("Apply");
-   	g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (set_noti_events_apply), NULL);
-    	gtk_box_pack_start (GTK_BOX (box11), button, FALSE, FALSE, 100);
-    	gtk_widget_show (button);
+	g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (set_noti_events_apply), NULL);
+	gtk_box_pack_start (GTK_BOX (box11), button, FALSE, FALSE, 100);
+	gtk_widget_show (button);
 
 	button = gtk_button_new_with_label ("Close");
 	g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (set_tray_delete), NULL);
 	g_signal_connect (G_OBJECT (window), "delete_event", G_CALLBACK (set_tray_delete), G_OBJECT (window));
 	g_signal_connect (G_OBJECT (window), "destroy", G_CALLBACK (set_tray_delete), G_OBJECT (window));
 	g_signal_connect_swapped (G_OBJECT (button), "clicked",G_CALLBACK (gtk_widget_destroy),G_OBJECT (window));
-    	gtk_box_pack_start (GTK_BOX (box11), button, FALSE, FALSE, 75);
-    	gtk_widget_show (button);
+	gtk_box_pack_start (GTK_BOX (box11), button, FALSE, FALSE, 75);
+	gtk_widget_show (button);
 	gtk_widget_show (box11);
 
 	gtk_widget_show(table);
- 	gtk_widget_show (window);
+	gtk_widget_show (window);
 
 }
 
@@ -474,7 +490,8 @@
 	GtkWidget *window;
 	GtkWidget *table;
 	GtkWidget *checkbutton,*checkbutton2,*checkbutton4,*checkbutton5;
-	GtkWidget *button,*box1,*box2,*box3,*box4;
+    GtkWidget *checkbutton6,*checkbutton7,*checkbutton8,*checkbutton9;
+	GtkWidget *button,*box1,*box2,*box3,*box4,*box5,*box6;
 	GtkWidget *label;
 	GSList *group;
 
@@ -486,7 +503,7 @@
 	gtk_window_set_title (GTK_WINDOW (window), "SysTray Settings");
 	gtk_container_set_border_width (GTK_CONTAINER (window), 10);
 
-	table=gtk_table_new(15,3,FALSE);
+	table=gtk_table_new(17,3,FALSE);
 	gtk_table_set_col_spacings(GTK_TABLE(table), 40 );
 	gtk_table_set_row_spacings(GTK_TABLE(table), 12 );
 	gtk_container_add (GTK_CONTAINER (window), table);
@@ -494,11 +511,13 @@
 	box1 = gtk_hbox_new (FALSE, 40);
 	box2 = gtk_hbox_new (FALSE, 40);
 	box3 = gtk_hbox_new (FALSE, 40);
-	box4 = gtk_hbox_new (FALSE, 60);
+	box4 = gtk_hbox_new (FALSE, 40);
+	box5 = gtk_hbox_new (FALSE, 40);
+	box6 = gtk_hbox_new (FALSE, 60);
 
 	label = gtk_label_new ("SysTray Settings. Select your favorite apps and settings");
 	gtk_table_attach_defaults(GTK_TABLE(table),label,0,2,0,1);
-  	gtk_widget_show (label);
+	gtk_widget_show (label);
 
 	//1° button
 	label = gtk_label_new ("Select your favorite browser");
@@ -509,44 +528,44 @@
 	gtk_table_attach_defaults(GTK_TABLE(table),browser_text,1,2,1,2);
 	gtk_entry_set_max_length(GTK_ENTRY(browser_text), 150);
 	gtk_entry_set_text(GTK_ENTRY(browser_text), bpath);
-    	gtk_widget_show (browser_text);
+	gtk_widget_show (browser_text);
 
 	button = gtk_button_new_with_label ("Select");
 	gtk_table_attach_defaults(GTK_TABLE(table),button,2,3,1,2);
-   	g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (browser_select), NULL);
-    	gtk_widget_show (button);
+	g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (browser_select), NULL);
+	gtk_widget_show (button);
 
 	//2° button
-    	label = gtk_label_new ("Select your favorite email client");
+	label = gtk_label_new ("Select your favorite email client");
 	gtk_table_attach_defaults(GTK_TABLE(table),label,0,1,2,3);
- 	gtk_widget_show (label);
+	gtk_widget_show (label);
 
 	email_text = gtk_entry_new ();
 	gtk_entry_set_max_length(GTK_ENTRY(email_text), 150);
 	gtk_entry_set_text(GTK_ENTRY(email_text), epath);
 	gtk_table_attach_defaults(GTK_TABLE(table),email_text,1,2,2,3);
- 	gtk_widget_show (email_text);
+	gtk_widget_show (email_text);
 
 	button = gtk_button_new_with_label ("Select");
-   	g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (email_select), NULL);
+	g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (email_select), NULL);
 	gtk_table_attach_defaults(GTK_TABLE(table),button,2,3,2,3);
-    	gtk_widget_show (button);
+	gtk_widget_show (button);
 
 	//3° button
 	label = gtk_label_new ("Select your favorite multimedia player	");
 	gtk_table_attach_defaults(GTK_TABLE(table),label,0,1,3,4);
-    	gtk_widget_show (label);
+	gtk_widget_show (label);
 
 	player_text = gtk_entry_new ();
 	gtk_entry_set_max_length(GTK_ENTRY(player_text), 150);
 	gtk_entry_set_text(GTK_ENTRY(player_text), ppath);
 	gtk_table_attach_defaults(GTK_TABLE(table),player_text,1,2,3,4);
-    	gtk_widget_show (player_text);
+	gtk_widget_show (player_text);
 
 	button = gtk_button_new_with_label ("Select");
-   	g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (player_select), NULL);
+	g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (player_select), NULL);
 	gtk_table_attach_defaults(GTK_TABLE(table),button,2,3,3,4);
-    	gtk_widget_show (button);
+	gtk_widget_show (button);
 
 	///from here
 	label = gtk_label_new ("Select icons path");
@@ -557,162 +576,207 @@
 	gtk_table_attach_defaults(GTK_TABLE(table),imagepath_text,1,2,4,5);
 	gtk_entry_set_max_length(GTK_ENTRY(imagepath_text), 150);
 	gtk_entry_set_text(GTK_ENTRY(imagepath_text), imagepath);
-    	gtk_widget_show (imagepath_text);
+	gtk_widget_show (imagepath_text);
 
 	button = gtk_button_new_with_label ("Select");
 	gtk_table_attach_defaults(GTK_TABLE(table),button,2,3,4,5);
-   	g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (imagepath_select), NULL);
-    	gtk_widget_show (button);
-	
+	g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (imagepath_select), NULL);
+	gtk_widget_show (button);
+
 	//away msg n°1
 	label = gtk_label_new ("Write your first favourite away message	");
 	gtk_table_attach_defaults(GTK_TABLE(table),label,0,1,5,6);
-    	gtk_widget_show (label);
+	gtk_widget_show (label);
 
 	away1 = gtk_entry_new ();
 	gtk_entry_set_max_length(GTK_ENTRY(away1), 150);
 	gtk_entry_set_text(GTK_ENTRY(away1), away_msg1);
 	gtk_table_attach_defaults(GTK_TABLE(table),away1,1,3,5,6);
-    	gtk_widget_show (away1);
+	gtk_widget_show (away1);
 
 	//away msg n°2
 	label = gtk_label_new ("Write your second favourite away message");
 	gtk_table_attach_defaults(GTK_TABLE(table),label,0,1,6,7);
-    	gtk_widget_show (label);
+	gtk_widget_show (label);
 
 	away2 = gtk_entry_new ();
 	gtk_entry_set_max_length(GTK_ENTRY(away2), 150);
 	gtk_entry_set_text(GTK_ENTRY(away2), away_msg2);
 	gtk_table_attach_defaults(GTK_TABLE(table),away2,1,3,6,7);
-    	gtk_widget_show (away2);
+	gtk_widget_show (away2);
 
 	//away msg n°3
 	label = gtk_label_new ("Write your third favourite away message	");
 	gtk_table_attach_defaults(GTK_TABLE(table),label,0,1,7,8);
-    	gtk_widget_show (label);
+	gtk_widget_show (label);
 
 	away3 = gtk_entry_new ();
 	gtk_entry_set_max_length(GTK_ENTRY(away3), 150);
 	gtk_entry_set_text(GTK_ENTRY(away3), away_msg3);
 	gtk_table_attach_defaults(GTK_TABLE(table),away3,1,3,7,8);
-    	gtk_widget_show (away3);
+	gtk_widget_show (away3);
 
 	label = gtk_label_new ("Change Nick while away?");
 	gtk_table_attach_defaults(GTK_TABLE(table),label,0,1,8,9);
-    	gtk_widget_show (label);
+	gtk_widget_show (label);
 
 	gtk_table_attach_defaults(GTK_TABLE(table),box1,1,2,8,9);
 
 	checkbutton = gtk_radio_button_new_with_label (NULL, "yes");
 	gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbutton), FALSE);
-   	g_signal_connect (G_OBJECT (checkbutton), "toggled", G_CALLBACK (away_use_yes),G_OBJECT (checkbutton));
+	g_signal_connect (G_OBJECT (checkbutton), "toggled", G_CALLBACK (away_use_yes),G_OBJECT (checkbutton));
 	gtk_box_pack_start (GTK_BOX (box1), checkbutton, FALSE, FALSE, 15);
- 	gtk_widget_show (checkbutton);
+	gtk_widget_show (checkbutton);
 
- 	group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (checkbutton));
-  	checkbutton = gtk_radio_button_new_with_label (group, "no");
+	group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (checkbutton));
+	checkbutton = gtk_radio_button_new_with_label (group, "no");
 	if ( go_change == FALSE) gtk_button_clicked (GTK_BUTTON(checkbutton));
 	g_signal_connect (G_OBJECT (checkbutton), "toggled", G_CALLBACK (away_use_not),G_OBJECT (checkbutton));
 	gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbutton), FALSE);
-  	gtk_box_pack_start (GTK_BOX (box1), checkbutton, FALSE, FALSE, 15);
-  	gtk_widget_show (checkbutton);
+	gtk_box_pack_start (GTK_BOX (box1), checkbutton, FALSE, FALSE, 15);
+	gtk_widget_show (checkbutton);
 	gtk_widget_show (box1);
 
 	label = gtk_label_new ("Enter your away nickname");
 	gtk_table_attach_defaults(GTK_TABLE(table),label,0,1,9,10);
-    	gtk_widget_show (label);
+	gtk_widget_show (label);
 
 	away_nick_box = gtk_entry_new ();
 	gtk_entry_set_max_length(GTK_ENTRY(away_nick_box), 150);
 	gtk_entry_set_text(GTK_ENTRY(away_nick_box), away_nick);
 	gtk_table_attach_defaults(GTK_TABLE(table),away_nick_box,1,3,9,10);
- 	gtk_widget_show (away_nick_box);
+	gtk_widget_show (away_nick_box);
 
 	label = gtk_label_new ("Away nick needs to be identified?");
 	gtk_table_attach_defaults(GTK_TABLE(table),label,0,1,10,11);
-    	gtk_widget_show (label);
+	gtk_widget_show (label);
 
 	gtk_table_attach_defaults(GTK_TABLE(table),box2,1,3,10,11);
 
 	checkbutton2 = gtk_radio_button_new_with_label (NULL, "yes");
 	gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbutton2), FALSE);
 	g_signal_connect (G_OBJECT (checkbutton2), "toggled", G_CALLBACK (away_ident_yes),G_OBJECT (checkbutton2));
-   	gtk_box_pack_start (GTK_BOX (box2), checkbutton2, FALSE, FALSE, 15);
- 	gtk_widget_show (checkbutton2);
+	gtk_box_pack_start (GTK_BOX (box2), checkbutton2, FALSE, FALSE, 15);
+	gtk_widget_show (checkbutton2);
 
- 	group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (checkbutton2));
-  	checkbutton3 = gtk_radio_button_new_with_label (group, "no");
+	group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (checkbutton2));
+	checkbutton3 = gtk_radio_button_new_with_label (group, "no");
 	if ( go_identify == FALSE) gtk_button_clicked (GTK_BUTTON(checkbutton3));
 	gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbutton3), FALSE);
 	g_signal_connect (G_OBJECT (checkbutton3), "toggled", G_CALLBACK (away_ident_not),G_OBJECT (checkbutton3));
-  	gtk_box_pack_start (GTK_BOX (box2), checkbutton3, FALSE, FALSE, 15);
-  	gtk_widget_show (checkbutton3);
+	gtk_box_pack_start (GTK_BOX (box2), checkbutton3, FALSE, FALSE, 15);
+	gtk_widget_show (checkbutton3);
 	gtk_widget_show(box2);
 
 	label = gtk_label_new ("Enter your away nickname password");
- 	gtk_table_attach_defaults(GTK_TABLE(table),label,0,1,11,12);
-    	gtk_widget_show (label);
+	gtk_table_attach_defaults(GTK_TABLE(table),label,0,1,11,12);
+	gtk_widget_show (label);
 
 	away_nick_pass_box = gtk_entry_new ();
 	gtk_entry_set_max_length(GTK_ENTRY(away_nick_pass_box), 150);
 	gtk_entry_set_visibility(GTK_ENTRY(away_nick_pass_box), FALSE);
 	gtk_entry_set_text(GTK_ENTRY(away_nick_pass_box), away_pass);
 	gtk_table_attach_defaults(GTK_TABLE(table),away_nick_pass_box,1,3,11,12);
- 	gtk_widget_show (away_nick_pass_box);
+	gtk_widget_show (away_nick_pass_box);
 
 	// open a new tab
 	label = gtk_label_new ("Select Notification Events");
- 	gtk_table_attach_defaults(GTK_TABLE(table),label,0,1,12,13);
+	gtk_table_attach_defaults(GTK_TABLE(table),label,0,1,12,13);
 	gtk_widget_show (label);
 
 	button = gtk_button_new_with_label ("Select Events");
-   	g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (set_noti_events), NULL);
-    	gtk_table_attach_defaults(GTK_TABLE(table),button,1,2,12,13);
-    	gtk_widget_show (button);
+	g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (set_noti_events), NULL);
+	gtk_table_attach_defaults(GTK_TABLE(table),button,1,2,12,13);
+	gtk_widget_show (button);
 #ifndef _WIN32_
 	//window desktop choice
 	label = gtk_label_new ("Select Your Window Manager");
- 	gtk_table_attach_defaults(GTK_TABLE(table),label,0,1,13,14);
+	gtk_table_attach_defaults(GTK_TABLE(table),label,0,1,13,14);
 	gtk_widget_show (label);
 
 	gtk_table_attach_defaults(GTK_TABLE(table),box3,1,3,13,14);
 
 	checkbutton4 = gtk_radio_button_new_with_label (NULL, "KDE Like");
 	g_signal_connect (G_OBJECT (checkbutton4), "toggled", G_CALLBACK (kde_use_yes),G_OBJECT (checkbutton4));
-   	gtk_box_pack_start (GTK_BOX (box3), checkbutton4, FALSE, FALSE, 15);
- 	gtk_widget_show (checkbutton4);
+	gtk_box_pack_start (GTK_BOX (box3), checkbutton4, FALSE, FALSE, 15);
+	gtk_widget_show (checkbutton4);
 
- 	group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (checkbutton4));
-  	checkbutton5 = gtk_radio_button_new_with_label (group, "Gnome Like");
+	group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (checkbutton4));
+	checkbutton5 = gtk_radio_button_new_with_label (group, "Gnome Like");
 	g_signal_connect (G_OBJECT (checkbutton5), "toggled", G_CALLBACK (kde_use_not),G_OBJECT (checkbutton5));
-  	gtk_box_pack_start (GTK_BOX (box3), checkbutton5, FALSE, FALSE, 15);
-  	gtk_widget_show (checkbutton5);
+	gtk_box_pack_start (GTK_BOX (box3), checkbutton5, FALSE, FALSE, 15);
+	gtk_widget_show (checkbutton5);
 	gtk_widget_show(box3);
 
 	if ( KDE == TRUE) gtk_button_clicked (GTK_BUTTON(checkbutton4));
 	else gtk_button_clicked (GTK_BUTTON(checkbutton5));
 #endif
+
+	// swap mouse buttons choice
+	label = gtk_label_new ("Swap the left and middle mouse buttons");
+	gtk_table_attach_defaults(GTK_TABLE(table),label,0,1,14,15);
+	gtk_widget_show (label);
+
+	gtk_table_attach_defaults(GTK_TABLE(table),box4,1,3,14,15);
+
+	checkbutton6 = gtk_radio_button_new_with_label (NULL, "yes");
+	g_signal_connect (G_OBJECT (checkbutton6), "toggled", G_CALLBACK (swap_buttons_yes),G_OBJECT (checkbutton6));
+	gtk_box_pack_start (GTK_BOX (box4), checkbutton6, FALSE, FALSE, 15);
+	gtk_widget_show (checkbutton6);
+
+	group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (checkbutton6));
+	checkbutton7 = gtk_radio_button_new_with_label (group, "no");
+	g_signal_connect (G_OBJECT (checkbutton7), "toggled", G_CALLBACK (swap_buttons_not),G_OBJECT (checkbutton7));
+	gtk_box_pack_start (GTK_BOX (box4), checkbutton7, FALSE, FALSE, 15);
+	gtk_widget_show (checkbutton7);
+	gtk_widget_show(box4);
+
+	if ( swap_buttons == TRUE) gtk_button_clicked (GTK_BUTTON(checkbutton6));
+	else gtk_button_clicked (GTK_BUTTON(checkbutton7));
+
+	// hide XChat to the SysTray choice
+	label = gtk_label_new ("Hide XChat to the SysTray after startup");
+	gtk_table_attach_defaults(GTK_TABLE(table),label,0,1,15,16);
+	gtk_widget_show (label);
+
+	gtk_table_attach_defaults(GTK_TABLE(table),box5,1,3,15,16);
+
+	checkbutton8 = gtk_radio_button_new_with_label (NULL, "yes");
+	g_signal_connect (G_OBJECT (checkbutton8), "toggled", G_CALLBACK (hide_systray_yes),G_OBJECT (checkbutton8));
+	gtk_box_pack_start (GTK_BOX (box5), checkbutton8, FALSE, FALSE, 15);
+	gtk_widget_show (checkbutton8);
+
+	group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (checkbutton8));
+	checkbutton9 = gtk_radio_button_new_with_label (group, "no");
+	g_signal_connect (G_OBJECT (checkbutton9), "toggled", G_CALLBACK (hide_systray_not),G_OBJECT (checkbutton9));
+	gtk_box_pack_start (GTK_BOX (box5), checkbutton9, FALSE, FALSE, 15);
+	gtk_widget_show (checkbutton9);
+	gtk_widget_show(box5);
+
+	if ( hide_systray == TRUE) gtk_button_clicked (GTK_BUTTON(checkbutton8));
+	else gtk_button_clicked (GTK_BUTTON(checkbutton9));
+
 	//4°-5° button
-	gtk_table_attach_defaults(GTK_TABLE(table),box4,0,3,15,16);
+	gtk_table_attach_defaults(GTK_TABLE(table),box6,0,3,16,17);
 
 	button = gtk_button_new_with_label ("Apply");
-   	g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (save), NULL);
-    	gtk_box_pack_start (GTK_BOX (box4), button, FALSE, FALSE, 120);
-    	gtk_widget_show (button);
+	g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (save), NULL);
+	gtk_box_pack_start (GTK_BOX (box6), button, FALSE, FALSE, 120);
+	gtk_widget_show (button);
 
 	button = gtk_button_new_with_label ("Close");
 	g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (set_tray_delete), NULL);
 	g_signal_connect (G_OBJECT (window), "delete_event", G_CALLBACK (set_tray_delete), G_OBJECT (window));
 	g_signal_connect (G_OBJECT (window), "destroy", G_CALLBACK (set_tray_delete), G_OBJECT (window));
 	g_signal_connect_swapped (G_OBJECT (button), "clicked",G_CALLBACK (gtk_widget_destroy),G_OBJECT (window));
-    	gtk_box_pack_start (GTK_BOX (box4), button, FALSE, FALSE, 47);
-    	gtk_widget_show (button);
-	gtk_widget_show (box4);
+	gtk_box_pack_start (GTK_BOX (box6), button, FALSE, FALSE, 47);
+	gtk_widget_show (button);
+	gtk_widget_show (box6);
 
 	if ( go_change == FALSE) away_use_not(checkbutton, NULL);
 	if ( go_identify == FALSE) away_ident_not(checkbutton3, NULL);
 
 	gtk_widget_show(table);
- 	gtk_widget_show (window);
+	gtk_widget_show (window);
 
 }
diff -urN xchat-systray-integration-2.4.5/src/settings.h xchat-systray-integration/src/settings.h
--- xchat-systray-integration-2.4.5/src/settings.h	2004-04-30 14:38:10.000000000 +0200
+++ xchat-systray-integration/src/settings.h	2006-09-01 01:40:16.000000000 +0200
@@ -35,6 +35,10 @@
  void set_noti_events_apply();
  void kde_use_yes();
  void kde_use_not();
+ void swap_buttons_yes();
+ void swap_buttons_not();
+ void hide_systray_yes();
+ void hide_systray_not();
  void set_noti_events();
 void set_tray();
 
diff -urN xchat-systray-integration-2.4.5/src/systray.c xchat-systray-integration/src/systray.c
--- xchat-systray-integration-2.4.5/src/systray.c	2004-04-30 14:38:10.000000000 +0200
+++ xchat-systray-integration/src/systray.c	2006-09-01 01:40:16.000000000 +0200
@@ -5,37 +5,37 @@
 #define SYSTRAY_MSG WM_APP
 
 LRESULT CALLBACK wndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
-{ 
- switch (message) 
+{
+ switch (message)
  {
 	case SYSTRAY_MSG:
 
-		switch (lParam) 
+		switch (lParam)
 		{
-        		case WM_RBUTTONDOWN:
+		case WM_RBUTTONDOWN:
 				tray_menu();
 				break;
-        		case WM_LBUTTONDBLCLK: 
-				if (status) 
+		case WM_LBUTTONDBLCLK:
+				if (status)
 				{
 					xchat_command(ph,"gui hide");
 					status=0;
 				}
-				else 
-				{ 
+				else
+				{
 					xchat_command(ph,"gui show");
 					select_event_tab(TRUE);
 					status=1;
 				}
 				break;
-			case WM_MBUTTONDOWN: 
-				if (status) 
+			case WM_MBUTTONDOWN:
+				if (status)
 				{
 					xchat_command(ph,"gui hide");
 					status=0;
 				}
-				else 
-				{ 
+				else
+				{
 					xchat_command(ph,"gui show");
 					status=1;
 				}
@@ -43,19 +43,19 @@
 			case WM_LBUTTONDOWN:
 				select_event_tab(FALSE);
 				break;
-			 
+
 			default:
 				return 1;
 		}
 		break;
-		
+
 	default:
-		return DefWindowProc(hwnd, message, wParam, lParam); 
+		return DefWindowProc(hwnd, message, wParam, lParam);
  }
 }
 #endif
 
-void update_tray(MYICON newicon, char* newtooltip) 
+void update_tray(MYICON newicon, char* newtooltip)
 {
 	if (newicon!=NULL || newtooltip!="")
 	{
@@ -66,32 +66,32 @@
 		tray_icon.uID=0;
 		tray_icon.uFlags=0;
 		tray_icon.uCallbackMessage = SYSTRAY_MSG;
-	
-		if (newicon!=NULL) 
+
+		if (newicon!=NULL)
 		{
 			tray_icon.hIcon=newicon;
 			tray_icon.uFlags |= NIF_ICON;
 		}
-		
-        	if (newtooltip!="") 
+
+	if (newtooltip!="")
 		{
 			lstrcpy(tray_icon.szTip, newtooltip);
 			g_free(newtooltip);
 			newtooltip=NULL;
 			tray_icon.uFlags |= NIF_TIP;
 		}
-		
+
 		Shell_NotifyIcon(NIM_MODIFY,&tray_icon);
 
-		
+
 #else
-		if ( newicon!=NULL ) 
+		if ( newicon!=NULL )
 		{
 			gtk_image_set_from_pixbuf(GTK_IMAGE(tray_icon_image), newicon);
 			newicon=NULL;
-			
-		}	
-		if ( newtooltip!="") 
+
+		}
+		if ( newtooltip!="")
 		{
 			gtk_tooltips_set_tip (tray_icon_tooltip, GTK_WIDGET (tray_icon), newtooltip , NULL);
 			newtooltip=NULL;
@@ -111,6 +111,8 @@
 #ifndef _WIN32_
 	KDE=FALSE;
 #endif
+    swap_buttons=FALSE;
+    hide_systray=FALSE;
 	flash_interval=500;
 	global_away=FALSE;
 	global_away_temp=FALSE;
@@ -184,17 +186,17 @@
 
 
 
-MYICON loadicons(char* filename,char* type) 
+MYICON loadicons(char* filename,char* type)
 {
 	MYICON tempbuffer=NULL;
 	char temp[200];
-	if (filename && type) 
+	if (filename && type)
 	{
 		if (imagepath) sprintf(temp,"%s/%s/%s", imagepath ,type,filename);
 		else sprintf(temp,"%s/%s/%s", xchat_get_info(ph, "xchatdir"),type,filename);
-#ifdef _WIN32_			
+#ifdef _WIN32_
 		tempbuffer= ((HICON)LoadImage( tray_inst, temp, IMAGE_ICON, 16, 16, LR_LOADFROMFILE ));
-#else	
+#else
 		tempbuffer= gdk_pixbuf_new_from_file(temp,NULL);
 #endif
 		return tempbuffer;
@@ -204,13 +206,13 @@
 }
 
 #ifdef _WIN32_
-void tray_init_gui_win32() 
+void tray_init_gui_win32()
 {
 	WNDCLASSEX winclassex;
-	
-	winclassex.cbSize 		= sizeof(WNDCLASSEX);
+
+	winclassex.cbSize		= sizeof(WNDCLASSEX);
 	winclassex.style	        = 0;
-	winclassex.lpfnWndProc 		= wndProc;
+	winclassex.lpfnWndProc		= wndProc;
 	winclassex.cbClsExtra		= 0;
 	winclassex.cbWndExtra		= 0;
 	winclassex.hInstance		= tray_inst;
@@ -220,12 +222,12 @@
 	winclassex.lpszMenuName		= NULL;
 	winclassex.lpszClassName	= "SysTrayWinClass";
 	winclassex.hIconSm		= pix_xchat;
-		
+
 	RegisterClassEx(&winclassex);
-	
+
 	// Create the hidden window
 	hidden_win=CreateWindow("SysTrayWinClass", "", 0, 0, 0, 0, 0, GetDesktopWindow(), NULL, tray_inst, 0);
-	
+
 	pix_xchat=loadicons("xchat.ico","Win32Tray");
 	pix_xchat_red = loadicons("xchatred.ico","Win32Tray");
 	pix_xchat_blue = loadicons("xchatblue.ico","Win32Tray");
@@ -235,15 +237,15 @@
 	pix_xchat_notin = loadicons("notifyin.ico","Win32Tray");
 	pix_xchat_notout = loadicons("notifyout.ico","Win32Tray");
 	pix_xchat_away = loadicons("goaway.ico","Win32Tray");
-	
+
 	if (pix_xchat) icontype = pix_xchat;
-	
+
 	if (!pix_xchat || !pix_xchat_red || !pix_xchat_blue || !pix_xchat_dcc || !pix_xchat_disc ||!pix_xchat_inv
-	|| !pix_xchat_notin ||!pix_xchat_notout ||!pix_xchat_away ||!icontype ) 
+	|| !pix_xchat_notin ||!pix_xchat_notout ||!pix_xchat_away ||!icontype )
 	{
 		xchat_printf(ph,"Icon load failed. Please enter the right path in the setting tab, check if filenames are not wrong and reload plugin");
 	}
-	
+
 	ZeroMemory(&tray_icon,sizeof(tray_icon));
 	tray_icon.cbSize=sizeof(NOTIFYICONDATA);
 	tray_icon.hWnd=hidden_win;
@@ -251,7 +253,7 @@
 	tray_icon.uFlags=NIF_ICON | NIF_MESSAGE | NIF_TIP;
 	tray_icon.uCallbackMessage = SYSTRAY_MSG;
 	tray_icon.hIcon=pix_xchat;
-	
+
 	strcpy(tray_icon.szTip, "XChat2 - Nothing Particular");
 	Shell_NotifyIcon(NIM_ADD,&tray_icon);
 
@@ -273,7 +275,7 @@
 	pix_xchat_notout = loadicons("notifyout.png","GTKTray");
 	pix_xchat_away = loadicons("goaway.png","GTKTray");
 	icontype = pix_xchat;
-	
+
 	//kde
 	if ( KDE )
 	{
@@ -291,19 +293,19 @@
 			unload_plugin();
 			return;
 		}
-		
+
 	}
 	gtk_widget_set_usize( tray_icon,22,22);
 	gtk_widget_realize ( tray_icon );
-		
+
 	tray_icon_image = gtk_image_new_from_pixbuf ( pix_xchat );
 
 	eventbox = gtk_event_box_new ();
-	
-	
+
+
 	gtk_container_add ( GTK_CONTAINER ( eventbox ), tray_icon_image );
 	gtk_container_add ( GTK_CONTAINER ( tray_icon ), eventbox );
-	
+
 	g_signal_connect ( G_OBJECT ( eventbox), "button_press_event" , G_CALLBACK ( tray_clicked ), NULL );
 	g_signal_connect ( GTK_OBJECT( tray_icon), "destroy" , GTK_SIGNAL_FUNC( gtk_widget_destroyed ),&tray_icon );
 	g_signal_connect ( G_OBJECT ( tray_icon), "destroy" , GTK_SIGNAL_FUNC( gtk_widget_destroyed ), NULL );
@@ -314,7 +316,7 @@
 	gtk_widget_show ( GTK_WIDGET ( tray_icon ) );
 	gtk_widget_show ( eventbox );
 	gtk_widget_show ( GTK_WIDGET (tray_icon_image));
-	
+
 	//tooltip
 	tray_icon_tooltip = gtk_tooltips_new ();
 	gtk_tooltips_set_tip ( tray_icon_tooltip, GTK_WIDGET ( tray_icon ), "XChat2 - Nothing Particular" , NULL );
@@ -328,13 +330,17 @@
 {
 #ifndef _WIN32_
 	//fix seg. fault on xchat-text, the XChat version without GTK
-    	if ( !gdk_display ) 
+	if ( !gdk_display )
 	{
 		xchat_printf( ph,"SysTray Integration Plugin Version %s NOT loaded!\nYou are not using a GUI version of XChat2.\n",version );
               return;
 	}
 #endif
 	tray_init_xchat();
+    if (hide_systray) {
+        xchat_command(ph,"gui hide");
+        status = 0;
+    }
 #ifndef _WIN32_
 	tray_init_gui_gtk();
 #else
@@ -344,15 +350,15 @@
 
 void clean_up()
 {
-	if (servers_names) 
+	if (servers_names)
 	{
 		g_hash_table_destroy(servers_names);
 		servers_names=NULL;
 	}
-	
+
 #ifndef _WIN32_
 
-	if (tray_icon) 
+	if (tray_icon)
 	{
 		gtk_widget_destroy (GTK_WIDGET (tray_icon));
 		tray_icon=NULL;
@@ -367,59 +373,59 @@
 	pix_xchat_notin = NULL;
 	pix_xchat_notout = NULL;
 	pix_xchat_away = NULL;
-	
+
 	if (tray_icon_tooltip) tray_icon_tooltip=NULL;
 
 #else
 
 	Shell_NotifyIcon( NIM_DELETE, &tray_icon );
-	if ( hidden_win ) 
+	if ( hidden_win )
 	{
 		DestroyWindow( hidden_win );
 		hidden_win=NULL;
 	}
 	if ( tray_inst )  tray_inst = NULL;
-	if ( pix_xchat ) 
+	if ( pix_xchat )
 	{
 		DestroyIcon( pix_xchat );
 		pix_xchat=NULL;
 	}
-	if ( pix_xchat_red ) 
+	if ( pix_xchat_red )
 	{
 		DestroyIcon( pix_xchat_red );
 		pix_xchat_red=NULL;
 	}
-	if ( pix_xchat_blue ) 
+	if ( pix_xchat_blue )
 	{
 		DestroyIcon( pix_xchat_blue );
 		pix_xchat_blue=NULL;
 	}
-	if ( pix_xchat_dcc ) 
+	if ( pix_xchat_dcc )
 	{
 		DestroyIcon( pix_xchat_dcc );
 		pix_xchat_dcc=NULL;
 	}
-	if ( pix_xchat_disc ) 
+	if ( pix_xchat_disc )
 	{
 		DestroyIcon( pix_xchat_disc );
 		pix_xchat_disc=NULL;
-	}	
-	if ( pix_xchat_inv ) 
+	}
+	if ( pix_xchat_inv )
 	{
 		DestroyIcon( pix_xchat_inv );
 		pix_xchat_inv=NULL;
 	}
-	if ( pix_xchat_notin ) 
+	if ( pix_xchat_notin )
 	{
 		DestroyIcon( pix_xchat_notin );
 		pix_xchat_notin=NULL;
 	}
-	if ( pix_xchat_notout ) 
+	if ( pix_xchat_notout )
 	{
 		DestroyIcon( pix_xchat_notout );
 		pix_xchat_notout=NULL;
 	}
-	if ( pix_xchat_away ) 
+	if ( pix_xchat_away )
 	{
 		DestroyIcon( pix_xchat_away );
 		pix_xchat_away=NULL;
@@ -436,7 +442,7 @@
 
 	if( gdk_display )
 	{
-		if ( onExit==1 ) 
+		if ( onExit==1 )
 		{
 			clean_up();
 			xchat_print( ph, "SysTray Integration Plugin unloaded\n");
@@ -474,5 +480,3 @@
 
 	return 1;
 }
-
-

