mirror of
https://github.com/brl/mutter.git
synced 2024-12-24 12:02:04 +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;
|
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:
|
* meta_window_get_outer_rect:
|
||||||
* @window: a #MetaWindow
|
* @window: a #MetaWindow
|
||||||
* @rect: (out): pointer to an allocated #MetaRectangle
|
* @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
|
void
|
||||||
meta_window_get_outer_rect (const MetaWindow *window,
|
meta_window_get_outer_rect (const MetaWindow *window,
|
||||||
MetaRectangle *rect)
|
MetaRectangle *rect)
|
||||||
{
|
{
|
||||||
if (window->frame)
|
if (window->frame)
|
||||||
|
{
|
||||||
|
MetaFrameBorders borders;
|
||||||
*rect = window->frame->rect;
|
*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
|
else
|
||||||
*rect = window->rect;
|
*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_override_redirect (MetaWindow *window);
|
||||||
gboolean meta_window_is_skip_taskbar (MetaWindow *window);
|
gboolean meta_window_is_skip_taskbar (MetaWindow *window);
|
||||||
MetaRectangle *meta_window_get_rect (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);
|
void meta_window_get_outer_rect (const MetaWindow *window, MetaRectangle *rect);
|
||||||
MetaScreen *meta_window_get_screen (MetaWindow *window);
|
MetaScreen *meta_window_get_screen (MetaWindow *window);
|
||||||
MetaDisplay *meta_window_get_display (MetaWindow *window);
|
MetaDisplay *meta_window_get_display (MetaWindow *window);
|
||||||
|
Loading…
Reference in New Issue
Block a user