diff --git a/src/core/window.c b/src/core/window.c index b12b1f7e2..e4a8ddc4e 100644 --- a/src/core/window.c +++ b/src/core/window.c @@ -3646,6 +3646,39 @@ meta_window_is_fullscreen (MetaWindow *window) return window->fullscreen; } +/** + * meta_window_is_monitor_sized: + * + * Return value: %TRUE if the window is occupies an entire monitor or + * the whole screen. + */ +gboolean +meta_window_is_monitor_sized (MetaWindow *window) +{ + if (window->fullscreen) + return TRUE; + + if (window->override_redirect) + { + MetaRectangle window_rect, monitor_rect; + int screen_width, screen_height; + + meta_screen_get_size (window->screen, &screen_width, &screen_height); + meta_window_get_outer_rect (window, &window_rect); + + if (window_rect.x == 0 && window_rect.y == 0 && + window_rect.width == screen_width && window_rect.height == screen_height) + return TRUE; + + meta_screen_get_monitor_geometry (window->screen, window->monitor->number, &monitor_rect); + + if (meta_rectangle_equal (&window_rect, &monitor_rect)) + return TRUE; + } + + return FALSE; +} + /** * meta_window_is_on_primary_monitor: * diff --git a/src/meta/window.h b/src/meta/window.h index 87368c081..9814f47e6 100644 --- a/src/meta/window.h +++ b/src/meta/window.h @@ -141,6 +141,7 @@ void meta_window_foreach_ancestor (MetaWindow *window, MetaMaximizeFlags meta_window_get_maximized (MetaWindow *window); gboolean meta_window_is_fullscreen (MetaWindow *window); +gboolean meta_window_is_monitor_sized (MetaWindow *window); gboolean meta_window_is_on_primary_monitor (MetaWindow *window); gboolean meta_window_requested_bypass_compositor (MetaWindow *window); gboolean meta_window_requested_dont_bypass_compositor (MetaWindow *window);