mirror of
https://github.com/brl/mutter.git
synced 2024-12-23 19:42:05 +00:00
MetaWindow: Repurpose get_outer_rect and add get_input_rect
get_outer_rect now returns the visible region, and a new get_input_rect method returns the boundaries of the full frame, including the possible invisible regions. When undecorated, both do the samething. https://bugzilla.gnome.org/show_bug.cgi?id=644930
This commit is contained in:
parent
a1a2527c75
commit
a133d8b42e
@ -5157,19 +5157,50 @@ meta_window_get_geometry (MetaWindow *window,
|
||||
window->size_hints.height_inc;
|
||||
}
|
||||
|
||||
/**
|
||||
* meta_window_get_input_rect:
|
||||
* @window: a #MetaWindow
|
||||
* @rect: (out): pointer to an allocated #MetaRectangle
|
||||
*
|
||||
* Gets the rectangle that bounds @window that is responsive to mouse events.
|
||||
* This includes decorations - the visible portion of its border - and (if
|
||||
* present) any invisible area that we make make responsive to mouse clicks in
|
||||
* order to allow convenient border dragging.
|
||||
*/
|
||||
void
|
||||
meta_window_get_input_rect (const MetaWindow *window,
|
||||
MetaRectangle *rect)
|
||||
{
|
||||
if (window->frame)
|
||||
*rect = window->frame->rect;
|
||||
else
|
||||
*rect = window->rect;
|
||||
}
|
||||
|
||||
/**
|
||||
* meta_window_get_outer_rect:
|
||||
* @window: a #MetaWindow
|
||||
* @rect: (out): pointer to an allocated #MetaRectangle
|
||||
*
|
||||
* Gets the rectangle that bounds @window and, if decorated, its decorations.
|
||||
* Gets the rectangle that bounds @window that is responsive to mouse events.
|
||||
* This includes only what is visible; it doesn't include any extra reactive
|
||||
* area we add to the edges of windows.
|
||||
*/
|
||||
void
|
||||
meta_window_get_outer_rect (const MetaWindow *window,
|
||||
MetaRectangle *rect)
|
||||
{
|
||||
if (window->frame)
|
||||
{
|
||||
MetaFrameBorders borders;
|
||||
*rect = window->frame->rect;
|
||||
meta_frame_calc_borders (window->frame, &borders);
|
||||
|
||||
rect->x += borders.invisible.left;
|
||||
rect->y += borders.invisible.top;
|
||||
rect->width -= borders.invisible.left + borders.invisible.right;
|
||||
rect->height -= borders.invisible.top + borders.invisible.bottom;
|
||||
}
|
||||
else
|
||||
*rect = window->rect;
|
||||
}
|
||||
|
@ -75,6 +75,7 @@ gboolean meta_window_is_shaded (MetaWindow *window);
|
||||
gboolean meta_window_is_override_redirect (MetaWindow *window);
|
||||
gboolean meta_window_is_skip_taskbar (MetaWindow *window);
|
||||
MetaRectangle *meta_window_get_rect (MetaWindow *window);
|
||||
void meta_window_get_input_rect (const MetaWindow *window, MetaRectangle *rect);
|
||||
void meta_window_get_outer_rect (const MetaWindow *window, MetaRectangle *rect);
|
||||
MetaScreen *meta_window_get_screen (MetaWindow *window);
|
||||
MetaDisplay *meta_window_get_display (MetaWindow *window);
|
||||
|
Loading…
Reference in New Issue
Block a user