window: Replace barely used macros with func equivalents

To avoid mostly going through struct fields in macros as we might soon
move those first to a WindowConfiguration & maybe even make the window
struct private with time.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4111>
This commit is contained in:
Bilal Elmoussaoui
2024-10-28 09:44:40 +01:00
parent dabc13f7b8
commit 8e5433d82a
10 changed files with 88 additions and 58 deletions

View File

@ -485,7 +485,7 @@ apply_edge_resistance_to_each_side (MetaEdgeResistanceData *edge_data,
auto_snap = flags & META_EDGE_RESISTANCE_SNAP; auto_snap = flags & META_EDGE_RESISTANCE_SNAP;
keyboard_op = flags & META_EDGE_RESISTANCE_KEYBOARD_OP; keyboard_op = flags & META_EDGE_RESISTANCE_KEYBOARD_OP;
if (auto_snap && !META_WINDOW_TILED_SIDE_BY_SIDE (window)) if (auto_snap && !meta_window_is_tiled_side_by_side (window))
{ {
/* Do the auto snapping instead of normal edge resistance; in all /* Do the auto snapping instead of normal edge resistance; in all
* cases, we allow snapping to opposite kinds of edges (e.g. left * cases, we allow snapping to opposite kinds of edges (e.g. left
@ -520,7 +520,7 @@ apply_edge_resistance_to_each_side (MetaEdgeResistanceData *edge_data,
FALSE, FALSE,
keyboard_op); keyboard_op);
} }
else if (auto_snap && META_WINDOW_TILED_SIDE_BY_SIDE (window)) else if (auto_snap && meta_window_is_tiled_side_by_side (window))
{ {
MtkRectangle workarea; MtkRectangle workarea;
guint i; guint i;

View File

@ -102,12 +102,12 @@ update_tile_preview_timeout (MetaWindowDrag *window_drag)
{ {
case META_TILE_LEFT: case META_TILE_LEFT:
case META_TILE_RIGHT: case META_TILE_RIGHT:
if (!META_WINDOW_TILED_SIDE_BY_SIDE (window)) if (!meta_window_is_tiled_side_by_side (window))
needs_preview = TRUE; needs_preview = TRUE;
break; break;
case META_TILE_MAXIMIZED: case META_TILE_MAXIMIZED:
if (!META_WINDOW_MAXIMIZED (window)) if (!meta_window_is_maximized (window))
needs_preview = TRUE; needs_preview = TRUE;
break; break;
@ -1247,8 +1247,8 @@ update_move (MetaWindowDrag *window_drag,
window->tile_monitor_number = -1; window->tile_monitor_number = -1;
} }
else if (meta_prefs_get_edge_tiling () && else if (meta_prefs_get_edge_tiling () &&
!META_WINDOW_MAXIMIZED (window) && !meta_window_is_maximized (window) &&
!META_WINDOW_TILED_SIDE_BY_SIDE (window)) !meta_window_is_tiled_side_by_side (window))
{ {
update_move_maybe_tile (window_drag, shake_threshold, x, y); update_move_maybe_tile (window_drag, shake_threshold, x, y);
} }
@ -1258,8 +1258,9 @@ update_move (MetaWindowDrag *window_drag,
* loose via X motion. * loose via X motion.
*/ */
if ((META_WINDOW_MAXIMIZED (window) && ABS (dy) >= shake_threshold) || if ((meta_window_is_maximized (window) && ABS (dy) >= shake_threshold) ||
(META_WINDOW_TILED_SIDE_BY_SIDE (window) && (MAX (ABS (dx), ABS (dy)) >= shake_threshold))) (meta_window_is_tiled_side_by_side (window) &&
(MAX (ABS (dx), ABS (dy)) >= shake_threshold)))
{ {
double prop; double prop;
@ -1294,7 +1295,7 @@ update_move (MetaWindowDrag *window_drag,
/* remaximize window on another monitor if window has been shaken /* remaximize window on another monitor if window has been shaken
* loose or it is still maximized (then move straight) * loose or it is still maximized (then move straight)
*/ */
else if ((window_drag->shaken_loose || META_WINDOW_MAXIMIZED (window)) && else if ((window_drag->shaken_loose || meta_window_is_maximized (window)) &&
window->tile_mode != META_TILE_LEFT && window->tile_mode != META_TILE_RIGHT) window->tile_mode != META_TILE_LEFT && window->tile_mode != META_TILE_RIGHT)
{ {
MetaDisplay *display = meta_window_get_display (window); MetaDisplay *display = meta_window_get_display (window);
@ -1368,7 +1369,7 @@ update_move (MetaWindowDrag *window_drag,
meta_window_get_frame_rect (window, &old); meta_window_get_frame_rect (window, &old);
/* Don't allow movement in the maximized directions or while tiled */ /* Don't allow movement in the maximized directions or while tiled */
if (window->maximized_horizontally || META_WINDOW_TILED_SIDE_BY_SIDE (window)) if (window->maximized_horizontally || meta_window_is_tiled_side_by_side (window))
new_x = old.x; new_x = old.x;
if (window->maximized_vertically) if (window->maximized_vertically)
new_y = old.y; new_y = old.y;
@ -1599,7 +1600,7 @@ maybe_maximize_tiled_window (MetaWindow *window)
MtkRectangle work_area; MtkRectangle work_area;
gint shake_threshold; gint shake_threshold;
if (!META_WINDOW_TILED_SIDE_BY_SIDE (window)) if (!meta_window_is_tiled_side_by_side (window))
return; return;
shake_threshold = meta_prefs_get_drag_threshold (); shake_threshold = meta_prefs_get_drag_threshold ();

View File

@ -1217,15 +1217,16 @@ constrain_maximization (MetaWindow *window,
/* Determine whether constraint applies; exit if it doesn't */ /* Determine whether constraint applies; exit if it doesn't */
if ((!window->maximized_horizontally && !window->maximized_vertically) || if ((!window->maximized_horizontally && !window->maximized_vertically) ||
META_WINDOW_TILED_SIDE_BY_SIDE (window)) meta_window_is_tiled_side_by_side (window))
return TRUE; return TRUE;
/* Calculate target_size = maximized size of (window + frame) */ /* Calculate target_size = maximized size of (window + frame) */
if (META_WINDOW_TILED_MAXIMIZED (window)) if (meta_window_is_maximized (window) &&
window->tile_mode == META_TILE_MAXIMIZED)
{ {
meta_window_get_tile_area (window, window->tile_mode, &target_size); meta_window_get_tile_area (window, window->tile_mode, &target_size);
} }
else if (META_WINDOW_MAXIMIZED (window)) else if (meta_window_is_maximized (window))
{ {
target_size = info->work_area_monitor; target_size = info->work_area_monitor;
} }
@ -1304,7 +1305,7 @@ constrain_tiling (MetaWindow *window,
return TRUE; return TRUE;
/* Determine whether constraint applies; exit if it doesn't */ /* Determine whether constraint applies; exit if it doesn't */
if (!META_WINDOW_TILED_SIDE_BY_SIDE (window)) if (!meta_window_is_tiled_side_by_side (window))
return TRUE; return TRUE;
/* Calculate target_size - as the tile previews need this as well, we /* Calculate target_size - as the tile previews need this as well, we
@ -1391,8 +1392,8 @@ constrain_size_increments (MetaWindow *window,
return TRUE; return TRUE;
/* Determine whether constraint applies; exit if it doesn't */ /* Determine whether constraint applies; exit if it doesn't */
if (META_WINDOW_MAXIMIZED (window) || window->fullscreen || if (meta_window_is_maximized (window) || window->fullscreen ||
META_WINDOW_TILED_SIDE_BY_SIDE (window) || meta_window_is_tiled_side_by_side (window) ||
info->action_type == ACTION_MOVE) info->action_type == ACTION_MOVE)
return TRUE; return TRUE;
@ -1522,8 +1523,8 @@ constrain_aspect_ratio (MetaWindow *window,
(double)window->size_hints.max_aspect.y; (double)window->size_hints.max_aspect.y;
constraints_are_inconsistent = minr > maxr; constraints_are_inconsistent = minr > maxr;
if (constraints_are_inconsistent || if (constraints_are_inconsistent ||
META_WINDOW_MAXIMIZED (window) || window->fullscreen || meta_window_is_maximized (window) || window->fullscreen ||
META_WINDOW_TILED_SIDE_BY_SIDE (window) || meta_window_is_tiled_side_by_side (window) ||
info->action_type == ACTION_MOVE) info->action_type == ACTION_MOVE)
return TRUE; return TRUE;

View File

@ -2203,8 +2203,8 @@ handle_toggle_tiled (MetaDisplay *display,
{ {
MetaTileMode mode = binding->handler->data; MetaTileMode mode = binding->handler->data;
if ((META_WINDOW_TILED_LEFT (window) && mode == META_TILE_LEFT) || if ((meta_window_is_tiled_left (window) && mode == META_TILE_LEFT) ||
(META_WINDOW_TILED_RIGHT (window) && mode == META_TILE_RIGHT)) (meta_window_is_tiled_right (window) && mode == META_TILE_RIGHT))
{ {
meta_window_untile (window); meta_window_untile (window);
} }
@ -2229,7 +2229,7 @@ handle_toggle_maximized (MetaDisplay *display,
MetaKeyBinding *binding, MetaKeyBinding *binding,
gpointer user_data) gpointer user_data)
{ {
if (META_WINDOW_MAXIMIZED (window)) if (meta_window_is_maximized (window))
meta_window_unmaximize (window, META_MAXIMIZE_BOTH); meta_window_unmaximize (window, META_MAXIMIZE_BOTH);
else if (window->has_maximize_func) else if (window->has_maximize_func)
meta_window_maximize (window, META_MAXIMIZE_BOTH); meta_window_maximize (window, META_MAXIMIZE_BOTH);

View File

@ -630,29 +630,6 @@ struct _MetaWindowClass
MtkRoundingStrategy rounding_strategy); MtkRoundingStrategy rounding_strategy);
}; };
/* These differ from window->has_foo_func in that they consider
* the dynamic window state such as "maximized", not just the
* window's type
*/
#define META_WINDOW_MAXIMIZED(w) ((w)->maximized_horizontally && \
(w)->maximized_vertically)
#define META_WINDOW_MAXIMIZED_VERTICALLY(w) ((w)->maximized_vertically)
#define META_WINDOW_MAXIMIZED_HORIZONTALLY(w) ((w)->maximized_horizontally)
#define META_WINDOW_TILED_SIDE_BY_SIDE(w) ((w)->maximized_vertically && \
!(w)->maximized_horizontally && \
(w)->tile_mode != META_TILE_NONE)
#define META_WINDOW_TILED_LEFT(w) (META_WINDOW_TILED_SIDE_BY_SIDE(w) && \
(w)->tile_mode == META_TILE_LEFT)
#define META_WINDOW_TILED_RIGHT(w) (META_WINDOW_TILED_SIDE_BY_SIDE(w) && \
(w)->tile_mode == META_TILE_RIGHT)
#define META_WINDOW_TILED_MAXIMIZED(w)(META_WINDOW_MAXIMIZED(w) && \
(w)->tile_mode == META_TILE_MAXIMIZED)
#define META_WINDOW_ALLOWS_MOVE(w) ((w)->has_move_func && !(w)->fullscreen)
#define META_WINDOW_ALLOWS_RESIZE_EXCEPT_HINTS(w) ((w)->has_resize_func && !META_WINDOW_MAXIMIZED (w) && !(w)->fullscreen)
#define META_WINDOW_ALLOWS_RESIZE(w) (META_WINDOW_ALLOWS_RESIZE_EXCEPT_HINTS (w) && \
(((w)->size_hints.min_width < (w)->size_hints.max_width) || \
((w)->size_hints.min_height < (w)->size_hints.max_height)))
void meta_window_unmanage (MetaWindow *window, void meta_window_unmanage (MetaWindow *window,
guint32 timestamp); guint32 timestamp);
void meta_window_queue (MetaWindow *window, void meta_window_queue (MetaWindow *window,
@ -909,3 +886,11 @@ void meta_window_protocol_to_stage_point (MetaWindow *window,
int *stage_x, int *stage_x,
int *stage_y, int *stage_y,
MtkRoundingStrategy rounding_strategy); MtkRoundingStrategy rounding_strategy);
gboolean meta_window_is_maximized (MetaWindow *window);
gboolean meta_window_is_tiled_side_by_side (MetaWindow *window);
gboolean meta_window_is_tiled_left (MetaWindow *window);
gboolean meta_window_is_tiled_right (MetaWindow *window);

View File

@ -2695,7 +2695,7 @@ ensure_size_hints_satisfied (MtkRectangle *rect,
static void static void
meta_window_save_rect (MetaWindow *window) meta_window_save_rect (MetaWindow *window)
{ {
if (!(META_WINDOW_MAXIMIZED (window) || META_WINDOW_TILED_SIDE_BY_SIDE (window) || window->fullscreen)) if (!(meta_window_is_maximized (window) || meta_window_is_tiled_side_by_side (window) || window->fullscreen))
{ {
/* save size/pos as appropriate args for move_resize */ /* save size/pos as appropriate args for move_resize */
if (!window->maximized_horizontally) if (!window->maximized_horizontally)
@ -2837,6 +2837,18 @@ meta_window_get_maximized (MetaWindow *window)
(window->maximized_vertically ? META_MAXIMIZE_VERTICAL : 0)); (window->maximized_vertically ? META_MAXIMIZE_VERTICAL : 0));
} }
/**
* meta_window_is_maximized:
* @window: a #MetaWindow
*
* Return value: %TRUE if the window is maximized vertically and horizontally.
*/
gboolean
meta_window_is_maximized (MetaWindow *window)
{
return (window->maximized_horizontally && window->maximized_vertically);
}
/** /**
* meta_window_is_fullscreen: * meta_window_is_fullscreen:
* @window: a #MetaWindow * @window: a #MetaWindow
@ -2937,7 +2949,7 @@ meta_window_get_tile_fraction (MetaWindow *window,
*fraction = 1.; *fraction = 1.;
else if (tile_match) else if (tile_match)
*fraction = 1. - tile_match->tile_hfraction; *fraction = 1. - tile_match->tile_hfraction;
else if (META_WINDOW_TILED_SIDE_BY_SIDE (window)) else if (meta_window_is_tiled_side_by_side (window))
{ {
if (window->tile_mode != tile_mode) if (window->tile_mode != tile_mode)
*fraction = 1. - window->tile_hfraction; *fraction = 1. - window->tile_hfraction;
@ -2957,7 +2969,7 @@ meta_window_update_tile_fraction (MetaWindow *window,
MtkRectangle work_area; MtkRectangle work_area;
MetaWindowDrag *window_drag; MetaWindowDrag *window_drag;
if (!META_WINDOW_TILED_SIDE_BY_SIDE (window)) if (!meta_window_is_tiled_side_by_side (window))
return; return;
meta_window_get_work_area_for_monitor (window, meta_window_get_work_area_for_monitor (window,
@ -3031,6 +3043,28 @@ update_edge_constraints (MetaWindow *window)
} }
} }
gboolean
meta_window_is_tiled_side_by_side (MetaWindow *window)
{
return window->maximized_vertically &&
!window->maximized_horizontally &&
window->tile_mode != META_TILE_NONE;
}
gboolean
meta_window_is_tiled_left (MetaWindow *window)
{
return window->tile_mode == META_TILE_LEFT &&
meta_window_is_tiled_side_by_side (window);
}
gboolean
meta_window_is_tiled_right (MetaWindow *window)
{
return window->tile_mode == META_TILE_RIGHT &&
meta_window_is_tiled_side_by_side (window);
}
void void
meta_window_untile (MetaWindow *window) meta_window_untile (MetaWindow *window)
{ {
@ -4269,7 +4303,7 @@ adjust_size_for_tile_match (MetaWindow *window,
MtkRectangle work_area, rect; MtkRectangle work_area, rect;
MetaWindow *tile_match = window->tile_match; MetaWindow *tile_match = window->tile_match;
if (!META_WINDOW_TILED_SIDE_BY_SIDE (window) || !tile_match) if (!meta_window_is_tiled_side_by_side (window) || !tile_match)
return; return;
meta_window_get_work_area_for_monitor (window, window->tile_monitor_number, &work_area); meta_window_get_work_area_for_monitor (window, window->tile_monitor_number, &work_area);
@ -6077,7 +6111,7 @@ meta_window_get_default_layer (MetaWindow *window)
{ {
if (window->wm_state_below) if (window->wm_state_below)
return META_LAYER_BOTTOM; return META_LAYER_BOTTOM;
else if (window->wm_state_above && !META_WINDOW_MAXIMIZED (window)) else if (window->wm_state_above && !meta_window_is_maximized (window))
return META_LAYER_TOP; return META_LAYER_TOP;
else if (window->type == META_WINDOW_DESKTOP) else if (window->type == META_WINDOW_DESKTOP)
return META_LAYER_DESKTOP; return META_LAYER_DESKTOP;
@ -7476,13 +7510,22 @@ meta_window_is_above (MetaWindow *window)
gboolean gboolean
meta_window_allows_move (MetaWindow *window) meta_window_allows_move (MetaWindow *window)
{ {
return META_WINDOW_ALLOWS_MOVE (window); return window->has_move_func && !meta_window_is_fullscreen (window);
} }
gboolean gboolean
meta_window_allows_resize (MetaWindow *window) meta_window_allows_resize (MetaWindow *window)
{ {
return META_WINDOW_ALLOWS_RESIZE (window); gboolean allows_resize_except_hints, allows_resize;
allows_resize_except_hints = window->has_resize_func &&
!meta_window_is_maximized (window) &&
!meta_window_is_fullscreen (window);
allows_resize = allows_resize_except_hints &&
(window->size_hints.min_width < window->size_hints.max_width ||
window->size_hints.min_height < window->size_hints.max_height);
return allows_resize;
} }
void void

View File

@ -261,7 +261,7 @@ gtk_surface_titlebar_gesture (struct wl_client *client,
if (!window->has_maximize_func) if (!window->has_maximize_func)
break; break;
if (META_WINDOW_MAXIMIZED (window)) if (meta_window_is_maximized (window))
meta_window_unmaximize (window, META_MAXIMIZE_BOTH); meta_window_unmaximize (window, META_MAXIMIZE_BOTH);
else else
meta_window_maximize (window, META_MAXIMIZE_BOTH); meta_window_maximize (window, META_MAXIMIZE_BOTH);
@ -271,7 +271,7 @@ gtk_surface_titlebar_gesture (struct wl_client *client,
if (!window->has_maximize_func) if (!window->has_maximize_func)
break; break;
if (META_WINDOW_MAXIMIZED_HORIZONTALLY (window)) if (meta_window_get_maximized (window) & META_MAXIMIZE_HORIZONTAL)
meta_window_unmaximize (window, META_MAXIMIZE_HORIZONTAL); meta_window_unmaximize (window, META_MAXIMIZE_HORIZONTAL);
else else
meta_window_maximize (window, META_MAXIMIZE_HORIZONTAL); meta_window_maximize (window, META_MAXIMIZE_HORIZONTAL);
@ -281,7 +281,7 @@ gtk_surface_titlebar_gesture (struct wl_client *client,
if (!window->has_maximize_func) if (!window->has_maximize_func)
break; break;
if (META_WINDOW_MAXIMIZED_VERTICALLY (window)) if (meta_window_get_maximized (window) & META_MAXIMIZE_VERTICAL)
meta_window_unmaximize (window, META_MAXIMIZE_VERTICAL); meta_window_unmaximize (window, META_MAXIMIZE_VERTICAL);
else else
meta_window_maximize (window, META_MAXIMIZE_VERTICAL); meta_window_maximize (window, META_MAXIMIZE_VERTICAL);

View File

@ -722,7 +722,7 @@ fill_states (MetaWaylandXdgToplevel *xdg_toplevel,
window_drag = window_drag =
meta_compositor_get_current_window_drag (window->display->compositor); meta_compositor_get_current_window_drag (window->display->compositor);
if (META_WINDOW_MAXIMIZED (window)) if (meta_window_is_maximized (window))
add_state_value (states, XDG_TOPLEVEL_STATE_MAXIMIZED); add_state_value (states, XDG_TOPLEVEL_STATE_MAXIMIZED);
if (meta_window_is_fullscreen (window)) if (meta_window_is_fullscreen (window))
add_state_value (states, XDG_TOPLEVEL_STATE_FULLSCREEN); add_state_value (states, XDG_TOPLEVEL_STATE_FULLSCREEN);

View File

@ -397,7 +397,7 @@ meta_window_wayland_move_resize_internal (MetaWindow *window,
int bounds_height; int bounds_height;
if (!meta_wayland_surface_get_buffer (wl_window->surface) && if (!meta_wayland_surface_get_buffer (wl_window->surface) &&
!META_WINDOW_MAXIMIZED (window) && !meta_window_is_maximized (window) &&
window->tile_mode == META_TILE_NONE && window->tile_mode == META_TILE_NONE &&
!meta_window_is_fullscreen (window)) !meta_window_is_fullscreen (window))
return; return;

View File

@ -1029,7 +1029,7 @@ save_state (MetaContext *context)
fputs (" <minimized/>\n", outfile); fputs (" <minimized/>\n", outfile);
/* Maximized */ /* Maximized */
if (META_WINDOW_MAXIMIZED (window)) if (meta_window_is_maximized (window))
{ {
fprintf (outfile, fprintf (outfile,
" <maximized saved_x=\"%d\" saved_y=\"%d\" saved_width=\"%d\" saved_height=\"%d\"/>\n", " <maximized saved_x=\"%d\" saved_y=\"%d\" saved_width=\"%d\" saved_height=\"%d\"/>\n",