treewide: remove empty statements in switch cases

For longer cases, factor out the logic to new functions.
For very short cases, just move the declaration before the switch.

v2: in one case, replace the switch with if/else.
This commit is contained in:
John Lindgren 2025-05-22 10:53:58 -04:00 committed by Johan Malm
parent fbb92e2e30
commit a3d6226728
5 changed files with 59 additions and 50 deletions

View file

@ -557,6 +557,22 @@ action_list_is_valid(struct wl_list *actions)
return true; return true;
} }
static bool
action_branches_are_valid(struct action *action)
{
static const char * const branches[] = { "then", "else", "none" };
for (size_t i = 0; i < ARRAY_SIZE(branches); i++) {
struct wl_list *children =
action_get_actionlist(action, branches[i]);
if (children && !action_list_is_valid(children)) {
wlr_log(WLR_ERROR, "Invalid action in %s '%s' branch",
action_names[action->type], branches[i]);
return false;
}
}
return true;
}
/* Checks for *required* arguments */ /* Checks for *required* arguments */
bool bool
action_is_valid(struct action *action) action_is_valid(struct action *action)
@ -589,17 +605,7 @@ action_is_valid(struct action *action)
break; break;
case ACTION_TYPE_IF: case ACTION_TYPE_IF:
case ACTION_TYPE_FOR_EACH: case ACTION_TYPE_FOR_EACH:
; /* works around "a label can only be part of a statement" */ return action_branches_are_valid(action);
static const char * const branches[] = { "then", "else", "none" };
for (size_t i = 0; i < ARRAY_SIZE(branches); i++) {
struct wl_list *children = action_get_actionlist(action, branches[i]);
if (children && !action_list_is_valid(children)) {
wlr_log(WLR_ERROR, "Invalid action in %s '%s' branch",
action_names[action->type], branches[i]);
return false;
}
}
return true;
default: default:
/* No arguments required */ /* No arguments required */
return true; return true;

View file

@ -77,10 +77,9 @@ desktop_focus_view(struct view *view, bool raise)
workspaces_switch_to(view->workspace, /*update_focus*/ false); workspaces_switch_to(view->workspace, /*update_focus*/ false);
} }
struct seat *seat = &view->server->seat;
switch (view_wants_focus(view)) { switch (view_wants_focus(view)) {
case VIEW_WANTS_FOCUS_ALWAYS: case VIEW_WANTS_FOCUS_ALWAYS:
; /* works around "a label can only be part of a statement" */
struct seat *seat = &view->server->seat;
if (view->surface != seat->seat->keyboard_state.focused_surface) { if (view->surface != seat->seat->keyboard_state.focused_surface) {
seat_focus_surface(seat, view->surface); seat_focus_surface(seat, view->surface);
} }

View file

@ -242,6 +242,40 @@ validate_output_edges(struct border *valid_edges,
view, target, output, validator, WLR_EDGE_BOTTOM); view, target, output, validator, WLR_EDGE_BOTTOM);
} }
static uint32_t
compute_edges_visible(const struct wlr_box *view_size,
const pixman_box32_t *view_rect,
const pixman_region32_t *available)
{
pixman_region32_t intersection;
pixman_region32_init(&intersection);
pixman_region32_intersect_rect(&intersection, available,
view_size->x, view_size->y,
view_size->width, view_size->height);
int nrects;
const pixman_box32_t *rects =
pixman_region32_rectangles(&intersection, &nrects);
uint32_t edges_visible = 0;
for (int i = 0; i < nrects; i++) {
if (rects[i].x1 == view_rect->x1) {
edges_visible |= WLR_EDGE_LEFT;
}
if (rects[i].y1 == view_rect->y1) {
edges_visible |= WLR_EDGE_TOP;
}
if (rects[i].x2 == view_rect->x2) {
edges_visible |= WLR_EDGE_RIGHT;
}
if (rects[i].y2 == view_rect->y2) {
edges_visible |= WLR_EDGE_BOTTOM;
}
}
pixman_region32_fini(&intersection);
return edges_visible;
}
/* Test if parts of the current view is covered by the remaining space in the region */ /* Test if parts of the current view is covered by the remaining space in the region */
static void static void
subtract_view_from_space(struct view *view, pixman_region32_t *available) subtract_view_from_space(struct view *view, pixman_region32_t *available)
@ -266,33 +300,8 @@ subtract_view_from_space(struct view *view, pixman_region32_t *available)
view->edges_visible = 0; view->edges_visible = 0;
return; return;
case PIXMAN_REGION_PART: case PIXMAN_REGION_PART:
; /* works around "a label can only be part of a statement" */ view->edges_visible = compute_edges_visible(
pixman_region32_t intersection; &view_size, &view_rect, available);
pixman_region32_init(&intersection);
pixman_region32_intersect_rect(&intersection, available,
view_size.x, view_size.y,
view_size.width, view_size.height);
int nrects;
const pixman_box32_t *rects =
pixman_region32_rectangles(&intersection, &nrects);
view->edges_visible = 0;
for (int i = 0; i < nrects; i++) {
if (rects[i].x1 == view_rect.x1) {
view->edges_visible |= WLR_EDGE_LEFT;
}
if (rects[i].y1 == view_rect.y1) {
view->edges_visible |= WLR_EDGE_TOP;
}
if (rects[i].x2 == view_rect.x2) {
view->edges_visible |= WLR_EDGE_RIGHT;
}
if (rects[i].y2 == view_rect.y2) {
view->edges_visible |= WLR_EDGE_BOTTOM;
}
}
pixman_region32_fini(&intersection);
break; break;
} }

