mirror of
https://github.com/labwc/labwc.git
synced 2026-06-13 14:33:18 -04:00
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)
This commit is contained in:
parent
6df6a092ba
commit
41ff854483
11 changed files with 909 additions and 1 deletions
41
include/overview.h
Normal file
41
include/overview.h
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
/* 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 */
|
||||
Loading…
Add table
Add a link
Reference in a new issue