summaryrefslogtreecommitdiff
path: root/libdecor/src/libdecor.h
diff options
context:
space:
mode:
Diffstat (limited to 'libdecor/src/libdecor.h')
-rw-r--r--libdecor/src/libdecor.h605
1 files changed, 0 insertions, 605 deletions
diff --git a/libdecor/src/libdecor.h b/libdecor/src/libdecor.h
deleted file mode 100644
index 71c9d7660..000000000
--- a/libdecor/src/libdecor.h
+++ /dev/null
@@ -1,605 +0,0 @@
-/*
- * Copyright © 2017-2018 Red Hat Inc.
- * Copyright © 2018 Jonas Ådahl
- * Copyright © 2019 Christian Rauch
- *
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sublicense, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial
- * portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-#ifndef LIBDECOR_H
-#define LIBDECOR_H
-
-#include <stdbool.h>
-#include <wayland-client.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#if defined(__GNUC__) && __GNUC__ >= 4
-#define LIBDECOR_EXPORT __attribute__ ((visibility("default")))
-#else
-#define LIBDECOR_EXPORT
-#endif
-
-struct xdg_toplevel;
-
-/** \class libdecor
- *
- * \brief A libdecor context instance.
- */
-struct libdecor;
-
-/** \class libdecor_frame
- *
- * \brief A frame used for decorating a Wayland surface.
- */
-struct libdecor_frame;
-
-/** \class libdecor_configuration
- *
- * \brief An object representing a toplevel window configuration.
- */
-struct libdecor_configuration;
-
-/** \class libdecor_state
- *
- * \brief An object corresponding to a configured content state.
- */
-struct libdecor_state;
-
-enum libdecor_error {
- LIBDECOR_ERROR_COMPOSITOR_INCOMPATIBLE,
- LIBDECOR_ERROR_INVALID_FRAME_CONFIGURATION,
-};
-
-enum libdecor_window_state {
- LIBDECOR_WINDOW_STATE_NONE = 0,
- LIBDECOR_WINDOW_STATE_ACTIVE = 1 << 0,
- LIBDECOR_WINDOW_STATE_MAXIMIZED = 1 << 1,
- LIBDECOR_WINDOW_STATE_FULLSCREEN = 1 << 2,
- LIBDECOR_WINDOW_STATE_TILED_LEFT = 1 << 3,
- LIBDECOR_WINDOW_STATE_TILED_RIGHT = 1 << 4,
- LIBDECOR_WINDOW_STATE_TILED_TOP = 1 << 5,
- LIBDECOR_WINDOW_STATE_TILED_BOTTOM = 1 << 6,
- LIBDECOR_WINDOW_STATE_SUSPENDED = 1 << 7,
- LIBDECOR_WINDOW_STATE_RESIZING = 1 << 8,
- LIBDECOR_WINDOW_STATE_CONSTRAINED_LEFT = 1 << 9,
- LIBDECOR_WINDOW_STATE_CONSTRAINED_RIGHT = 1 << 10,
- LIBDECOR_WINDOW_STATE_CONSTRAINED_TOP = 1 << 11,
- LIBDECOR_WINDOW_STATE_CONSTRAINED_BOTTOM = 1 << 12,
-};
-
-enum libdecor_resize_edge {
- LIBDECOR_RESIZE_EDGE_NONE,
- LIBDECOR_RESIZE_EDGE_TOP,
- LIBDECOR_RESIZE_EDGE_BOTTOM,
- LIBDECOR_RESIZE_EDGE_LEFT,
- LIBDECOR_RESIZE_EDGE_TOP_LEFT,
- LIBDECOR_RESIZE_EDGE_BOTTOM_LEFT,
- LIBDECOR_RESIZE_EDGE_RIGHT,
- LIBDECOR_RESIZE_EDGE_TOP_RIGHT,
- LIBDECOR_RESIZE_EDGE_BOTTOM_RIGHT,
-};
-
-enum libdecor_capabilities {
- LIBDECOR_ACTION_MOVE = 1 << 0,
- LIBDECOR_ACTION_RESIZE = 1 << 1,
- LIBDECOR_ACTION_MINIMIZE = 1 << 2,
- LIBDECOR_ACTION_FULLSCREEN = 1 << 3,
- LIBDECOR_ACTION_CLOSE = 1 << 4,
-};
-
-enum libdecor_wm_capabilities {
- LIBDECOR_WM_CAPABILITIES_WINDOW_MENU = 1 << 0,
- LIBDECOR_WM_CAPABILITIES_MAXIMIZE = 1 << 1,
- LIBDECOR_WM_CAPABILITIES_FULLSCREEN = 1 << 2,
- LIBDECOR_WM_CAPABILITIES_MINIMIZE = 1 << 3
-};
-
-struct libdecor_interface {
- /**
- * An error event
- */
- void (* error)(struct libdecor *context,
- enum libdecor_error error,
- const char *message);
-
- /* Reserved */
- void (* reserved0)(void);
- void (* reserved1)(void);
- void (* reserved2)(void);
- void (* reserved3)(void);
- void (* reserved4)(void);
- void (* reserved5)(void);
- void (* reserved6)(void);
- void (* reserved7)(void);
- void (* reserved8)(void);
- void (* reserved9)(void);
-};
-
-/**
- * Interface for integrating a Wayland surface with libdecor.
- */
-struct libdecor_frame_interface {
- /**
- * A new configuration was received. An application should respond to
- * this by creating a suitable libdecor_state, and apply it using
- * libdecor_frame_commit.
- */
- void (* configure)(struct libdecor_frame *frame,
- struct libdecor_configuration *configuration,
- void *user_data);
-
- /**
- * The window was requested to be closed by the compositor.
- */
- void (* close)(struct libdecor_frame *frame,
- void *user_data);
-
- /**
- * The window decoration asked to have the main surface to be
- * committed. This is required when the decoration is implemented using
- * synchronous subsurfaces.
- */
- void (* commit)(struct libdecor_frame *frame,
- void *user_data);
-
- /**
- * Any mapped popup that has a grab on the given seat should be
- * dismissed.
- */
- void (* dismiss_popup)(struct libdecor_frame *frame,
- const char *seat_name,
- void *user_data);
-
- /**
- * The recommended client region bounds for the window.
- * This will be followed by a configure event.
- */
- void (* bounds)(struct libdecor_frame *frame,
- int width,
- int height,
- void *user_data);
-
- /* Reserved */
- void (* reserved0)(void);
- void (* reserved1)(void);
- void (* reserved2)(void);
- void (* reserved3)(void);
- void (* reserved4)(void);
- void (* reserved5)(void);
- void (* reserved6)(void);
- void (* reserved7)(void);
- void (* reserved8)(void);
-};
-
-/**
- * Remove a reference to the libdecor instance. When the reference count
- * reaches zero, it is freed.
- */
-void
-libdecor_unref(struct libdecor *context);
-
-/**
- * Create a new libdecor context for the given wl_display.
- */
-struct libdecor *
-libdecor_new(struct wl_display *display,
- const struct libdecor_interface *iface);
-
-/**
- * Create a new libdecor context for the given wl_display and attach user data.
- */
-struct libdecor *
-libdecor_new_with_user_data(struct wl_display *display,
- const struct libdecor_interface *iface,
- void *user_data);
-
-/**
- * Get the user data associated with this libdecor context.
- */
-void *
-libdecor_get_user_data(struct libdecor *context);
-
-/**
- * Set the user data associated with this libdecor context.
- */
-void
-libdecor_set_user_data(struct libdecor *context, void *user_data);
-
-/**
- * Get the file descriptor used by libdecor. This is similar to
- * wl_display_get_fd(), thus should be polled, and when data is available,
- * libdecor_dispatch() should be called.
- */
-int
-libdecor_get_fd(struct libdecor *context);
-
-/**
- * Dispatch events. This function should be called when data is available on
- * the file descriptor returned by libdecor_get_fd(). If timeout is zero, this
- * function will never block.
- */
-int
-libdecor_dispatch(struct libdecor *context,
- int timeout);
-
-/**
- * Decorate the given content wl_surface.
- *
- * This will create an xdg_surface and an xdg_toplevel, and integrate it
- * properly with the windowing system, including creating appropriate
- * decorations when needed, as well as handle windowing integration events such
- * as resizing, moving, maximizing, etc.
- *
- * The passed wl_surface should only contain actual application content,
- * without any window decoration.
- */
-struct libdecor_frame *
-libdecor_decorate(struct libdecor *context,
- struct wl_surface *surface,
- const struct libdecor_frame_interface *iface,
- void *user_data);
-
-/**
- * Add a reference to the frame object.
- */
-void
-libdecor_frame_ref(struct libdecor_frame *frame);
-
-/**
- * Remove a reference to the frame object. When the reference count reaches
- * zero, the frame object is destroyed.
- */
-void
-libdecor_frame_unref(struct libdecor_frame *frame);
-
-/**
- * Get the user data associated with this libdecor frame.
- */
-void *
-libdecor_frame_get_user_data(struct libdecor_frame *frame);
-
-/**
- * Set the user data associated with this libdecor frame.
- */
-void
-libdecor_frame_set_user_data(struct libdecor_frame *frame, void *user_data);
-
-/**
- * Set the visibility of the frame.
- *
- * If an application wants to be borderless, it can set the frame visibility to
- * false.
- */
-void
-libdecor_frame_set_visibility(struct libdecor_frame *frame,
- bool visible);
-
-/**
- * Get the visibility of the frame.
- */
-bool
-libdecor_frame_is_visible(struct libdecor_frame *frame);
-
-
-/**
- * Set the parent of the window.
- *
- * This can be used to stack multiple toplevel windows above or under each
- * other.
- */
-void
-libdecor_frame_set_parent(struct libdecor_frame *frame,
- struct libdecor_frame *parent);
-
-/**
- * Set the title of the window.
- */
-void
-libdecor_frame_set_title(struct libdecor_frame *frame,
- const char *title);
-
-/**
- * Get the title of the window.
- */
-const char *
-libdecor_frame_get_title(struct libdecor_frame *frame);
-
-/**
- * Set the application ID of the window.
- */
-void
-libdecor_frame_set_app_id(struct libdecor_frame *frame,
- const char *app_id);
-
-/**
- * Set new capabilities of the window.
- *
- * This determines whether e.g. a window decoration should show a maximize
- * button, etc.
- *
- * Setting a capability does not implicitly unset any other.
- */
-void
-libdecor_frame_set_capabilities(struct libdecor_frame *frame,
- enum libdecor_capabilities capabilities);
-
-/**
- * Unset capabilities of the window.
- *
- * The opposite of libdecor_frame_set_capabilities.
- */
-void
-libdecor_frame_unset_capabilities(struct libdecor_frame *frame,
- enum libdecor_capabilities capabilities);
-
-/**
- * Check whether the window has any of the given capabilities.
- */
-bool
-libdecor_frame_has_capability(struct libdecor_frame *frame,
- enum libdecor_capabilities capability);
-
-/**
- * Show the window menu.
- */
-void
-libdecor_frame_show_window_menu(struct libdecor_frame *frame,
- struct wl_seat *wl_seat,
- uint32_t serial,
- int x,
- int y);
-
-/**
- * Issue a popup grab on the window. Call this when a xdg_popup is mapped, so
- * that it can be properly dismissed by the decorations.
- */
-void
-libdecor_frame_popup_grab(struct libdecor_frame *frame,
- const char *seat_name);
-
-/**
- * Release the popup grab. Call this when you unmap a popup.
- */
-void
-libdecor_frame_popup_ungrab(struct libdecor_frame *frame,
- const char *seat_name);
-
-/**
- * Translate content surface local coordinates to toplevel window local
- * coordinates.
- *
- * This can be used to translate surface coordinates to coordinates useful for
- * e.g. showing the window menu, or positioning a popup.
- */
-void
-libdecor_frame_translate_coordinate(struct libdecor_frame *frame,
- int surface_x,
- int surface_y,
- int *frame_x,
- int *frame_y);
-
-/**
- * Set the min content size.
- *
- * This translates roughly to xdg_toplevel_set_min_size().
- */
-void
-libdecor_frame_set_min_content_size(struct libdecor_frame *frame,
- int content_width,
- int content_height);
-
-/**
- * Set the max content size.
- *
- * This translates roughly to xdg_toplevel_set_max_size().
- */
-void
-libdecor_frame_set_max_content_size(struct libdecor_frame *frame,
- int content_width,
- int content_height);
-
-/**
- * Get the min content size.
- */
-void
-libdecor_frame_get_min_content_size(const struct libdecor_frame *frame,
- int *content_width,
- int *content_height);
-
-/**
- * Get the max content size.
- */
-void
-libdecor_frame_get_max_content_size(const struct libdecor_frame *frame,
- int *content_width,
- int *content_height);
-
-/**
- * Initiate an interactive resize.
- *
- * This roughly translates to xdg_toplevel_resize().
- */
-void
-libdecor_frame_resize(struct libdecor_frame *frame,
- struct wl_seat *wl_seat,
- uint32_t serial,
- enum libdecor_resize_edge edge);
-
-/**
- * Initiate an interactive move.
- *
- * This roughly translates to xdg_toplevel_move().
- */
-void
-libdecor_frame_move(struct libdecor_frame *frame,
- struct wl_seat *wl_seat,
- uint32_t serial);
-
-/**
- * Commit a new window state. This can be called on application driven resizes
- * when the window is floating, or in response to received configurations, i.e.
- * from e.g. interactive resizes or state changes.
- */
-void
-libdecor_frame_commit(struct libdecor_frame *frame,
- struct libdecor_state *state,
- struct libdecor_configuration *configuration);
-
-/**
- * Minimize the window.
- *
- * Roughly translates to xdg_toplevel_set_minimized().
- */
-void
-libdecor_frame_set_minimized(struct libdecor_frame *frame);
-
-/**
- * Maximize the window.
- *
- * Roughly translates to xdg_toplevel_set_maximized().
- */
-void
-libdecor_frame_set_maximized(struct libdecor_frame *frame);
-
-/**
- * Unmaximize the window.
- *
- * Roughly translates to xdg_toplevel_unset_maximized().
- */
-void
-libdecor_frame_unset_maximized(struct libdecor_frame *frame);
-
-/**
- * Fullscreen the window.
- *
- * Roughly translates to xdg_toplevel_set_fullscreen().
- */
-void
-libdecor_frame_set_fullscreen(struct libdecor_frame *frame,
- struct wl_output *output);
-
-/**
- * Unfullscreen the window.
- *
- * Roughly translates to xdg_toplevel_unset_unfullscreen().
- */
-void
-libdecor_frame_unset_fullscreen(struct libdecor_frame *frame);
-
-/**
- * Return true if the window is floating.
- *
- * A window is floating when it's not maximized, tiled, fullscreen, or in any
- * similar way with a fixed size and state.
- * Note that this function uses the "applied" configuration. If this function
- * is used in the 'configure' callback, the provided configuration has to be
- * applied via 'libdecor_frame_commit' first, before it will reflect the current
- * window state from the provided configuration.
- */
-bool
-libdecor_frame_is_floating(struct libdecor_frame *frame);
-
-/**
- * Close the window.
- *
- * Roughly translates to xdg_toplevel_close().
- */
-void
-libdecor_frame_close(struct libdecor_frame *frame);
-
-/**
- * Map the window.
- *
- * This will eventually result in the initial configure event.
- */
-void
-libdecor_frame_map(struct libdecor_frame *frame);
-
-/**
- * Get the associated xdg_surface for content wl_surface.
- */
-struct xdg_surface *
-libdecor_frame_get_xdg_surface(struct libdecor_frame *frame);
-
-/**
- * Get the associated xdg_toplevel for the content wl_surface.
- */
-struct xdg_toplevel *
-libdecor_frame_get_xdg_toplevel(struct libdecor_frame *frame);
-
-/**
- * Get the supported window manager capabilities for the window.
- */
-enum libdecor_wm_capabilities
-libdecor_frame_get_wm_capabilities(struct libdecor_frame *frame);
-
-/**
- * Tell libdecor to set the default pointer cursor when the pointer is over an
- * application surface. The default false.
- */
-void
-libdecor_set_handle_application_cursor(struct libdecor *context,
- bool handle_cursor);
-
-/**
- * Create a new content surface state.
- */
-struct libdecor_state *
-libdecor_state_new(int width,
- int height);
-
-/**
- * Free a content surface state.
- */
-void
-libdecor_state_free(struct libdecor_state *state);
-
-/**
- * Get the expected size of the content for this configuration.
- *
- * If the configuration doesn't contain a size, false is returned.
- */
-bool
-libdecor_configuration_get_content_size(struct libdecor_configuration *configuration,
- struct libdecor_frame *frame,
- int *width,
- int *height);
-
-/**
- * Get the window state for this configuration.
- *
- * If the configuration doesn't contain any associated window state, false is
- * returned, and the application should assume the window state remains
- * unchanged.
- */
-bool
-libdecor_configuration_get_window_state(struct libdecor_configuration *configuration,
- enum libdecor_window_state *window_state);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* LIBDECOR_H */