diff --git a/src/g_editor.c b/src/g_editor.c
index 42ebbb8bb41e3413e4047ccd64f548351541367f..50bd5ca5051ddf09bcb577b7a11a99a7a6dbdc05 100644
--- a/src/g_editor.c
+++ b/src/g_editor.c
@@ -3806,8 +3806,13 @@ static void canvas_find_again(t_canvas *x)
 
 static void canvas_find_parent(t_canvas *x)
 {
-    if (x->gl_owner)
-        canvas_vis(glist_getcanvas(x->gl_owner), 1);
+    if (x->gl_owner) {
+		t_glist *owner = x->gl_owner;
+		while (!glist_isvisible(owner) && owner->gl_owner)
+			owner = owner->gl_owner;
+		if (glist_isvisible(owner))
+			canvas_vis(owner, 1);
+	}
 	else {
 		sys_gui("menu_raise_console;\n");
 	}