labwc/include/overview.h
yuiiio 41ff854483 add overview based on kwin's placement algorithm
kwin/src/plugins/private/expolayout.cpp

kwin's overview placement algorithm first sorts by window height(2nd key center_y),

turning it into a one-dimensional row partitioning problem.

(limit binary search iteration to guarantee termination)

Then it sorts within the rows based on window center_x.

(first sort fallback rev creation_id
for stablility)
2026-04-19 12:10:33 +09:00

41 lines
907 B
C

/* SPDX-License-Identifier: GPL-2.0-only */
#ifndef LABWC_OVERVIEW_H
#define LABWC_OVERVIEW_H
#include <stdbool.h>
#include <wayland-server-core.h>
struct output;
struct view;
struct wlr_scene_node;
struct overview_item {
struct view *view;
struct wlr_scene_tree *tree;
struct wl_list link;
};
struct overview_state {
bool active;
struct wl_list items; /* struct overview_item.link */
struct wlr_scene_tree *tree;
struct output *output;
};
/* Begin overview mode */
void overview_begin(void);
/* End overview mode */
void overview_finish(bool focus_selected);
/* Toggle overview mode */
void overview_toggle(void);
/* Focus the clicked window and close overview */
void overview_on_cursor_release(struct wlr_scene_node *node);
/* Get overview item from scene node */
struct overview_item *node_overview_item_from_node(
struct wlr_scene_node *wlr_scene_node);
#endif /* LABWC_OVERVIEW_H */