summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOlivier Fourdan <ofourdan@redhat.com>2022-06-15 16:50:11 +0200
committerMarge Bot <marge-bot@gnome.org>2022-12-17 22:49:44 +0000
commit9e8d32980a17e6bb1a1995cf2436e3d099ad07f1 (patch)
tree8e3ea06f7aad6028ca644941486778aa6e941a18
parentea7175f6b722cdae2ac2f4c794a2b81913b427c9 (diff)
downloadmutter-9e8d32980a17e6bb1a1995cf2436e3d099ad07f1.tar.gz
meta: Move enum definitions to meta-enums.h
Commit bf84b24 created meta-enums.h but it's pretty empty so far, the vast majority of enum definitions is still in common.h. Move the Meta enum definitions to meta-enums.h as one would expect them to be found. Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2467>
-rw-r--r--src/backends/meta-input-settings-private.h1
-rw-r--r--src/meta/common.h393
-rw-r--r--src/meta/meta-context.h1
-rw-r--r--src/meta/meta-enums.h392
4 files changed, 393 insertions, 394 deletions
diff --git a/src/backends/meta-input-settings-private.h b/src/backends/meta-input-settings-private.h
index 21aa0d1ce..d67f7f298 100644
--- a/src/backends/meta-input-settings-private.h
+++ b/src/backends/meta-input-settings-private.h
@@ -31,7 +31,6 @@
#include "backends/meta-backend-types.h"
#include "clutter/clutter.h"
#include "meta/display.h"
-#include "meta/meta-enums.h"
#define META_TYPE_INPUT_SETTINGS (meta_input_settings_get_type ())
G_DECLARE_DERIVABLE_TYPE (MetaInputSettings, meta_input_settings,
diff --git a/src/meta/common.h b/src/meta/common.h
index edadd74fd..e98418638 100644
--- a/src/meta/common.h
+++ b/src/meta/common.h
@@ -32,6 +32,7 @@
#include <gtk/gtk.h>
#include "clutter/clutter.h"
+#include "meta/meta-enums.h"
/**
* SECTION:common
@@ -48,342 +49,6 @@
#define META_EXPORT __attribute__((visibility("default"))) extern
-/**
- * MetaFrameFlags:
- * @META_FRAME_ALLOWS_DELETE: frame allows delete
- * @META_FRAME_ALLOWS_MENU: frame allows menu
- * @META_FRAME_ALLOWS_MINIMIZE: frame allows minimize
- * @META_FRAME_ALLOWS_MAXIMIZE: frame allows maximize
- * @META_FRAME_ALLOWS_VERTICAL_RESIZE: frame allows vertical resize
- * @META_FRAME_ALLOWS_HORIZONTAL_RESIZE: frame allows horizontal resize
- * @META_FRAME_HAS_FOCUS: frame has focus
- * @META_FRAME_SHADED: frame is shaded
- * @META_FRAME_STUCK: frame is stuck
- * @META_FRAME_MAXIMIZED: frame is maximized
- * @META_FRAME_ALLOWS_SHADE: frame allows shade
- * @META_FRAME_ALLOWS_MOVE: frame allows move
- * @META_FRAME_FULLSCREEN: frame allows fullscreen
- * @META_FRAME_ABOVE: frame is above
- * @META_FRAME_TILED_LEFT: frame is tiled to the left
- * @META_FRAME_TILED_RIGHT: frame is tiled to the right
- */
-typedef enum
-{
- META_FRAME_ALLOWS_DELETE = 1 << 0,
- META_FRAME_ALLOWS_MENU = 1 << 1,
- META_FRAME_ALLOWS_MINIMIZE = 1 << 2,
- META_FRAME_ALLOWS_MAXIMIZE = 1 << 3,
- META_FRAME_ALLOWS_VERTICAL_RESIZE = 1 << 4,
- META_FRAME_ALLOWS_HORIZONTAL_RESIZE = 1 << 5,
- META_FRAME_HAS_FOCUS = 1 << 6,
- META_FRAME_SHADED = 1 << 7,
- META_FRAME_STUCK = 1 << 8,
- META_FRAME_MAXIMIZED = 1 << 9,
- META_FRAME_ALLOWS_SHADE = 1 << 10,
- META_FRAME_ALLOWS_MOVE = 1 << 11,
- META_FRAME_FULLSCREEN = 1 << 12,
- META_FRAME_ABOVE = 1 << 13,
- META_FRAME_TILED_LEFT = 1 << 14,
- META_FRAME_TILED_RIGHT = 1 << 15
-} MetaFrameFlags;
-
-/**
- * MetaGrabOp:
- * @META_GRAB_OP_NONE: None
- * @META_GRAB_OP_MOVING: Moving with pointer
- * @META_GRAB_OP_RESIZING_SE: Resizing SE with pointer
- * @META_GRAB_OP_RESIZING_S: Resizing S with pointer
- * @META_GRAB_OP_RESIZING_SW: Resizing SW with pointer
- * @META_GRAB_OP_RESIZING_N: Resizing N with pointer
- * @META_GRAB_OP_RESIZING_NE: Resizing NE with pointer
- * @META_GRAB_OP_RESIZING_NW: Resizing NW with pointer
- * @META_GRAB_OP_RESIZING_W: Resizing W with pointer
- * @META_GRAB_OP_RESIZING_E: Resizing E with pointer
- * @META_GRAB_OP_KEYBOARD_MOVING: Moving with keyboard
- * @META_GRAB_OP_KEYBOARD_RESIZING_UNKNOWN: Resizing with keyboard
- * @META_GRAB_OP_KEYBOARD_RESIZING_S: Resizing S with keyboard
- * @META_GRAB_OP_KEYBOARD_RESIZING_N: Resizing N with keyboard
- * @META_GRAB_OP_KEYBOARD_RESIZING_W: Resizing W with keyboard
- * @META_GRAB_OP_KEYBOARD_RESIZING_E: Resizing E with keyboard
- * @META_GRAB_OP_KEYBOARD_RESIZING_SE: Resizing SE with keyboard
- * @META_GRAB_OP_KEYBOARD_RESIZING_NE: Resizing NE with keyboard
- * @META_GRAB_OP_KEYBOARD_RESIZING_SW: Resizing SW with keyboard
- * @META_GRAB_OP_KEYBOARD_RESIZING_NW: Resizing NS with keyboard
- */
-
-/* The lower 16 bits of the grab operation is its type.
- *
- * Window grab operations have the following layout:
- *
- * 0000 0000 | 0000 0011
- * NSEW flags | type
- *
- * Flags contains whether the operation is a keyboard operation,
- * and whether the keyboard operation is "unknown".
- *
- * The rest of the flags tell you which direction the resize is
- * going in.
- *
- * If the directions field is 0000, then the operation is a move,
- * not a resize.
- */
-enum
-{
- META_GRAB_OP_WINDOW_FLAG_KEYBOARD = 0x0100,
- META_GRAB_OP_WINDOW_FLAG_UNKNOWN = 0x0200,
- META_GRAB_OP_WINDOW_DIR_WEST = 0x1000,
- META_GRAB_OP_WINDOW_DIR_EAST = 0x2000,
- META_GRAB_OP_WINDOW_DIR_SOUTH = 0x4000,
- META_GRAB_OP_WINDOW_DIR_NORTH = 0x8000,
- META_GRAB_OP_WINDOW_DIR_MASK = 0xF000,
-
- /* WGO = "window grab op". shorthand for below */
- _WGO_K = META_GRAB_OP_WINDOW_FLAG_KEYBOARD,
- _WGO_U = META_GRAB_OP_WINDOW_FLAG_UNKNOWN,
- _WGO_W = META_GRAB_OP_WINDOW_DIR_WEST,
- _WGO_E = META_GRAB_OP_WINDOW_DIR_EAST,
- _WGO_S = META_GRAB_OP_WINDOW_DIR_SOUTH,
- _WGO_N = META_GRAB_OP_WINDOW_DIR_NORTH,
-};
-
-typedef enum
-{
- META_GRAB_OP_NONE,
-
- /* Window grab ops. */
- META_GRAB_OP_WINDOW_BASE,
-
- /* For when a Wayland client takes a popup grab. */
- META_GRAB_OP_WAYLAND_POPUP,
-
- /* For when the user clicks on a frame button. */
- META_GRAB_OP_FRAME_BUTTON,
-
- META_GRAB_OP_MOVING = META_GRAB_OP_WINDOW_BASE,
- META_GRAB_OP_RESIZING_NW = META_GRAB_OP_WINDOW_BASE | _WGO_N | _WGO_W,
- META_GRAB_OP_RESIZING_N = META_GRAB_OP_WINDOW_BASE | _WGO_N,
- META_GRAB_OP_RESIZING_NE = META_GRAB_OP_WINDOW_BASE | _WGO_N | _WGO_E,
- META_GRAB_OP_RESIZING_E = META_GRAB_OP_WINDOW_BASE | _WGO_E,
- META_GRAB_OP_RESIZING_SW = META_GRAB_OP_WINDOW_BASE | _WGO_S | _WGO_W,
- META_GRAB_OP_RESIZING_S = META_GRAB_OP_WINDOW_BASE | _WGO_S,
- META_GRAB_OP_RESIZING_SE = META_GRAB_OP_WINDOW_BASE | _WGO_S | _WGO_E,
- META_GRAB_OP_RESIZING_W = META_GRAB_OP_WINDOW_BASE | _WGO_W,
- META_GRAB_OP_KEYBOARD_MOVING = META_GRAB_OP_WINDOW_BASE | _WGO_K,
- META_GRAB_OP_KEYBOARD_RESIZING_UNKNOWN = META_GRAB_OP_WINDOW_BASE | _WGO_K | _WGO_U,
- META_GRAB_OP_KEYBOARD_RESIZING_NW = META_GRAB_OP_WINDOW_BASE | _WGO_N | _WGO_W | _WGO_K,
- META_GRAB_OP_KEYBOARD_RESIZING_N = META_GRAB_OP_WINDOW_BASE | _WGO_N | _WGO_K,
- META_GRAB_OP_KEYBOARD_RESIZING_NE = META_GRAB_OP_WINDOW_BASE | _WGO_N | _WGO_E | _WGO_K,
- META_GRAB_OP_KEYBOARD_RESIZING_E = META_GRAB_OP_WINDOW_BASE | _WGO_E | _WGO_K,
- META_GRAB_OP_KEYBOARD_RESIZING_SW = META_GRAB_OP_WINDOW_BASE | _WGO_S | _WGO_W | _WGO_K,
- META_GRAB_OP_KEYBOARD_RESIZING_S = META_GRAB_OP_WINDOW_BASE | _WGO_S | _WGO_K,
- META_GRAB_OP_KEYBOARD_RESIZING_SE = META_GRAB_OP_WINDOW_BASE | _WGO_S | _WGO_E | _WGO_K,
- META_GRAB_OP_KEYBOARD_RESIZING_W = META_GRAB_OP_WINDOW_BASE | _WGO_W | _WGO_K,
-} MetaGrabOp;
-
-/**
- * MetaCursor:
- * @META_CURSOR_DEFAULT: Default cursor
- * @META_CURSOR_NORTH_RESIZE: Resize northern edge cursor
- * @META_CURSOR_SOUTH_RESIZE: Resize southern edge cursor
- * @META_CURSOR_WEST_RESIZE: Resize western edge cursor
- * @META_CURSOR_EAST_RESIZE: Resize eastern edge cursor
- * @META_CURSOR_SE_RESIZE: Resize south-eastern corner cursor
- * @META_CURSOR_SW_RESIZE: Resize south-western corner cursor
- * @META_CURSOR_NE_RESIZE: Resize north-eastern corner cursor
- * @META_CURSOR_NW_RESIZE: Resize north-western corner cursor
- * @META_CURSOR_MOVE_OR_RESIZE_WINDOW: Move or resize cursor
- * @META_CURSOR_BUSY: Busy cursor
- * @META_CURSOR_DND_IN_DRAG: DND in drag cursor
- * @META_CURSOR_DND_MOVE: DND move cursor
- * @META_CURSOR_DND_COPY: DND copy cursor
- * @META_CURSOR_DND_UNSUPPORTED_TARGET: DND unsupported target
- * @META_CURSOR_POINTING_HAND: pointing hand
- * @META_CURSOR_CROSSHAIR: crosshair (action forbidden)
- * @META_CURSOR_IBEAM: I-beam (text input)
- * @META_CURSOR_BLANK: Invisible cursor
- */
-typedef enum
-{
- META_CURSOR_NONE = 0,
- META_CURSOR_DEFAULT,
- META_CURSOR_NORTH_RESIZE,
- META_CURSOR_SOUTH_RESIZE,
- META_CURSOR_WEST_RESIZE,
- META_CURSOR_EAST_RESIZE,
- META_CURSOR_SE_RESIZE,
- META_CURSOR_SW_RESIZE,
- META_CURSOR_NE_RESIZE,
- META_CURSOR_NW_RESIZE,
- META_CURSOR_MOVE_OR_RESIZE_WINDOW,
- META_CURSOR_BUSY,
- META_CURSOR_DND_IN_DRAG,
- META_CURSOR_DND_MOVE,
- META_CURSOR_DND_COPY,
- META_CURSOR_DND_UNSUPPORTED_TARGET,
- META_CURSOR_POINTING_HAND,
- META_CURSOR_CROSSHAIR,
- META_CURSOR_IBEAM,
- META_CURSOR_BLANK,
- META_CURSOR_LAST
-} MetaCursor;
-
-/**
- * MetaFrameType:
- * @META_FRAME_TYPE_NORMAL: Normal frame
- * @META_FRAME_TYPE_DIALOG: Dialog frame
- * @META_FRAME_TYPE_MODAL_DIALOG: Modal dialog frame
- * @META_FRAME_TYPE_UTILITY: Utility frame
- * @META_FRAME_TYPE_MENU: Menu frame
- * @META_FRAME_TYPE_BORDER: Border frame
- * @META_FRAME_TYPE_ATTACHED: Attached frame
- * @META_FRAME_TYPE_LAST: Marks the end of the #MetaFrameType enumeration
- */
-typedef enum
-{
- META_FRAME_TYPE_NORMAL,
- META_FRAME_TYPE_DIALOG,
- META_FRAME_TYPE_MODAL_DIALOG,
- META_FRAME_TYPE_UTILITY,
- META_FRAME_TYPE_MENU,
- META_FRAME_TYPE_BORDER,
- META_FRAME_TYPE_ATTACHED,
- META_FRAME_TYPE_LAST
-} MetaFrameType;
-
-/**
- * MetaVirtualModifier:
- * @META_VIRTUAL_SHIFT_MASK: Shift mask
- * @META_VIRTUAL_CONTROL_MASK: Control mask
- * @META_VIRTUAL_ALT_MASK: Alt mask
- * @META_VIRTUAL_META_MASK: Meta mask
- * @META_VIRTUAL_SUPER_MASK: Super mask
- * @META_VIRTUAL_HYPER_MASK: Hyper mask
- * @META_VIRTUAL_MOD2_MASK: Mod2 mask
- * @META_VIRTUAL_MOD3_MASK: Mod3 mask
- * @META_VIRTUAL_MOD4_MASK: Mod4 mask
- * @META_VIRTUAL_MOD5_MASK: Mod5 mask
- */
-typedef enum
-{
- /* Create gratuitous divergence from regular
- * X mod bits, to be sure we find bugs
- */
- META_VIRTUAL_SHIFT_MASK = 1 << 5,
- META_VIRTUAL_CONTROL_MASK = 1 << 6,
- META_VIRTUAL_ALT_MASK = 1 << 7,
- META_VIRTUAL_META_MASK = 1 << 8,
- META_VIRTUAL_SUPER_MASK = 1 << 9,
- META_VIRTUAL_HYPER_MASK = 1 << 10,
- META_VIRTUAL_MOD2_MASK = 1 << 11,
- META_VIRTUAL_MOD3_MASK = 1 << 12,
- META_VIRTUAL_MOD4_MASK = 1 << 13,
- META_VIRTUAL_MOD5_MASK = 1 << 14
-} MetaVirtualModifier;
-
-/**
- * MetaDirection:
- * @META_DIRECTION_LEFT: Left
- * @META_DIRECTION_RIGHT: Right
- * @META_DIRECTION_TOP: Top
- * @META_DIRECTION_BOTTOM: Bottom
- * @META_DIRECTION_UP: Up
- * @META_DIRECTION_DOWN: Down
- * @META_DIRECTION_HORIZONTAL: Horizontal
- * @META_DIRECTION_VERTICAL: Vertical
- */
-
-/* Relative directions or sides seem to come up all over the place... */
-/* FIXME: Replace
- * display.[ch]:MetaDisplayDirection,
- * workspace.[ch]:MetaMotionDirection,
- * with the use of MetaDirection.
- */
-typedef enum
-{
- META_DIRECTION_LEFT = 1 << 0,
- META_DIRECTION_RIGHT = 1 << 1,
- META_DIRECTION_TOP = 1 << 2,
- META_DIRECTION_BOTTOM = 1 << 3,
-
- /* Some aliases for making code more readable for various circumstances. */
- META_DIRECTION_UP = META_DIRECTION_TOP,
- META_DIRECTION_DOWN = META_DIRECTION_BOTTOM,
-
- /* A few more definitions using aliases */
- META_DIRECTION_HORIZONTAL = META_DIRECTION_LEFT | META_DIRECTION_RIGHT,
- META_DIRECTION_VERTICAL = META_DIRECTION_UP | META_DIRECTION_DOWN,
-} MetaDirection;
-
-/**
- * MetaMotionDirection:
- * @META_MOTION_UP: Upwards motion
- * @META_MOTION_DOWN: Downwards motion
- * @META_MOTION_LEFT: Motion to the left
- * @META_MOTION_RIGHT: Motion to the right
- * @META_MOTION_UP_LEFT: Motion up and to the left
- * @META_MOTION_UP_RIGHT: Motion up and to the right
- * @META_MOTION_DOWN_LEFT: Motion down and to the left
- * @META_MOTION_DOWN_RIGHT: Motion down and to the right
- */
-
-/* Negative to avoid conflicting with real workspace
- * numbers
- */
-typedef enum
-{
- META_MOTION_UP = -1,
- META_MOTION_DOWN = -2,
- META_MOTION_LEFT = -3,
- META_MOTION_RIGHT = -4,
- /* These are only used for effects */
- META_MOTION_UP_LEFT = -5,
- META_MOTION_UP_RIGHT = -6,
- META_MOTION_DOWN_LEFT = -7,
- META_MOTION_DOWN_RIGHT = -8
-} MetaMotionDirection;
-
-/**
- * MetaSide:
- * @META_SIDE_LEFT: Left side
- * @META_SIDE_RIGHT: Right side
- * @META_SIDE_TOP: Top side
- * @META_SIDE_BOTTOM: Bottom side
- */
-
-/* Sometimes we want to talk about sides instead of directions; note
- * that the values must be as follows or meta_window_update_struts()
- * won't work. Using these values also is a safety blanket since
- * MetaDirection used to be used as a side.
- */
-typedef enum
-{
- META_SIDE_LEFT = META_DIRECTION_LEFT,
- META_SIDE_RIGHT = META_DIRECTION_RIGHT,
- META_SIDE_TOP = META_DIRECTION_TOP,
- META_SIDE_BOTTOM = META_DIRECTION_BOTTOM
-} MetaSide;
-
-/**
- * MetaButtonFunction:
- * @META_BUTTON_FUNCTION_MENU: Menu
- * @META_BUTTON_FUNCTION_MINIMIZE: Minimize
- * @META_BUTTON_FUNCTION_MAXIMIZE: Maximize
- * @META_BUTTON_FUNCTION_CLOSE: Close
- * @META_BUTTON_FUNCTION_LAST: Marks the end of the #MetaButtonFunction enumeration
- *
- * Function a window button can have. Note, you can't add stuff here
- * without extending the theme format to draw a new function and
- * breaking all existing themes.
- */
-typedef enum
-{
- META_BUTTON_FUNCTION_MENU,
- META_BUTTON_FUNCTION_MINIMIZE,
- META_BUTTON_FUNCTION_MAXIMIZE,
- META_BUTTON_FUNCTION_CLOSE,
- META_BUTTON_FUNCTION_LAST
-} MetaButtonFunction;
-
#define MAX_BUTTONS_PER_CORNER META_BUTTON_FUNCTION_LAST
/* Keep array size in sync with MAX_BUTTONS_PER_CORNER */
@@ -407,19 +72,6 @@ struct _MetaButtonLayout
};
/**
- * MetaWindowMenuType:
- * @META_WINDOW_MENU_WM: the window manager menu
- * @META_WINDOW_MENU_APP: the (fallback) app menu
- *
- * Menu the compositor should display for a given window
- */
-typedef enum
-{
- META_WINDOW_MENU_WM,
- META_WINDOW_MENU_APP
-} MetaWindowMenuType;
-
-/**
* MetaFrameBorders:
* @visible: inner visible portion of frame border
* @invisible: outer invisible portion of frame border
@@ -503,47 +155,4 @@ void meta_frame_borders_clear (MetaFrameBorders *self);
/************************************************************/
-/**
- * MetaStackLayer:
- * @META_LAYER_DESKTOP: Desktop layer
- * @META_LAYER_BOTTOM: Bottom layer
- * @META_LAYER_NORMAL: Normal layer
- * @META_LAYER_TOP: Top layer
- * @META_LAYER_DOCK: Dock layer
- * @META_LAYER_OVERRIDE_REDIRECT: Override-redirect layer
- * @META_LAYER_LAST: Marks the end of the #MetaStackLayer enumeration
- *
- * Layers a window can be in.
- * These MUST be in the order of stacking.
- */
-typedef enum
-{
- META_LAYER_DESKTOP = 0,
- META_LAYER_BOTTOM = 1,
- META_LAYER_NORMAL = 2,
- META_LAYER_TOP = 4, /* Same as DOCK; see EWMH and bug 330717 */
- META_LAYER_DOCK = 4,
- META_LAYER_OVERRIDE_REDIRECT = 7,
- META_LAYER_LAST = 8
-} MetaStackLayer;
-
-/* MetaGravity: (skip)
- *
- * Identical to the corresponding gravity value macros from libX11.
- */
-typedef enum _MetaGravity
-{
- META_GRAVITY_NONE = 0,
- META_GRAVITY_NORTH_WEST = 1,
- META_GRAVITY_NORTH = 2,
- META_GRAVITY_NORTH_EAST = 3,
- META_GRAVITY_WEST = 4,
- META_GRAVITY_CENTER = 5,
- META_GRAVITY_EAST = 6,
- META_GRAVITY_SOUTH_WEST = 7,
- META_GRAVITY_SOUTH = 8,
- META_GRAVITY_SOUTH_EAST = 9,
- META_GRAVITY_STATIC = 10,
-} MetaGravity;
-
#endif
diff --git a/src/meta/meta-context.h b/src/meta/meta-context.h
index 6c7d6d5b9..5031892df 100644
--- a/src/meta/meta-context.h
+++ b/src/meta/meta-context.h
@@ -24,7 +24,6 @@
#include <glib-object.h>
#include "meta/common.h"
-#include "meta/meta-enums.h"
#include "meta/types.h"
#define META_TYPE_CONTEXT (meta_context_get_type ())
diff --git a/src/meta/meta-enums.h b/src/meta/meta-enums.h
index 1cf9a91e0..c4125e1cd 100644
--- a/src/meta/meta-enums.h
+++ b/src/meta/meta-enums.h
@@ -28,6 +28,398 @@ typedef enum _MetaCompositorType
} MetaCompositorType;
/**
+ * MetaFrameFlags:
+ * @META_FRAME_ALLOWS_DELETE: frame allows delete
+ * @META_FRAME_ALLOWS_MENU: frame allows menu
+ * @META_FRAME_ALLOWS_MINIMIZE: frame allows minimize
+ * @META_FRAME_ALLOWS_MAXIMIZE: frame allows maximize
+ * @META_FRAME_ALLOWS_VERTICAL_RESIZE: frame allows vertical resize
+ * @META_FRAME_ALLOWS_HORIZONTAL_RESIZE: frame allows horizontal resize
+ * @META_FRAME_HAS_FOCUS: frame has focus
+ * @META_FRAME_SHADED: frame is shaded
+ * @META_FRAME_STUCK: frame is stuck
+ * @META_FRAME_MAXIMIZED: frame is maximized
+ * @META_FRAME_ALLOWS_SHADE: frame allows shade
+ * @META_FRAME_ALLOWS_MOVE: frame allows move
+ * @META_FRAME_FULLSCREEN: frame allows fullscreen
+ * @META_FRAME_ABOVE: frame is above
+ * @META_FRAME_TILED_LEFT: frame is tiled to the left
+ * @META_FRAME_TILED_RIGHT: frame is tiled to the right
+ */
+typedef enum
+{
+ META_FRAME_ALLOWS_DELETE = 1 << 0,
+ META_FRAME_ALLOWS_MENU = 1 << 1,
+ META_FRAME_ALLOWS_MINIMIZE = 1 << 2,
+ META_FRAME_ALLOWS_MAXIMIZE = 1 << 3,
+ META_FRAME_ALLOWS_VERTICAL_RESIZE = 1 << 4,
+ META_FRAME_ALLOWS_HORIZONTAL_RESIZE = 1 << 5,
+ META_FRAME_HAS_FOCUS = 1 << 6,
+ META_FRAME_SHADED = 1 << 7,
+ META_FRAME_STUCK = 1 << 8,
+ META_FRAME_MAXIMIZED = 1 << 9,
+ META_FRAME_ALLOWS_SHADE = 1 << 10,
+ META_FRAME_ALLOWS_MOVE = 1 << 11,
+ META_FRAME_FULLSCREEN = 1 << 12,
+ META_FRAME_ABOVE = 1 << 13,
+ META_FRAME_TILED_LEFT = 1 << 14,
+ META_FRAME_TILED_RIGHT = 1 << 15
+} MetaFrameFlags;
+
+/**
+ * MetaGrabOp:
+ * @META_GRAB_OP_NONE: None
+ * @META_GRAB_OP_MOVING: Moving with pointer
+ * @META_GRAB_OP_RESIZING_SE: Resizing SE with pointer
+ * @META_GRAB_OP_RESIZING_S: Resizing S with pointer
+ * @META_GRAB_OP_RESIZING_SW: Resizing SW with pointer
+ * @META_GRAB_OP_RESIZING_N: Resizing N with pointer
+ * @META_GRAB_OP_RESIZING_NE: Resizing NE with pointer
+ * @META_GRAB_OP_RESIZING_NW: Resizing NW with pointer
+ * @META_GRAB_OP_RESIZING_W: Resizing W with pointer
+ * @META_GRAB_OP_RESIZING_E: Resizing E with pointer
+ * @META_GRAB_OP_KEYBOARD_MOVING: Moving with keyboard
+ * @META_GRAB_OP_KEYBOARD_RESIZING_UNKNOWN: Resizing with keyboard
+ * @META_GRAB_OP_KEYBOARD_RESIZING_S: Resizing S with keyboard
+ * @META_GRAB_OP_KEYBOARD_RESIZING_N: Resizing N with keyboard
+ * @META_GRAB_OP_KEYBOARD_RESIZING_W: Resizing W with keyboard
+ * @META_GRAB_OP_KEYBOARD_RESIZING_E: Resizing E with keyboard
+ * @META_GRAB_OP_KEYBOARD_RESIZING_SE: Resizing SE with keyboard
+ * @META_GRAB_OP_KEYBOARD_RESIZING_NE: Resizing NE with keyboard
+ * @META_GRAB_OP_KEYBOARD_RESIZING_SW: Resizing SW with keyboard
+ * @META_GRAB_OP_KEYBOARD_RESIZING_NW: Resizing NS with keyboard
+ */
+
+/* The lower 16 bits of the grab operation is its type.
+ *
+ * Window grab operations have the following layout:
+ *
+ * 0000 0000 | 0000 0011
+ * NSEW flags | type
+ *
+ * Flags contains whether the operation is a keyboard operation,
+ * and whether the keyboard operation is "unknown".
+ *
+ * The rest of the flags tell you which direction the resize is
+ * going in.
+ *
+ * If the directions field is 0000, then the operation is a move,
+ * not a resize.
+ */
+enum
+{
+ META_GRAB_OP_WINDOW_FLAG_KEYBOARD = 0x0100,
+ META_GRAB_OP_WINDOW_FLAG_UNKNOWN = 0x0200,
+ META_GRAB_OP_WINDOW_DIR_WEST = 0x1000,
+ META_GRAB_OP_WINDOW_DIR_EAST = 0x2000,
+ META_GRAB_OP_WINDOW_DIR_SOUTH = 0x4000,
+ META_GRAB_OP_WINDOW_DIR_NORTH = 0x8000,
+ META_GRAB_OP_WINDOW_DIR_MASK = 0xF000,
+
+ /* WGO = "window grab op". shorthand for below */
+ _WGO_K = META_GRAB_OP_WINDOW_FLAG_KEYBOARD,
+ _WGO_U = META_GRAB_OP_WINDOW_FLAG_UNKNOWN,
+ _WGO_W = META_GRAB_OP_WINDOW_DIR_WEST,
+ _WGO_E = META_GRAB_OP_WINDOW_DIR_EAST,
+ _WGO_S = META_GRAB_OP_WINDOW_DIR_SOUTH,
+ _WGO_N = META_GRAB_OP_WINDOW_DIR_NORTH,
+};
+
+typedef enum
+{
+ META_GRAB_OP_NONE,
+
+ /* Window grab ops. */
+ META_GRAB_OP_WINDOW_BASE,
+
+ /* For when a Wayland client takes a popup grab. */
+ META_GRAB_OP_WAYLAND_POPUP,
+
+ /* For when the user clicks on a frame button. */
+ META_GRAB_OP_FRAME_BUTTON,
+
+ META_GRAB_OP_MOVING = META_GRAB_OP_WINDOW_BASE,
+ META_GRAB_OP_RESIZING_NW = META_GRAB_OP_WINDOW_BASE | _WGO_N | _WGO_W,
+ META_GRAB_OP_RESIZING_N = META_GRAB_OP_WINDOW_BASE | _WGO_N,
+ META_GRAB_OP_RESIZING_NE = META_GRAB_OP_WINDOW_BASE | _WGO_N | _WGO_E,
+ META_GRAB_OP_RESIZING_E = META_GRAB_OP_WINDOW_BASE | _WGO_E,
+ META_GRAB_OP_RESIZING_SW = META_GRAB_OP_WINDOW_BASE | _WGO_S | _WGO_W,
+ META_GRAB_OP_RESIZING_S = META_GRAB_OP_WINDOW_BASE | _WGO_S,
+ META_GRAB_OP_RESIZING_SE = META_GRAB_OP_WINDOW_BASE | _WGO_S | _WGO_E,
+ META_GRAB_OP_RESIZING_W = META_GRAB_OP_WINDOW_BASE | _WGO_W,
+ META_GRAB_OP_KEYBOARD_MOVING = META_GRAB_OP_WINDOW_BASE | _WGO_K,
+ META_GRAB_OP_KEYBOARD_RESIZING_UNKNOWN = META_GRAB_OP_WINDOW_BASE | _WGO_K | _WGO_U,
+ META_GRAB_OP_KEYBOARD_RESIZING_NW = META_GRAB_OP_WINDOW_BASE | _WGO_N | _WGO_W | _WGO_K,
+ META_GRAB_OP_KEYBOARD_RESIZING_N = META_GRAB_OP_WINDOW_BASE | _WGO_N | _WGO_K,
+ META_GRAB_OP_KEYBOARD_RESIZING_NE = META_GRAB_OP_WINDOW_BASE | _WGO_N | _WGO_E | _WGO_K,
+ META_GRAB_OP_KEYBOARD_RESIZING_E = META_GRAB_OP_WINDOW_BASE | _WGO_E | _WGO_K,
+ META_GRAB_OP_KEYBOARD_RESIZING_SW = META_GRAB_OP_WINDOW_BASE | _WGO_S | _WGO_W | _WGO_K,
+ META_GRAB_OP_KEYBOARD_RESIZING_S = META_GRAB_OP_WINDOW_BASE | _WGO_S | _WGO_K,
+ META_GRAB_OP_KEYBOARD_RESIZING_SE = META_GRAB_OP_WINDOW_BASE | _WGO_S | _WGO_E | _WGO_K,
+ META_GRAB_OP_KEYBOARD_RESIZING_W = META_GRAB_OP_WINDOW_BASE | _WGO_W | _WGO_K,
+} MetaGrabOp;
+
+/**
+ * MetaCursor:
+ * @META_CURSOR_DEFAULT: Default cursor
+ * @META_CURSOR_NORTH_RESIZE: Resize northern edge cursor
+ * @META_CURSOR_SOUTH_RESIZE: Resize southern edge cursor
+ * @META_CURSOR_WEST_RESIZE: Resize western edge cursor
+ * @META_CURSOR_EAST_RESIZE: Resize eastern edge cursor
+ * @META_CURSOR_SE_RESIZE: Resize south-eastern corner cursor
+ * @META_CURSOR_SW_RESIZE: Resize south-western corner cursor
+ * @META_CURSOR_NE_RESIZE: Resize north-eastern corner cursor
+ * @META_CURSOR_NW_RESIZE: Resize north-western corner cursor
+ * @META_CURSOR_MOVE_OR_RESIZE_WINDOW: Move or resize cursor
+ * @META_CURSOR_BUSY: Busy cursor
+ * @META_CURSOR_DND_IN_DRAG: DND in drag cursor
+ * @META_CURSOR_DND_MOVE: DND move cursor
+ * @META_CURSOR_DND_COPY: DND copy cursor
+ * @META_CURSOR_DND_UNSUPPORTED_TARGET: DND unsupported target
+ * @META_CURSOR_POINTING_HAND: pointing hand
+ * @META_CURSOR_CROSSHAIR: crosshair (action forbidden)
+ * @META_CURSOR_IBEAM: I-beam (text input)
+ * @META_CURSOR_BLANK: Invisible cursor
+ */
+typedef enum
+{
+ META_CURSOR_NONE = 0,
+ META_CURSOR_DEFAULT,
+ META_CURSOR_NORTH_RESIZE,
+ META_CURSOR_SOUTH_RESIZE,
+ META_CURSOR_WEST_RESIZE,
+ META_CURSOR_EAST_RESIZE,
+ META_CURSOR_SE_RESIZE,
+ META_CURSOR_SW_RESIZE,
+ META_CURSOR_NE_RESIZE,
+ META_CURSOR_NW_RESIZE,
+ META_CURSOR_MOVE_OR_RESIZE_WINDOW,
+ META_CURSOR_BUSY,
+ META_CURSOR_DND_IN_DRAG,
+ META_CURSOR_DND_MOVE,
+ META_CURSOR_DND_COPY,
+ META_CURSOR_DND_UNSUPPORTED_TARGET,
+ META_CURSOR_POINTING_HAND,
+ META_CURSOR_CROSSHAIR,
+ META_CURSOR_IBEAM,
+ META_CURSOR_BLANK,
+ META_CURSOR_LAST
+} MetaCursor;
+
+/**
+ * MetaFrameType:
+ * @META_FRAME_TYPE_NORMAL: Normal frame
+ * @META_FRAME_TYPE_DIALOG: Dialog frame
+ * @META_FRAME_TYPE_MODAL_DIALOG: Modal dialog frame
+ * @META_FRAME_TYPE_UTILITY: Utility frame
+ * @META_FRAME_TYPE_MENU: Menu frame
+ * @META_FRAME_TYPE_BORDER: Border frame
+ * @META_FRAME_TYPE_ATTACHED: Attached frame
+ * @META_FRAME_TYPE_LAST: Marks the end of the #MetaFrameType enumeration
+ */
+typedef enum
+{
+ META_FRAME_TYPE_NORMAL,
+ META_FRAME_TYPE_DIALOG,
+ META_FRAME_TYPE_MODAL_DIALOG,
+ META_FRAME_TYPE_UTILITY,
+ META_FRAME_TYPE_MENU,
+ META_FRAME_TYPE_BORDER,
+ META_FRAME_TYPE_ATTACHED,
+ META_FRAME_TYPE_LAST
+} MetaFrameType;
+
+/**
+ * MetaVirtualModifier:
+ * @META_VIRTUAL_SHIFT_MASK: Shift mask
+ * @META_VIRTUAL_CONTROL_MASK: Control mask
+ * @META_VIRTUAL_ALT_MASK: Alt mask
+ * @META_VIRTUAL_META_MASK: Meta mask
+ * @META_VIRTUAL_SUPER_MASK: Super mask
+ * @META_VIRTUAL_HYPER_MASK: Hyper mask
+ * @META_VIRTUAL_MOD2_MASK: Mod2 mask
+ * @META_VIRTUAL_MOD3_MASK: Mod3 mask
+ * @META_VIRTUAL_MOD4_MASK: Mod4 mask
+ * @META_VIRTUAL_MOD5_MASK: Mod5 mask
+ */
+typedef enum
+{
+ /* Create gratuitous divergence from regular
+ * X mod bits, to be sure we find bugs
+ */
+ META_VIRTUAL_SHIFT_MASK = 1 << 5,
+ META_VIRTUAL_CONTROL_MASK = 1 << 6,
+ META_VIRTUAL_ALT_MASK = 1 << 7,
+ META_VIRTUAL_META_MASK = 1 << 8,
+ META_VIRTUAL_SUPER_MASK = 1 << 9,
+ META_VIRTUAL_HYPER_MASK = 1 << 10,
+ META_VIRTUAL_MOD2_MASK = 1 << 11,
+ META_VIRTUAL_MOD3_MASK = 1 << 12,
+ META_VIRTUAL_MOD4_MASK = 1 << 13,
+ META_VIRTUAL_MOD5_MASK = 1 << 14
+} MetaVirtualModifier;
+
+/**
+ * MetaDirection:
+ * @META_DIRECTION_LEFT: Left
+ * @META_DIRECTION_RIGHT: Right
+ * @META_DIRECTION_TOP: Top
+ * @META_DIRECTION_BOTTOM: Bottom
+ * @META_DIRECTION_UP: Up
+ * @META_DIRECTION_DOWN: Down
+ * @META_DIRECTION_HORIZONTAL: Horizontal
+ * @META_DIRECTION_VERTICAL: Vertical
+ */
+
+/* Relative directions or sides seem to come up all over the place... */
+/* FIXME: Replace
+ * display.[ch]:MetaDisplayDirection,
+ * workspace.[ch]:MetaMotionDirection,
+ * with the use of MetaDirection.
+ */
+typedef enum
+{
+ META_DIRECTION_LEFT = 1 << 0,
+ META_DIRECTION_RIGHT = 1 << 1,
+ META_DIRECTION_TOP = 1 << 2,
+ META_DIRECTION_BOTTOM = 1 << 3,
+
+ /* Some aliases for making code more readable for various circumstances. */
+ META_DIRECTION_UP = META_DIRECTION_TOP,
+ META_DIRECTION_DOWN = META_DIRECTION_BOTTOM,
+
+ /* A few more definitions using aliases */
+ META_DIRECTION_HORIZONTAL = META_DIRECTION_LEFT | META_DIRECTION_RIGHT,
+ META_DIRECTION_VERTICAL = META_DIRECTION_UP | META_DIRECTION_DOWN,
+} MetaDirection;
+
+/**
+ * MetaMotionDirection:
+ * @META_MOTION_UP: Upwards motion
+ * @META_MOTION_DOWN: Downwards motion
+ * @META_MOTION_LEFT: Motion to the left
+ * @META_MOTION_RIGHT: Motion to the right
+ * @META_MOTION_UP_LEFT: Motion up and to the left
+ * @META_MOTION_UP_RIGHT: Motion up and to the right
+ * @META_MOTION_DOWN_LEFT: Motion down and to the left
+ * @META_MOTION_DOWN_RIGHT: Motion down and to the right
+ */
+
+/* Negative to avoid conflicting with real workspace
+ * numbers
+ */
+typedef enum
+{
+ META_MOTION_UP = -1,
+ META_MOTION_DOWN = -2,
+ META_MOTION_LEFT = -3,
+ META_MOTION_RIGHT = -4,
+ /* These are only used for effects */
+ META_MOTION_UP_LEFT = -5,
+ META_MOTION_UP_RIGHT = -6,
+ META_MOTION_DOWN_LEFT = -7,
+ META_MOTION_DOWN_RIGHT = -8
+} MetaMotionDirection;
+
+/**
+ * MetaSide:
+ * @META_SIDE_LEFT: Left side
+ * @META_SIDE_RIGHT: Right side
+ * @META_SIDE_TOP: Top side
+ * @META_SIDE_BOTTOM: Bottom side
+ */
+
+/* Sometimes we want to talk about sides instead of directions; note
+ * that the values must be as follows or meta_window_update_struts()
+ * won't work. Using these values also is a safety blanket since
+ * MetaDirection used to be used as a side.
+ */
+typedef enum
+{
+ META_SIDE_LEFT = META_DIRECTION_LEFT,
+ META_SIDE_RIGHT = META_DIRECTION_RIGHT,
+ META_SIDE_TOP = META_DIRECTION_TOP,
+ META_SIDE_BOTTOM = META_DIRECTION_BOTTOM
+} MetaSide;
+
+/**
+ * MetaButtonFunction:
+ * @META_BUTTON_FUNCTION_MENU: Menu
+ * @META_BUTTON_FUNCTION_MINIMIZE: Minimize
+ * @META_BUTTON_FUNCTION_MAXIMIZE: Maximize
+ * @META_BUTTON_FUNCTION_CLOSE: Close
+ * @META_BUTTON_FUNCTION_LAST: Marks the end of the #MetaButtonFunction enumeration
+ *
+ * Function a window button can have. Note, you can't add stuff here
+ * without extending the theme format to draw a new function and
+ * breaking all existing themes.
+ */
+typedef enum
+{
+ META_BUTTON_FUNCTION_MENU,
+ META_BUTTON_FUNCTION_MINIMIZE,
+ META_BUTTON_FUNCTION_MAXIMIZE,
+ META_BUTTON_FUNCTION_CLOSE,
+ META_BUTTON_FUNCTION_LAST
+} MetaButtonFunction;
+
+/**
+ * MetaWindowMenuType:
+ * @META_WINDOW_MENU_WM: the window manager menu
+ * @META_WINDOW_MENU_APP: the (fallback) app menu
+ *
+ * Menu the compositor should display for a given window
+ */
+typedef enum
+{
+ META_WINDOW_MENU_WM,
+ META_WINDOW_MENU_APP
+} MetaWindowMenuType;
+
+/**
+ * MetaStackLayer:
+ * @META_LAYER_DESKTOP: Desktop layer
+ * @META_LAYER_BOTTOM: Bottom layer
+ * @META_LAYER_NORMAL: Normal layer
+ * @META_LAYER_TOP: Top layer
+ * @META_LAYER_DOCK: Dock layer
+ * @META_LAYER_OVERRIDE_REDIRECT: Override-redirect layer
+ * @META_LAYER_LAST: Marks the end of the #MetaStackLayer enumeration
+ *
+ * Layers a window can be in.
+ * These MUST be in the order of stacking.
+ */
+typedef enum
+{
+ META_LAYER_DESKTOP = 0,
+ META_LAYER_BOTTOM = 1,
+ META_LAYER_NORMAL = 2,
+ META_LAYER_TOP = 4, /* Same as DOCK; see EWMH and bug 330717 */
+ META_LAYER_DOCK = 4,
+ META_LAYER_OVERRIDE_REDIRECT = 7,
+ META_LAYER_LAST = 8
+} MetaStackLayer;
+
+/* MetaGravity: (skip)
+ *
+ * Identical to the corresponding gravity value macros from libX11.
+ */
+typedef enum _MetaGravity
+{
+ META_GRAVITY_NONE = 0,
+ META_GRAVITY_NORTH_WEST = 1,
+ META_GRAVITY_NORTH = 2,
+ META_GRAVITY_NORTH_EAST = 3,
+ META_GRAVITY_WEST = 4,
+ META_GRAVITY_CENTER = 5,
+ META_GRAVITY_EAST = 6,
+ META_GRAVITY_SOUTH_WEST = 7,
+ META_GRAVITY_SOUTH = 8,
+ META_GRAVITY_SOUTH_EAST = 9,
+ META_GRAVITY_STATIC = 10,
+} MetaGravity;
+
+/**
* MetaKeyboardA11yFlags:
* @META_A11Y_KEYBOARD_ENABLED:
* @META_A11Y_TIMEOUT_ENABLED: