## Common Common — Mutter common types |

## Functions

void | meta_frame_borders_clear ()
#define | META_PRIORITY_RESIZE
#define | META_PRIORITY_BEFORE_REDRAW
#define | META_PRIORITY_REDRAW
#define | META_PRIORITY_PREFS_NOTIFY
#define | POINT_IN_RECT()

## Types and Values

#define | META_VIRTUAL_CORE_POINTER_ID
#define | META_VIRTUAL_CORE_KEYBOARD_ID
enum | MetaFrameFlags
enum | MetaGrabOp
enum | MetaCursor
enum | MetaFrameType
enum | MetaVirtualModifier
enum | MetaDirection
enum | MetaMotionDirection
enum | MetaSide
enum | MetaButtonFunction
#define | MAX_BUTTONS_PER_CORNER
struct | MetaButtonLayout
struct | MetaFrameBorders
#define | META_ICON_WIDTH
#define | META_ICON_HEIGHT
#define | META_MINI_ICON_WIDTH
#define | META_MINI_ICON_HEIGHT
#define | META_DEFAULT_ICON_NAME
enum | MetaStackLayer

## Description

## Functions

### meta_frame_borders_clear ()

    void
    meta_frame_borders_clear (MetaFrameBorders *self);

### META_PRIORITY_RESIZE

    #define META_PRIORITY_RESIZE    (G_PRIORITY_HIGH_IDLE + 15)

### META_PRIORITY_BEFORE_REDRAW

    #define META_PRIORITY_BEFORE_REDRAW  (G_PRIORITY_HIGH_IDLE + 40)

### META_PRIORITY_REDRAW

    #define META_PRIORITY_REDRAW    (G_PRIORITY_HIGH_IDLE + 50)

### META_PRIORITY_PREFS_NOTIFY

    #define META_PRIORITY_PREFS_NOTIFY   (G_PRIORITY_DEFAULT_IDLE + 10)

### POINT_IN_RECT()

    #define             POINT_IN_RECT(xcoord, ycoord, rect)

## Types and Values

### META_VIRTUAL_CORE_POINTER_ID

    #define META_VIRTUAL_CORE_POINTER_ID 2

### META_VIRTUAL_CORE_KEYBOARD_ID

    #define META_VIRTUAL_CORE_KEYBOARD_ID 3

### enum MetaFrameFlags

#### Members

META_FRAME_ALLOWS_DELETE | frame allows delete |
META_FRAME_ALLOWS_MENU | frame allows menu |
META_FRAME_ALLOWS_APPMENU | frame allows (fallback) app 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_IS_FLASHING | frame is flashing |
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 |

### enum MetaGrabOp

#### Members

META_GRAB_OP_NONE | None |
META_GRAB_OP_WINDOW_BASE |  |
META_GRAB_OP_COMPOSITOR | Compositor asked for grab |
META_GRAB_OP_WAYLAND_POPUP |  |
META_GRAB_OP_FRAME_BUTTON |  |
META_GRAB_OP_MOVING | Moving with pointer |
META_GRAB_OP_RESIZING_NW | Resizing NW with pointer |
META_GRAB_OP_RESIZING_N | Resizing N with pointer |
META_GRAB_OP_RESIZING_NE | Resizing NE with pointer |
META_GRAB_OP_RESIZING_E | Resizing E with pointer |
META_GRAB_OP_RESIZING_SW | Resizing SW with pointer |
META_GRAB_OP_RESIZING_S | Resizing S with pointer |
META_GRAB_OP_RESIZING_SE | Resizing SE with pointer |
META_GRAB_OP_RESIZING_W | Resizing W with pointer |
META_GRAB_OP_KEYBOARD_MOVING | Moving with keyboard |
META_GRAB_OP_KEYBOARD_RESIZING_UNKNOWN | Resizing with keyboard |
META_GRAB_OP_KEYBOARD_RESIZING_NW | Resizing NS with keyboard |
META_GRAB_OP_KEYBOARD_RESIZING_N | Resizing N with keyboard |
META_GRAB_OP_KEYBOARD_RESIZING_NE | Resizing NE with keyboard |
META_GRAB_OP_KEYBOARD_RESIZING_E | Resizing E with keyboard |
META_GRAB_OP_KEYBOARD_RESIZING_SW | Resizing SW with keyboard |
META_GRAB_OP_KEYBOARD_RESIZING_S | Resizing S with keyboard |
META_GRAB_OP_KEYBOARD_RESIZING_SE | Resizing SE with keyboard |
META_GRAB_OP_KEYBOARD_RESIZING_W | Resizing W with keyboard |

