mirror of
https://github.com/labwc/labwc.git
synced 2025-10-29 05:40:24 -04:00
include: Break out view.h from labwc.h
IMHO it encourages better design (by making dependencies more obvious) to have source file/header file pairs like view.c/view.h, rather than a monolithic header like labwc.h with everything in it. I don't think we need to break up all of labwc.h at once, but maybe we can start pulling it apart bit by bit as it's convenient. Also: - Move "struct border" to ssd.h so that view.h can use it without pulling in all of labwc.h. - Add a missing required #include within scaled_font_buffer.h (forward declaration of "struct font" is not enough).
This commit is contained in:
parent
9021020f6e
commit
f08e931a29
25 changed files with 194 additions and 165 deletions
|
|
@ -2,7 +2,8 @@
|
|||
#ifndef __LAB_COMMON_SCALED_FONT_BUFFER_H
|
||||
#define __LAB_COMMON_SCALED_FONT_BUFFER_H
|
||||
|
||||
struct font;
|
||||
#include "common/font.h"
|
||||
|
||||
struct wlr_scene_tree;
|
||||
struct wlr_scene_buffer;
|
||||
struct scaled_scene_buffere;
|
||||
|
|
|
|||
148
include/labwc.h
148
include/labwc.h
|
|
@ -316,110 +316,6 @@ struct output {
|
|||
|
||||
#undef LAB_NR_LAYERS
|
||||
|
||||
enum view_type {
|
||||
LAB_XDG_SHELL_VIEW,
|
||||
#if HAVE_XWAYLAND
|
||||
LAB_XWAYLAND_VIEW,
|
||||
#endif
|
||||
};
|
||||
|
||||
struct view_impl {
|
||||
void (*configure)(struct view *view, struct wlr_box geo);
|
||||
void (*close)(struct view *view);
|
||||
const char *(*get_string_prop)(struct view *view, const char *prop);
|
||||
void (*map)(struct view *view);
|
||||
void (*move)(struct view *view, int x, int y);
|
||||
void (*set_activated)(struct view *view, bool activated);
|
||||
void (*set_fullscreen)(struct view *view, bool fullscreen);
|
||||
void (*unmap)(struct view *view);
|
||||
void (*maximize)(struct view *view, bool maximize);
|
||||
};
|
||||
|
||||
struct border {
|
||||
int top;
|
||||
int right;
|
||||
int bottom;
|
||||
int left;
|
||||
};
|
||||
|
||||
struct view {
|
||||
struct server *server;
|
||||
enum view_type type;
|
||||
const struct view_impl *impl;
|
||||
struct wl_list link;
|
||||
struct output *output;
|
||||
struct workspace *workspace;
|
||||
|
||||
union {
|
||||
struct wlr_xdg_surface *xdg_surface;
|
||||
#if HAVE_XWAYLAND
|
||||
struct wlr_xwayland_surface *xwayland_surface;
|
||||
#endif
|
||||
};
|
||||
struct wlr_surface *surface;
|
||||
struct wlr_scene_tree *scene_tree;
|
||||
struct wlr_scene_node *scene_node;
|
||||
|
||||
bool mapped;
|
||||
bool been_mapped;
|
||||
bool minimized;
|
||||
bool maximized;
|
||||
uint32_t tiled; /* private, enum view_edge in src/view.c */
|
||||
struct wlr_output *fullscreen;
|
||||
|
||||
/* geometry of the wlr_surface contained within the view */
|
||||
int x, y, w, h;
|
||||
|
||||
/* user defined geometry before maximize / tiling / fullscreen */
|
||||
struct wlr_box natural_geometry;
|
||||
|
||||
/*
|
||||
* margin refers to the space between the extremities of the
|
||||
* wlr_surface and the max extents of the server-side decorations.
|
||||
* For xdg-shell views with CSD, this margin is zero.
|
||||
*/
|
||||
struct border margin;
|
||||
|
||||
struct view_pending_move_resize {
|
||||
bool update_x, update_y;
|
||||
int x, y;
|
||||
uint32_t width, height;
|
||||
uint32_t configure_serial;
|
||||
} pending_move_resize;
|
||||
|
||||
struct ssd ssd;
|
||||
|
||||
struct wlr_foreign_toplevel_handle_v1 *toplevel_handle;
|
||||
struct wl_listener toplevel_handle_request_maximize;
|
||||
struct wl_listener toplevel_handle_request_minimize;
|
||||
struct wl_listener toplevel_handle_request_fullscreen;
|
||||
struct wl_listener toplevel_handle_request_activate;
|
||||
struct wl_listener toplevel_handle_request_close;
|
||||
|
||||
struct wl_listener map;
|
||||
struct wl_listener unmap;
|
||||
struct wl_listener destroy;
|
||||
struct wl_listener surface_destroy;
|
||||
struct wl_listener commit;
|
||||
struct wl_listener request_move;
|
||||
struct wl_listener request_resize;
|
||||
struct wl_listener request_configure; /* xwayland only */
|
||||
struct wl_listener request_activate;
|
||||
struct wl_listener request_minimize;
|
||||
struct wl_listener request_maximize;
|
||||
struct wl_listener request_fullscreen;
|
||||
struct wl_listener set_title;
|
||||
struct wl_listener set_app_id; /* class on xwayland */
|
||||
struct wl_listener set_decorations; /* xwayland only */
|
||||
struct wl_listener override_redirect; /* xwayland only */
|
||||
struct wl_listener new_popup; /* xdg-shell only */
|
||||
|
||||
/* Not (yet) implemented */
|
||||
/* struct wl_listener set_role; */
|
||||
/* struct wl_listener set_window_type; */
|
||||
/* struct wl_listener set_hints; */
|
||||
};
|
||||
|
||||
#if HAVE_XWAYLAND
|
||||
struct xwayland_unmanaged {
|
||||
struct server *server;
|
||||
|
|
@ -463,50 +359,6 @@ struct xwayland_unmanaged *xwayland_unmanaged_create(struct server *server,
|
|||
void unmanaged_handle_map(struct wl_listener *listener, void *data);
|
||||
#endif
|
||||
|
||||
void view_set_activated(struct view *view);
|
||||
void view_close(struct view *view);
|
||||
|
||||
/**
|
||||
* view_move_resize - resize and move view
|
||||
* @view: view to be resized and moved
|
||||
* @geo: the new geometry
|
||||
* NOTE: Only use this when the view actually changes width and/or height
|
||||
* otherwise the serials might cause a delay in moving xdg-shell clients.
|
||||
* For move only, use view_move()
|
||||
*/
|
||||
void view_move_resize(struct view *view, struct wlr_box geo);
|
||||
void view_move(struct view *view, int x, int y);
|
||||
void view_moved(struct view *view);
|
||||
void view_minimize(struct view *view, bool minimized);
|
||||
/* view_wlr_output - return the output that a view is mostly on */
|
||||
struct wlr_output *view_wlr_output(struct view *view);
|
||||
void view_store_natural_geometry(struct view *view);
|
||||
void view_center(struct view *view);
|
||||
void view_restore_to(struct view *view, struct wlr_box geometry);
|
||||
void view_maximize(struct view *view, bool maximize,
|
||||
bool store_natural_geometry);
|
||||
void view_set_fullscreen(struct view *view, bool fullscreen,
|
||||
struct wlr_output *wlr_output);
|
||||
void view_toggle_maximize(struct view *view);
|
||||
void view_toggle_decorations(struct view *view);
|
||||
void view_toggle_always_on_top(struct view *view);
|
||||
void view_set_decorations(struct view *view, bool decorations);
|
||||
void view_toggle_fullscreen(struct view *view);
|
||||
void view_adjust_for_layout_change(struct view *view);
|
||||
void view_discover_output(struct view *view);
|
||||
void view_move_to_edge(struct view *view, const char *direction);
|
||||
void view_snap_to_edge(struct view *view, const char *direction,
|
||||
bool store_natural_geometry);
|
||||
const char *view_get_string_prop(struct view *view, const char *prop);
|
||||
void view_update_title(struct view *view);
|
||||
void view_update_app_id(struct view *view);
|
||||
|
||||
void view_impl_map(struct view *view);
|
||||
void view_adjust_size(struct view *view, int *w, int *h);
|
||||
|
||||
void view_on_output_destroy(struct view *view);
|
||||
void view_destroy(struct view *view);
|
||||
|
||||
void foreign_toplevel_handle_create(struct view *view);
|
||||
|
||||
/*
|
||||
|
|
|
|||
|
|
@ -55,6 +55,13 @@ struct wlr_box;
|
|||
struct wlr_scene_tree;
|
||||
struct scaled_font_buffer;
|
||||
|
||||
struct border {
|
||||
int top;
|
||||
int right;
|
||||
int bottom;
|
||||
int left;
|
||||
};
|
||||
|
||||
struct ssd_button {
|
||||
struct view *view;
|
||||
enum ssd_part_type type;
|
||||
|
|
|
|||
153
include/view.h
Normal file
153
include/view.h
Normal file
|
|
@ -0,0 +1,153 @@
|
|||
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||
#ifndef __LABWC_VIEW_H
|
||||
#define __LABWC_VIEW_H
|
||||
|
||||
#include "config.h"
|
||||
#include <stdbool.h>
|
||||
#include <stdint.h>
|
||||
#include <wayland-util.h>
|
||||
#include <wlr/util/box.h>
|
||||
#include "ssd.h"
|
||||
|
||||
enum view_type {
|
||||
LAB_XDG_SHELL_VIEW,
|
||||
#if HAVE_XWAYLAND
|
||||
LAB_XWAYLAND_VIEW,
|
||||
#endif
|
||||
};
|
||||
|
||||
struct view_impl {
|
||||
void (*configure)(struct view *view, struct wlr_box geo);
|
||||
void (*close)(struct view *view);
|
||||
const char *(*get_string_prop)(struct view *view, const char *prop);
|
||||
void (*map)(struct view *view);
|
||||
void (*move)(struct view *view, int x, int y);
|
||||
void (*set_activated)(struct view *view, bool activated);
|
||||
void (*set_fullscreen)(struct view *view, bool fullscreen);
|
||||
void (*unmap)(struct view *view);
|
||||
void (*maximize)(struct view *view, bool maximize);
|
||||
};
|
||||
|
||||
struct view {
|
||||
struct server *server;
|
||||
enum view_type type;
|
||||
const struct view_impl *impl;
|
||||
struct wl_list link;
|
||||
struct output *output;
|
||||
struct workspace *workspace;
|
||||
|
||||
union {
|
||||
struct wlr_xdg_surface *xdg_surface;
|
||||
#if HAVE_XWAYLAND
|
||||
struct wlr_xwayland_surface *xwayland_surface;
|
||||
#endif
|
||||
};
|
||||
struct wlr_surface *surface;
|
||||
struct wlr_scene_tree *scene_tree;
|
||||
struct wlr_scene_node *scene_node;
|
||||
|
||||
bool mapped;
|
||||
bool been_mapped;
|
||||
bool minimized;
|
||||
bool maximized;
|
||||
uint32_t tiled; /* private, enum view_edge in src/view.c */
|
||||
struct wlr_output *fullscreen;
|
||||
|
||||
/* geometry of the wlr_surface contained within the view */
|
||||
int x, y, w, h;
|
||||
|
||||
/* user defined geometry before maximize / tiling / fullscreen */
|
||||
struct wlr_box natural_geometry;
|
||||
|
||||
/*
|
||||
* margin refers to the space between the extremities of the
|
||||
* wlr_surface and the max extents of the server-side decorations.
|
||||
* For xdg-shell views with CSD, this margin is zero.
|
||||
*/
|
||||
struct border margin;
|
||||
|
||||
struct view_pending_move_resize {
|
||||
bool update_x, update_y;
|
||||
int x, y;
|
||||
uint32_t width, height;
|
||||
uint32_t configure_serial;
|
||||
} pending_move_resize;
|
||||
|
||||
struct ssd ssd;
|
||||
|
||||
struct wlr_foreign_toplevel_handle_v1 *toplevel_handle;
|
||||
struct wl_listener toplevel_handle_request_maximize;
|
||||
struct wl_listener toplevel_handle_request_minimize;
|
||||
struct wl_listener toplevel_handle_request_fullscreen;
|
||||
struct wl_listener toplevel_handle_request_activate;
|
||||
struct wl_listener toplevel_handle_request_close;
|
||||
|
||||
struct wl_listener map;
|
||||
struct wl_listener unmap;
|
||||
struct wl_listener destroy;
|
||||
struct wl_listener surface_destroy;
|
||||
struct wl_listener commit;
|
||||
struct wl_listener request_move;
|
||||
struct wl_listener request_resize;
|
||||
struct wl_listener request_configure; /* xwayland only */
|
||||
struct wl_listener request_activate;
|
||||
struct wl_listener request_minimize;
|
||||
struct wl_listener request_maximize;
|
||||
struct wl_listener request_fullscreen;
|
||||
struct wl_listener set_title;
|
||||
struct wl_listener set_app_id; /* class on xwayland */
|
||||
struct wl_listener set_decorations; /* xwayland only */
|
||||
struct wl_listener override_redirect; /* xwayland only */
|
||||
struct wl_listener new_popup; /* xdg-shell only */
|
||||
|
||||
/* Not (yet) implemented */
|
||||
/* struct wl_listener set_role; */
|
||||
/* struct wl_listener set_window_type; */
|
||||
/* struct wl_listener set_hints; */
|
||||
};
|
||||
|
||||
void view_set_activated(struct view *view);
|
||||
void view_close(struct view *view);
|
||||
|
||||
/**
|
||||
* view_move_resize - resize and move view
|
||||
* @view: view to be resized and moved
|
||||
* @geo: the new geometry
|
||||
* NOTE: Only use this when the view actually changes width and/or height
|
||||
* otherwise the serials might cause a delay in moving xdg-shell clients.
|
||||
* For move only, use view_move()
|
||||
*/
|
||||
void view_move_resize(struct view *view, struct wlr_box geo);
|
||||
void view_move(struct view *view, int x, int y);
|
||||
void view_moved(struct view *view);
|
||||
void view_minimize(struct view *view, bool minimized);
|
||||
/* view_wlr_output - return the output that a view is mostly on */
|
||||
struct wlr_output *view_wlr_output(struct view *view);
|
||||
void view_store_natural_geometry(struct view *view);
|
||||
void view_center(struct view *view);
|
||||
void view_restore_to(struct view *view, struct wlr_box geometry);
|
||||
void view_maximize(struct view *view, bool maximize,
|
||||
bool store_natural_geometry);
|
||||
void view_set_fullscreen(struct view *view, bool fullscreen,
|
||||
struct wlr_output *wlr_output);
|
||||
void view_toggle_maximize(struct view *view);
|
||||
void view_toggle_decorations(struct view *view);
|
||||
void view_toggle_always_on_top(struct view *view);
|
||||
void view_set_decorations(struct view *view, bool decorations);
|
||||
void view_toggle_fullscreen(struct view *view);
|
||||
void view_adjust_for_layout_change(struct view *view);
|
||||
void view_discover_output(struct view *view);
|
||||
void view_move_to_edge(struct view *view, const char *direction);
|
||||
void view_snap_to_edge(struct view *view, const char *direction,
|
||||
bool store_natural_geometry);
|
||||
const char *view_get_string_prop(struct view *view, const char *prop);
|
||||
void view_update_title(struct view *view);
|
||||
void view_update_app_id(struct view *view);
|
||||
|
||||
void view_impl_map(struct view *view);
|
||||
void view_adjust_size(struct view *view, int *w, int *h);
|
||||
|
||||
void view_on_output_destroy(struct view *view);
|
||||
void view_destroy(struct view *view);
|
||||
|
||||
#endif /* __LABWC_VIEW_H */
|
||||
|
|
@ -14,6 +14,7 @@
|
|||
#include "menu/menu.h"
|
||||
#include "private/action.h"
|
||||
#include "ssd.h"
|
||||
#include "view.h"
|
||||
#include "workspaces.h"
|
||||
|
||||
enum action_type {
|
||||
|
|
|
|||
|
|
@ -14,6 +14,7 @@
|
|||
#include "menu/menu.h"
|
||||
#include "resistance.h"
|
||||
#include "ssd.h"
|
||||
#include "view.h"
|
||||
|
||||
static const char * const *cursor_names = NULL;
|
||||
|
||||
|
|
|
|||
|
|
@ -1,10 +1,10 @@
|
|||
// SPDX-License-Identifier: GPL-2.0-only
|
||||
#include <wlr/types/wlr_layer_shell_v1.h>
|
||||
#include <wlr/types/wlr_scene.h>
|
||||
#include "buffer.h"
|
||||
#include "common/scene-helpers.h"
|
||||
#include "labwc.h"
|
||||
#include "node.h"
|
||||
#include "common/scene-helpers.h"
|
||||
#include "view.h"
|
||||
|
||||
#define HEADER_CHARS "------------------------------"
|
||||
|
||||
|
|
|
|||
|
|
@ -5,9 +5,9 @@
|
|||
#include "common/scene-helpers.h"
|
||||
#include "dnd.h"
|
||||
#include "labwc.h"
|
||||
#include "layers.h"
|
||||
#include "node.h"
|
||||
#include "ssd.h"
|
||||
#include "view.h"
|
||||
#include "workspaces.h"
|
||||
|
||||
static void
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
// SPDX-License-Identifier: GPL-2.0-only
|
||||
#include "labwc.h"
|
||||
#include "view.h"
|
||||
#include "workspaces.h"
|
||||
|
||||
static void
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
// SPDX-License-Identifier: GPL-2.0-only
|
||||
#include "labwc.h"
|
||||
#include "view.h"
|
||||
|
||||
static int
|
||||
max_move_scale(double pos_cursor, double pos_current,
|
||||
|
|
|
|||
|
|
@ -14,6 +14,7 @@
|
|||
#include "labwc.h"
|
||||
#include "theme.h"
|
||||
#include "node.h"
|
||||
#include "view.h"
|
||||
#include "workspaces.h"
|
||||
|
||||
#define OSD_ITEM_HEIGHT (20)
|
||||
|
|
|
|||
|
|
@ -19,6 +19,7 @@
|
|||
#include "labwc.h"
|
||||
#include "layers.h"
|
||||
#include "node.h"
|
||||
#include "view.h"
|
||||
|
||||
static void
|
||||
output_frame_notify(struct wl_listener *listener, void *data)
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
// SPDX-License-Identifier: GPL-2.0-only
|
||||
#include "labwc.h"
|
||||
#include "config/rcxml.h"
|
||||
#include "labwc.h"
|
||||
#include "view.h"
|
||||
|
||||
struct edges {
|
||||
int left;
|
||||
|
|
|
|||
|
|
@ -18,6 +18,7 @@
|
|||
#include "menu/menu.h"
|
||||
#include "ssd.h"
|
||||
#include "theme.h"
|
||||
#include "view.h"
|
||||
#include "workspaces.h"
|
||||
|
||||
#define LAB_XDG_SHELL_VERSION (2)
|
||||
|
|
|
|||
|
|
@ -7,12 +7,11 @@
|
|||
*/
|
||||
|
||||
#include <assert.h>
|
||||
#include "config/rcxml.h"
|
||||
#include "common/font.h"
|
||||
#include "labwc.h"
|
||||
#include "theme.h"
|
||||
#include "ssd.h"
|
||||
#include "common/scene-helpers.h"
|
||||
#include "labwc.h"
|
||||
#include "ssd.h"
|
||||
#include "theme.h"
|
||||
#include "view.h"
|
||||
|
||||
struct border
|
||||
ssd_thickness(struct view *view)
|
||||
|
|
|
|||
|
|
@ -1,9 +1,10 @@
|
|||
// SPDX-License-Identifier: GPL-2.0-only
|
||||
|
||||
#include "common/scene-helpers.h"
|
||||
#include "labwc.h"
|
||||
#include "ssd.h"
|
||||
#include "theme.h"
|
||||
#include "common/scene-helpers.h"
|
||||
#include "view.h"
|
||||
|
||||
#define FOR_EACH_STATE(view, tmp) FOR_EACH(tmp, \
|
||||
&(view)->ssd.border.active, \
|
||||
|
|
|
|||
|
|
@ -1,10 +1,11 @@
|
|||
// SPDX-License-Identifier: GPL-2.0-only
|
||||
|
||||
#include "common/mem.h"
|
||||
#include "common/scene-helpers.h"
|
||||
#include "labwc.h"
|
||||
#include "ssd.h"
|
||||
#include "theme.h"
|
||||
#include "common/mem.h"
|
||||
#include "common/scene-helpers.h"
|
||||
#include "view.h"
|
||||
|
||||
static struct ssd_part *
|
||||
add_extent(struct wl_list *part_list, enum ssd_part_type type,
|
||||
|
|
|
|||
|
|
@ -3,14 +3,14 @@
|
|||
#define _POSIX_C_SOURCE 200809L
|
||||
#include <assert.h>
|
||||
#include <string.h>
|
||||
#include "labwc.h"
|
||||
#include "ssd.h"
|
||||
#include "theme.h"
|
||||
#include "common/font.h"
|
||||
#include "common/mem.h"
|
||||
#include "common/scaled_font_buffer.h"
|
||||
#include "common/scene-helpers.h"
|
||||
#include "labwc.h"
|
||||
#include "node.h"
|
||||
#include "ssd.h"
|
||||
#include "theme.h"
|
||||
#include "view.h"
|
||||
|
||||
#define FOR_EACH_STATE(view, tmp) FOR_EACH(tmp, \
|
||||
&(view)->ssd.titlebar.active, \
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@
|
|||
#include <stdio.h>
|
||||
#include <strings.h>
|
||||
#include "labwc.h"
|
||||
#include "view.h"
|
||||
|
||||
void
|
||||
view_impl_map(struct view *view)
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@
|
|||
#include "labwc.h"
|
||||
#include "ssd.h"
|
||||
#include "menu/menu.h"
|
||||
#include "view.h"
|
||||
#include "workspaces.h"
|
||||
|
||||
#define LAB_FALLBACK_WIDTH 640
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@
|
|||
#include "common/list.h"
|
||||
#include "common/mem.h"
|
||||
#include "labwc.h"
|
||||
#include "view.h"
|
||||
#include "workspaces.h"
|
||||
|
||||
/* Internal helpers */
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
// SPDX-License-Identifier: GPL-2.0-only
|
||||
#include "common/mem.h"
|
||||
#include "labwc.h"
|
||||
#include "view.h"
|
||||
|
||||
struct xdg_deco {
|
||||
struct wlr_xdg_toplevel_decoration_v1 *wlr_decoration;
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@
|
|||
#include "common/mem.h"
|
||||
#include "labwc.h"
|
||||
#include "node.h"
|
||||
#include "view.h"
|
||||
|
||||
struct xdg_popup {
|
||||
struct view *parent_view;
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@
|
|||
#include "labwc.h"
|
||||
#include "node.h"
|
||||
#include "ssd.h"
|
||||
#include "view.h"
|
||||
#include "workspaces.h"
|
||||
|
||||
static void
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@
|
|||
#include "labwc.h"
|
||||
#include "node.h"
|
||||
#include "ssd.h"
|
||||
#include "view.h"
|
||||
#include "workspaces.h"
|
||||
|
||||
static void
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue