diff -Nrup gnome-system-monitor-2.17.6/src/interface.cpp gnome-system-monitor-2.17.6.mod/src/interface.cpp
--- gnome-system-monitor-2.17.6/src/interface.cpp	2007-01-19 05:14:12.000000000 +0800
+++ gnome-system-monitor-2.17.6.mod/src/interface.cpp	2007-01-24 17:50:05.039705000 +0800
@@ -231,13 +231,13 @@ create_sys_view (ProcData *procdata)
 	GtkWidget *cpu_box, *mem_box, *net_box;
 	GtkWidget *cpu_hbox, *mem_hbox, *net_hbox;
 	GtkWidget *cpu_graph_box, *mem_graph_box, *net_graph_box;
-	GtkWidget *label,*cpu_label, *spacer;
+	GtkWidget *label,*label2,*label3, *label4,*label5, *cpu_label, *spacer;
 	GtkWidget *table;
 	GtkWidget *color_picker;
 	GtkSizeGroup *sizegroup;
 	LoadGraph *cpu_graph, *mem_graph, *net_graph;
 	gint i;
-
+	AtkObject *colorWidget, *label1Widget, *label2Widget, *label3Widget, *label4Widget, *label5Widget;
 
 	vbox = gtk_vbox_new (FALSE, 18);
 
@@ -285,6 +285,7 @@ create_sys_view (ProcData *procdata)
 
 		color_picker = gtk_color_button_new_with_color (
 			&load_graph_get_colors(cpu_graph)[2+i]);
+    		colorWidget = gtk_widget_get_accessible (color_picker);
 
 		g_signal_connect (G_OBJECT (color_picker), "color_set",
 			    G_CALLBACK (cb_cpu_color_changed), GINT_TO_POINTER (i));
@@ -297,10 +298,21 @@ create_sys_view (ProcData *procdata)
 			text = g_strdup_printf (_("CPU%d:"), i+1);
 		}
 		label = gtk_label_new (text);
+		/* in order to support accessibility, add the relationship between label and button */
+    		label1Widget = gtk_widget_get_accessible (label);
+            	atk_object_add_relationship (label1Widget,ATK_RELATION_LABEL_FOR,colorWidget);
+				
 		gtk_box_pack_start (GTK_BOX (temp_hbox), label, FALSE, FALSE, 6);
 		g_free (text);
 		
 		cpu_label = gtk_label_new (NULL);
+		/* in order to support accessibility, add the relationship between button and cpu_label */
+    		label2Widget = gtk_widget_get_accessible (cpu_label);
+            	atk_object_add_relationship (label2Widget, ATK_RELATION_LABEL_FOR, colorWidget);
+		/* in order to support accessibility, add the relationship between button and label/cpu_label */
+            	atk_object_add_relationship (colorWidget, ATK_RELATION_LABELLED_BY ,label1Widget);
+            	atk_object_add_relationship (colorWidget, ATK_RELATION_LABELLED_BY ,label2Widget);
+				
 		gtk_box_pack_start (GTK_BOX (temp_hbox), cpu_label, FALSE, FALSE, 0);
 		load_graph_get_labels(cpu_graph)->cpu[i] = cpu_label;
 		
@@ -340,22 +352,32 @@ create_sys_view (ProcData *procdata)
 	gtk_table_set_col_spacings (GTK_TABLE (table), 12);
 	gtk_box_pack_start (GTK_BOX (mem_graph_box), table, 
 			    FALSE, FALSE, 0);
+			    
+/* Draw User usage */	
 
 	color_picker = gtk_color_button_new_with_color (
 		&load_graph_get_colors(mem_graph)[2]);
+	colorWidget = gtk_widget_get_accessible (color_picker);
 	g_signal_connect (G_OBJECT (color_picker), "color_set",
 			    G_CALLBACK (cb_mem_color_changed), procdata);
 	gtk_table_attach (GTK_TABLE (table), color_picker, 0, 1, 0, 1, GTK_FILL, GTK_FILL, 0, 0);
 	
 	label = gtk_label_new (_("User memory:"));
-	gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
+	label1Widget = gtk_widget_get_accessible (label);
+	atk_object_add_relationship (label1Widget,ATK_RELATION_LABEL_FOR,colorWidget);	gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
 	gtk_table_attach (GTK_TABLE (table), label, 1, 2, 0, 1, GTK_FILL, GTK_FILL, 0, 0);
 	
