Check in walker if current page is descendant

It seems to me, you are trying to get the ancestors by the actual post, while you most likely should get the ancestors according to the menu item. Why? Because setting up a hierarchy in the menu does not change the actual post, especially the post_parent property won’t be changed – in short: (other) post type and menu item (which actually is a post type too) related changes are not mutually mimicked.

And, after all you can have hierarchical as well as non-hierarchical post types in one menu, not to mention, all the other types of menu items that can be set. Non-hierarchical post types for example, while they have the post_parent column in the database, there actually isn’t a built-in way to set it, wouldn’t make sense anyway as they are not supposed to have a hierarchy. Not even going into the other kinds here, but to say, many of them not actually even capable – or at least are not intended to have one as they are built – of having a hierarchy – with the exception of being part of a menu, but than – as said – the information is part of the menu, not the item put into the menu.

Last but not least, even if you are working with a hierarchical post type you probably want to get the ancestors by the menu item, because otherwise you would have to mimic the hierarchy between the post type and the menu, meaning you have to do every hierarchy change twice. When your menu solely depends on a hierarchical post type, then you probably should go for a solution that takes that in account and generates your menu according to the hierarchy automatically – to spare you the task of manually doing it, while you could automate it.