diff --git a/core/cog-view.c b/core/cog-view.c index 05bb5973..3927b9f2 100644 --- a/core/cog-view.c +++ b/core/cog-view.c @@ -454,3 +454,23 @@ cog_view_get_viewport(CogView *self) g_return_val_if_fail(COG_IS_VIEW(self), NULL); return g_weak_ref_get(&((CogViewPrivate *) cog_view_get_instance_private(self))->viewport); } + +/** + * cog_view_is_visible: + * @self: A view. + * + * Gets whether the view is visible in a viewport. + * + * Returns: True if the view is visible in its viewport and false in any + * other case. + * + * Since: 0.20 + */ +gboolean +cog_view_is_visible(CogView *self) +{ + g_return_val_if_fail(COG_IS_VIEW(self), false); + + g_autoptr(CogViewport) viewport = cog_view_get_viewport(self); + return viewport && self == cog_viewport_get_visible_view(viewport); +} diff --git a/core/cog-view.h b/core/cog-view.h index 5baa86f9..0f993b20 100644 --- a/core/cog-view.h +++ b/core/cog-view.h @@ -55,4 +55,7 @@ gboolean cog_view_get_use_key_bindings(CogView *self); COG_API CogViewport *cog_view_get_viewport(CogView *self); +COG_API +gboolean cog_view_is_visible(CogView *self); + G_END_DECLS