diff --git a/pd/src/g_graph.c b/pd/src/g_graph.c
index d1a07d49544cb63062c7d4f2c392f899f4f75793..dad14a6045b6653b8aac1b64cde81b54adddddd7 100644
--- a/pd/src/g_graph.c
+++ b/pd/src/g_graph.c
@@ -1212,7 +1212,7 @@ static void graph_select(t_gobj *z, t_glist *glist, int state)
 
 		t_gobj *g;
 		//fprintf(stderr,"graph_select\n");
-		if (x->gl_list)
+		if (x->gl_list && !glist_istoplevel(x))
 			for (g = x->gl_list; g; g = g->g_next) {
 				//fprintf(stderr,"shouldvis %d\n",gobj_shouldvis(g, x));
 				if ((g && gobj_shouldvis(g, x) && (g->g_pd->c_wb->w_displacefnwtag != NULL) || (g && pd_class((t_pd *)g) == garray_class)))