View file

@ -147,6 +147,7 @@ handle_sigchld(int signal, void *data)
return 0; return 0;
} }
const char *signame;
switch (info.si_code) { switch (info.si_code) {
case CLD_EXITED: case CLD_EXITED:
wlr_log(info.si_status == 0 ? WLR_DEBUG : WLR_ERROR, wlr_log(info.si_status == 0 ? WLR_DEBUG : WLR_ERROR,
@ -155,8 +156,7 @@ handle_sigchld(int signal, void *data)
break; break;
case CLD_KILLED: case CLD_KILLED:
case CLD_DUMPED: case CLD_DUMPED:
; /* works around "a label can only be part of a statement" */ signame = strsignal(info.si_status);
const char *signame = strsignal(info.si_status);
wlr_log(WLR_ERROR, wlr_log(WLR_ERROR,
"spawned child %ld terminated with signal %d (%s)", "spawned child %ld terminated with signal %d (%s)",
(long)info.si_pid, info.si_status, (long)info.si_pid, info.si_status,

View file

@ -168,24 +168,19 @@ resize_indicator_update(struct view *view)
view_box.height = view_effective_height(view, /* use_pending */ false); view_box.height = view_effective_height(view, /* use_pending */ false);
} }
switch (view->server->input_mode) { if (view->server->input_mode == LAB_INPUT_STATE_RESIZE) {
case LAB_INPUT_STATE_RESIZE:
; /* works around "a label can only be part of a statement" */
struct view_size_hints hints = view_get_size_hints(view); struct view_size_hints hints = view_get_size_hints(view);
snprintf(text, sizeof(text), "%d x %d", snprintf(text, sizeof(text), "%d x %d",
MAX(0, view_box.width - hints.base_width) MAX(0, view_box.width - hints.base_width)
/ MAX(1, hints.width_inc), / MAX(1, hints.width_inc),
MAX(0, view_box.height - hints.base_height) MAX(0, view_box.height - hints.base_height)
/ MAX(1, hints.height_inc)); / MAX(1, hints.height_inc));
break; } else if (view->server->input_mode == LAB_INPUT_STATE_MOVE) {
case LAB_INPUT_STATE_MOVE:
; /* works around "a label can only be part of a statement" */
struct border margin = ssd_get_margin(view->ssd); struct border margin = ssd_get_margin(view->ssd);
snprintf(text, sizeof(text), "%d , %d", snprintf(text, sizeof(text), "%d , %d",
view_box.x - margin.left, view_box.x - margin.left,
view_box.y - margin.top); view_box.y - margin.top);
break; } else {
default:
wlr_log(WLR_ERROR, "Invalid input mode for indicator update %u", wlr_log(WLR_ERROR, "Invalid input mode for indicator update %u",
view->server->input_mode); view->server->input_mode);
return; return;