### enum MetaCursor

#### Members

META_CURSOR_NONE |  |
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_LAST |  |

### enum MetaFrameType

#### Members

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 |

### enum MetaVirtualModifier

#### Members

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 |

### enum MetaDirection

#### Members

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 |

### enum MetaMotionDirection

#### Members

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 |

### enum MetaSide

#### Members

META_SIDE_LEFT | Left side |
META_SIDE_RIGHT | Right side |
META_SIDE_TOP | Top side |
META_SIDE_BOTTOM | Bottom side |

### enum MetaButtonFunction

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.

#### Members

META_BUTTON_FUNCTION_MENU | Menu |
META_BUTTON_FUNCTION_MINIMIZE | Minimize |
META_BUTTON_FUNCTION_MAXIMIZE | Maximize |
META_BUTTON_FUNCTION_CLOSE | Close |
META_BUTTON_FUNCTION_SHADE | Shade |
META_BUTTON_FUNCTION_ABOVE | Above |
META_BUTTON_FUNCTION_STICK | Stick |
META_BUTTON_FUNCTION_UNSHADE | Unshade |
META_BUTTON_FUNCTION_UNABOVE | Unabove |
META_BUTTON_FUNCTION_UNSTICK | Unstick |
META_BUTTON_FUNCTION_APPMENU |  |
META_BUTTON_FUNCTION_LAST | Marks the end of the MetaButtonFunction enumeration |

### MAX_BUTTONS_PER_CORNER

    #define MAX_BUTTONS_PER_CORNER META_BUTTON_FUNCTION_LAST

### struct MetaButtonLayout

    struct MetaButtonLayout {
      /* buttons in the group on the left side */
      MetaButtonFunction left_buttons[MAX_BUTTONS_PER_CORNER];
      gboolean left_buttons_has_spacer[MAX_BUTTONS_PER_CORNER];

      /* buttons in the group on the right side */
      MetaButtonFunction right_buttons[MAX_BUTTONS_PER_CORNER];
      gboolean right_buttons_has_spacer[MAX_BUTTONS_PER_CORNER];
    };

#### Members

MetaButtonFunction `left_buttons`[MAX_BUTTONS_PER_CORNER]; | . | [array fixed-size=11]
gboolean `left_buttons_has_spacer`[MAX_BUTTONS_PER_CORNER]; | . | [array fixed-size=11]
MetaButtonFunction `right_buttons`[MAX_BUTTONS_PER_CORNER]; | . | [array fixed-size=11]
gboolean `right_buttons_has_spacer`[MAX_BUTTONS_PER_CORNER]; | . | [array fixed-size=11]

### struct MetaFrameBorders

    struct MetaFrameBorders {
      /* The frame border is made up of two pieces - an inner visible portion
       * and an outer portion that is invisible but responds to events.
       */
      GtkBorder visible;
      GtkBorder invisible;

      /* For convenience, we have a "total" border which is equal to the sum
       * of the two borders above. */
      GtkBorder total;
    };

#### Members

GtkBorder `visible`; | inner visible portion of frame border |
GtkBorder `invisible`; | outer invisible portion of frame border |
GtkBorder `total`; | sum of the two borders above |

### META_ICON_WIDTH

    #define META_ICON_WIDTH 96

### META_ICON_HEIGHT

    #define META_ICON_HEIGHT 96

### META_MINI_ICON_WIDTH

    #define META_MINI_ICON_WIDTH 16

### META_MINI_ICON_HEIGHT

    #define META_MINI_ICON_HEIGHT 16

### META_DEFAULT_ICON_NAME

    #define META_DEFAULT_ICON_NAME "window"

### enum MetaStackLayer

Layers a window can be in. These MUST be in the order of stacking.

#### Members

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_FULLSCREEN | Fullscreen layer |
META_LAYER_FOCUSED_WINDOW | Focused window layer |
META_LAYER_OVERRIDE_REDIRECT | Override-redirect layer |
META_LAYER_LAST | Marks the end of the MetaStackLayer enumeration |