#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;
#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;
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);
/*
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;
--- /dev/null
+/* 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 */
#include "menu/menu.h"
#include "private/action.h"
#include "ssd.h"
+#include "view.h"
#include "workspaces.h"
enum action_type {
#include "menu/menu.h"
#include "resistance.h"
#include "ssd.h"
+#include "view.h"
static const char * const *cursor_names = NULL;
// 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 "------------------------------"
#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
// SPDX-License-Identifier: GPL-2.0-only
#include "labwc.h"
+#include "view.h"
#include "workspaces.h"
static void
// SPDX-License-Identifier: GPL-2.0-only
#include "labwc.h"
+#include "view.h"
static int
max_move_scale(double pos_cursor, double pos_current,
#include "labwc.h"
#include "theme.h"
#include "node.h"
+#include "view.h"
#include "workspaces.h"
#define OSD_ITEM_HEIGHT (20)
#include "labwc.h"
#include "layers.h"
#include "node.h"
+#include "view.h"
static void
output_frame_notify(struct wl_listener *listener, void *data)
// SPDX-License-Identifier: GPL-2.0-only
-#include "labwc.h"
#include "config/rcxml.h"
+#include "labwc.h"
+#include "view.h"
struct edges {
int left;
#include "menu/menu.h"
#include "ssd.h"
#include "theme.h"
+#include "view.h"
#include "workspaces.h"
#define LAB_XDG_SHELL_VERSION (2)
*/
#include <assert.h>
-#include "config/rcxml.h"
-#include "common/font.h"
+#include "common/scene-helpers.h"
#include "labwc.h"
-#include "theme.h"
#include "ssd.h"
-#include "common/scene-helpers.h"
+#include "theme.h"
+#include "view.h"
struct border
ssd_thickness(struct view *view)
// 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, \
// 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,
#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, \
#include <stdio.h>
#include <strings.h>
#include "labwc.h"
+#include "view.h"
void
view_impl_map(struct view *view)
#include "labwc.h"
#include "ssd.h"
#include "menu/menu.h"
+#include "view.h"
#include "workspaces.h"
#define LAB_FALLBACK_WIDTH 640
#include "common/list.h"
#include "common/mem.h"
#include "labwc.h"
+#include "view.h"
#include "workspaces.h"
/* Internal helpers */
// 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;
#include "common/mem.h"
#include "labwc.h"
#include "node.h"
+#include "view.h"
struct xdg_popup {
struct view *parent_view;
#include "labwc.h"
#include "node.h"
#include "ssd.h"
+#include "view.h"
#include "workspaces.h"
static void
#include "labwc.h"
#include "node.h"
#include "ssd.h"
+#include "view.h"
#include "workspaces.h"
static void