-	gtk_misc_set_alignment (GTK_MISC (load_graph_get_labels(mem_graph)->memused),
+	/* in order to support accessibility, and to promote performance and readable, 
+	   let's call the load_graph_get_labels() only once here */		
+	label2 = load_graph_get_labels(mem_graph)->memused;
+	label2Widget = gtk_widget_get_accessible (label2);
+	atk_object_add_relationship (label2Widget,ATK_RELATION_LABEL_FOR,colorWidget);
+/*	gtk_misc_set_alignment (GTK_MISC (load_graph_get_labels(mem_graph)->memused),*/
+	gtk_misc_set_alignment (GTK_MISC (label2),	
 				0.0,
 				0.5);
 	gtk_table_attach (GTK_TABLE (table),
-			  load_graph_get_labels(mem_graph)->memused,
+			  label2,
 			  2,
 			  3,
 			  0,
@@ -365,17 +387,26 @@ create_sys_view (ProcData *procdata)
 			  0,
 			  0);
 	
-	label = gtk_label_new (_("of"));
-	gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
-	gtk_table_attach (GTK_TABLE (table), label, 3, 4, 0, 1, GTK_FILL, GTK_FILL, 0, 0);
-	
-
-	gtk_misc_set_alignment (GTK_MISC (load_graph_get_labels(mem_graph)->memtotal),
+	/* in order to support accessibility, add the relationship between label and button */
+	label3 = gtk_label_new (_("of"));
+	label3Widget = gtk_widget_get_accessible (label3);
+	atk_object_add_relationship (label3Widget,ATK_RELATION_LABEL_FOR,colorWidget);
+	gtk_misc_set_alignment (GTK_MISC (label3), 0.0, 0.5);
+	gtk_table_attach (GTK_TABLE (table), label3, 3, 4, 0, 1, GTK_FILL, GTK_FILL, 0, 0);
+ 		
+
+	/* in order to support accessibility, and to promote performance and readable, 
+	   let's call the load_graph_get_labels() only once here */		
+	label4 = load_graph_get_labels(mem_graph)->memtotal;
+	label4Widget = gtk_widget_get_accessible (label4);
+	atk_object_add_relationship (label4Widget,ATK_RELATION_LABEL_FOR,colorWidget);
+/*	gtk_misc_set_alignment (GTK_MISC (load_graph_get_labels(mem_graph)->memtotal),*/
+	gtk_misc_set_alignment (GTK_MISC (label4),
 				0.0,
 				0.5);
 
 	gtk_table_attach (GTK_TABLE (table),
-			  load_graph_get_labels(mem_graph)->memtotal,
+			  label4,
 			  4,
 			  5,
 			  0,
@@ -385,12 +416,18 @@ create_sys_view (ProcData *procdata)
 			  0,
 			  0);
 	
-
-	gtk_misc_set_alignment (GTK_MISC (load_graph_get_labels(mem_graph)->mempercent),
+	/* in order to support accessibility, and to promote performance and readable, 
+	   let's call the load_graph_get_labels() only once here */		
+	label5 = load_graph_get_labels(mem_graph)->mempercent;
+    	label5Widget = gtk_widget_get_accessible (label5);
+        atk_object_add_relationship (label5Widget,ATK_RELATION_LABEL_FOR,colorWidget);
+ 
+/*	gtk_misc_set_alignment (GTK_MISC (load_graph_get_labels(mem_graph)->mempercent),*/
+	gtk_misc_set_alignment (GTK_MISC (label5),
 					  1.0,
 					  0.5);
 	gtk_table_attach (GTK_TABLE (table),
-			  load_graph_get_labels(mem_graph)->mempercent,
+			  label5,
 			  5,
 			  6,
 			  0,
@@ -399,23 +436,40 @@ create_sys_view (ProcData *procdata)
 			  GTK_FILL,
 			  0,
 			  0);
-
+	/* in order to support accessibility, add the relationship between button and label */
+        atk_object_add_relationship (colorWidget, ATK_RELATION_LABELLED_BY ,label1Widget);
+        atk_object_add_relationship (colorWidget, ATK_RELATION_LABELLED_BY ,label2Widget);
+        atk_object_add_relationship (colorWidget, ATK_RELATION_LABELLED_BY ,label3Widget);
+        atk_object_add_relationship (colorWidget, ATK_RELATION_LABELLED_BY ,label4Widget);
+        atk_object_add_relationship (colorWidget, ATK_RELATION_LABELLED_BY ,label5Widget);
+ 			  
+/* Draw the Swap Usage */
 	color_picker = gtk_color_button_new_with_color (
 		&load_graph_get_colors(mem_graph)[3]);
+	colorWidget = gtk_widget_get_accessible (color_picker);
 	g_signal_connect (G_OBJECT (color_picker), "color_set",
 			    G_CALLBACK (cb_swap_color_changed), procdata);
 	gtk_table_attach (GTK_TABLE (table), color_picker, 0, 1, 1, 2, GTK_FILL, GTK_FILL, 0, 0);
 			  
 	label = gtk_label_new (_("Used swap:"));
+	/* in order to support accessibility, add the relationship between label and button */
+	label1Widget = gtk_widget_get_accessible (label);
+	atk_object_add_relationship (label1Widget,ATK_RELATION_LABEL_FOR,colorWidget);
 	gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
 	gtk_table_attach (GTK_TABLE (table), label, 1, 2, 1, 2, GTK_FILL, GTK_FILL, 0, 0);
 	
 
-	gtk_misc_set_alignment (GTK_MISC (load_graph_get_labels(mem_graph)->swapused ),
+	/* in order to support accessibility, and to promote performance and readable, 
+	   let's call the load_graph_get_labels() only once here */		
+	label2 = load_graph_get_labels(mem_graph)->swapused;
+	label2Widget = gtk_widget_get_accessible (label2);
+	atk_object_add_relationship (label2Widget,ATK_RELATION_LABEL_FOR,colorWidget);
+	gtk_misc_set_alignment (GTK_MISC (label2),
+/*	gtk_misc_set_alignment (GTK_MISC (load_graph_get_labels(mem_graph)->swapused ),*/
 				0.0,
 				0.5);
 	gtk_table_attach (GTK_TABLE (table),
-			  load_graph_get_labels(mem_graph)->swapused,
+			  label2,
 			  2,
 			  3,
 			  1,
@@ -425,16 +479,24 @@ create_sys_view (ProcData *procdata)
 			  0,
 			  0);
 			  
-	label = gtk_label_new (_("of"));
-	gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
-	gtk_table_attach (GTK_TABLE (table), label, 3, 4, 1, 2, GTK_FILL, GTK_FILL, 0, 0);
-	
-
-	gtk_misc_set_alignment (GTK_MISC (load_graph_get_labels(mem_graph)->swaptotal),
+	/* in order to support accessibility, add the relationship between label and button */			  
+	label3 = gtk_label_new (_("of"));
+	label3Widget = gtk_widget_get_accessible (label3);
+	atk_object_add_relationship (label3Widget,ATK_RELATION_LABEL_FOR,colorWidget);
+	gtk_misc_set_alignment (GTK_MISC (label3), 0.0, 0.5);
+	gtk_table_attach (GTK_TABLE (table), label3, 3, 4, 1, 2, GTK_FILL, GTK_FILL, 0, 0);	
+
+	/* in order to support accessibility, and to promote performance and readable, 
+	   let's call the load_graph_get_labels() only once here */		
+	label4 = load_graph_get_labels(mem_graph)->swaptotal;
+	label4Widget = gtk_widget_get_accessible (label4);
+	atk_object_add_relationship (label4Widget,ATK_RELATION_LABEL_FOR,colorWidget);
+	gtk_misc_set_alignment (GTK_MISC (label4),
+/*	gtk_misc_set_alignment (GTK_MISC (load_graph_get_labels(mem_graph)->swaptotal),*/
 				0.0,
 				0.5);
 	gtk_table_attach (GTK_TABLE (table),
-			  load_graph_get_labels(mem_graph)->swaptotal,
+			  label4,
 			  4,
 			  5,
 			  1,
@@ -445,7 +507,7 @@ create_sys_view (ProcData *procdata)
 			  0);
 
 
-	gtk_misc_set_alignment (GTK_MISC (load_graph_get_labels(mem_graph)->swappercent),
+	gtk_misc_set_alignment (GTK_MISC (label5),
 				1.0,
 				0.5);
 	gtk_table_attach (GTK_TABLE (table),
@@ -458,6 +520,13 @@ create_sys_view (ProcData *procdata)
 			  GTK_FILL,
 			  0,
 			  0);
+	/* in order to support accessibility, add the relationship between button and label */
+	atk_object_add_relationship (colorWidget, ATK_RELATION_LABELLED_BY ,label1Widget);
+	atk_object_add_relationship (colorWidget, ATK_RELATION_LABELLED_BY ,label2Widget);
+	atk_object_add_relationship (colorWidget, ATK_RELATION_LABELLED_BY ,label3Widget);
+	atk_object_add_relationship (colorWidget, ATK_RELATION_LABELLED_BY ,label4Widget);
+	atk_object_add_relationship (colorWidget, ATK_RELATION_LABELLED_BY ,label5Widget);
+/* Draw Network */
 
 	procdata->mem_graph = mem_graph;
 
@@ -493,11 +562,15 @@ create_sys_view (ProcData *procdata)
 
 	color_picker = gtk_color_button_new_with_color (
 		&load_graph_get_colors(net_graph)[2]);
+	colorWidget = gtk_widget_get_accessible (color_picker);
 	g_signal_connect (G_OBJECT (color_picker), "color_set",
 			    G_CALLBACK (cb_net_in_color_changed), procdata);
 	gtk_table_attach (GTK_TABLE (table), color_picker, 0, 1, 0, 1, GTK_FILL, GTK_FILL, 0, 0);
 
 	label = gtk_label_new (_("Received:"));
+	/* in order to support accessibility, add the relationship between label and button */
+	label1Widget = gtk_widget_get_accessible (label);
+	atk_object_add_relationship (label1Widget,ATK_RELATION_LABEL_FOR,colorWidget);
 	gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
 	gtk_table_attach (GTK_TABLE (table), label, 1, 2, 0, 1, GTK_FILL, GTK_FILL, 0, 0);
 
@@ -506,26 +579,41 @@ create_sys_view (ProcData *procdata)
 			  G_CALLBACK(size_request), &net_size);
 
 
-	gtk_misc_set_alignment (GTK_MISC (load_graph_get_labels(net_graph)->net_in),
+	/* in order to support accessibility, and to promote performance and readable, 
+	   let's call the load_graph_get_labels() only once here */		
+	label2 = load_graph_get_labels(net_graph)->net_in;
+	label2Widget = gtk_widget_get_accessible (label2);
+	atk_object_add_relationship (label2Widget,ATK_RELATION_LABEL_FOR,colorWidget);
+	gtk_misc_set_alignment (GTK_MISC (label2),
+/*	gtk_misc_set_alignment (GTK_MISC (load_graph_get_labels(net_graph)->net_in),*/
 				0.0,
 				0.5);
 	gtk_box_pack_start (GTK_BOX (hbox),
-			    load_graph_get_labels(net_graph)->net_in,
+			    label2,
 			    FALSE,
 			    FALSE,
 			    0);
 
 	gtk_table_attach (GTK_TABLE (table), hbox, 2, 3, 0, 1, GTK_FILL, GTK_FILL, 0, 0);
 
-	label = gtk_label_new (_("Total:"));
-	gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
-	gtk_table_attach (GTK_TABLE (table), label, 3, 4, 0, 1, GTK_FILL, GTK_FILL, 0, 0);
-
-	gtk_misc_set_alignment (GTK_MISC (load_graph_get_labels(net_graph)->net_in_total),
+	/* in order to support accessibility, add the relationship between label and button */			  
+	label3 = gtk_label_new (_("Total:"));
+	label3Widget = gtk_widget_get_accessible (label3);
+	atk_object_add_relationship (label3Widget,ATK_RELATION_LABEL_FOR,colorWidget);
+	gtk_misc_set_alignment (GTK_MISC (label3), 0.0, 0.5);
+	gtk_table_attach (GTK_TABLE (table), label3, 3, 4, 0, 1, GTK_FILL, GTK_FILL, 0, 0);
+
+	/* in order to support accessibility, and to promote performance and readable, 
+	   let's call the load_graph_get_labels() only once here */		
+	label4 = load_graph_get_labels(net_graph)->net_in_total;
+	label4Widget = gtk_widget_get_accessible (label4);
+	atk_object_add_relationship (label4Widget,ATK_RELATION_LABEL_FOR,colorWidget);
+	gtk_misc_set_alignment (GTK_MISC (label4),
+/*	gtk_misc_set_alignment (GTK_MISC (load_graph_get_labels(net_graph)->net_in_total),*/
 				0.0,
 				0.5);
 	gtk_table_attach (GTK_TABLE (table),
-			  load_graph_get_labels(net_graph)->net_in_total,
+			  label4,
 			  4,
 			  5,
 			  0,
@@ -534,14 +622,24 @@ create_sys_view (ProcData *procdata)
 			  GTK_FILL,
 			  0,
 			  0);
+			  
+	/* in order to support accessibility, add the relationship between button and label */
+	atk_object_add_relationship (colorWidget, ATK_RELATION_LABELLED_BY ,label1Widget);
+	atk_object_add_relationship (colorWidget, ATK_RELATION_LABELLED_BY ,label2Widget);
+	atk_object_add_relationship (colorWidget, ATK_RELATION_LABELLED_BY ,label3Widget);
+	atk_object_add_relationship (colorWidget, ATK_RELATION_LABELLED_BY ,label4Widget);
 
 	color_picker = gtk_color_button_new_with_color (
 		&load_graph_get_colors(net_graph)[3]);
+	colorWidget = gtk_widget_get_accessible (color_picker);
 	g_signal_connect (G_OBJECT (color_picker), "color_set",
 			    G_CALLBACK (cb_net_out_color_changed), procdata);
 	gtk_table_attach (GTK_TABLE (table), color_picker, 0, 1, 1, 2, GTK_FILL, GTK_FILL, 0, 0);
 
 	label = gtk_label_new (_("Sent:"));
+	/* in order to support accessibility, add the relationship between label and button */
+	label1Widget = gtk_widget_get_accessible (label);
+	atk_object_add_relationship (label1Widget,ATK_RELATION_LABEL_FOR,colorWidget);
 	gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
 	gtk_table_attach (GTK_TABLE (table), label, 1, 2, 1, 2, GTK_FILL, GTK_FILL, 0, 0);
 
@@ -549,26 +647,41 @@ create_sys_view (ProcData *procdata)
 	g_signal_connect (G_OBJECT (hbox), "size_request",
 			  G_CALLBACK(size_request), &net_size);
 
-	gtk_misc_set_alignment (GTK_MISC (load_graph_get_labels(net_graph)->net_out),
+	/* in order to support accessibility, and to promote performance and readable, 
+	   let's call the load_graph_get_labels() only once here */		
+	label2 = load_graph_get_labels(net_graph)->net_out;
+	label2Widget = gtk_widget_get_accessible (label2);
+	atk_object_add_relationship (label2Widget,ATK_RELATION_LABEL_FOR,colorWidget);
+	gtk_misc_set_alignment (GTK_MISC (label2),
+/*	gtk_misc_set_alignment (GTK_MISC (load_graph_get_labels(net_graph)->net_out),*/
 				0.0,
 				0.5);
 	gtk_box_pack_start (GTK_BOX (hbox),
-			    load_graph_get_labels(net_graph)->net_out,
+			    label2,
 			    FALSE,
 			    FALSE,
 			    0);
 
 	gtk_table_attach (GTK_TABLE (table), hbox, 2, 3, 1, 2, GTK_FILL, GTK_FILL, 0, 0);
 
-	label = gtk_label_new (_("Total:"));
-	gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
-	gtk_table_attach (GTK_TABLE (table), label, 3, 4, 1, 2, GTK_FILL, GTK_FILL, 0, 0);
-
-	gtk_misc_set_alignment (GTK_MISC (load_graph_get_labels(net_graph)->net_out_total),
+	/* in order to support accessibility, add the relationship between label and button */			  
+	label3 = gtk_label_new (_("Total:"));
+	label3Widget = gtk_widget_get_accessible (label3);
+	atk_object_add_relationship (label3Widget,ATK_RELATION_LABEL_FOR,colorWidget);
+	gtk_misc_set_alignment (GTK_MISC (label3), 0.0, 0.5);
+	gtk_table_attach (GTK_TABLE (table), label3, 3, 4, 1, 2, GTK_FILL, GTK_FILL, 0, 0);
+
+	/* in order to support accessibility, and to promote performance and readable, 
+	   let's call the load_graph_get_labels() only once here */		
+	label4 = load_graph_get_labels(net_graph)->net_out_total;
+	label4Widget = gtk_widget_get_accessible (label4);
+	atk_object_add_relationship (label4Widget,ATK_RELATION_LABEL_FOR,colorWidget);
+	gtk_misc_set_alignment (GTK_MISC (label4),
+/*	gtk_misc_set_alignment (GTK_MISC (load_graph_get_labels(net_graph)->net_out_total),*/
 				0.0,
 				0.5);
 	gtk_table_attach (GTK_TABLE (table),
-			  load_graph_get_labels(net_graph)->net_out_total,
+			  label4,
 			  4,
 			  5,
 			  1,
@@ -578,6 +691,12 @@ create_sys_view (ProcData *procdata)
 			  0,
 			  0);
 
+	/* in order to support accessibility, add the relationship between button and label */
+	atk_object_add_relationship (colorWidget, ATK_RELATION_LABELLED_BY ,label1Widget);
+	atk_object_add_relationship (colorWidget, ATK_RELATION_LABELLED_BY ,label2Widget);
+	atk_object_add_relationship (colorWidget, ATK_RELATION_LABELLED_BY ,label3Widget);
+	atk_object_add_relationship (colorWidget, ATK_RELATION_LABELLED_BY ,label4Widget);
+
 	procdata->net_graph = net_graph;
 
 
