X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=openbox%2Fframe.h;h=d5a9c7ce0412711c6b946c755123ec180fb1741e;hb=0621e22932b40ada705abbeb67b67c0e37ef7654;hp=4f117fae89607b83f9174cc5a98b7a9e86f3fd01;hpb=7d943a950e39d4d93113c0efc7b41916f6b8c66d;p=chaz%2Fopenbox diff --git a/openbox/frame.h b/openbox/frame.h index 4f117fae..d5a9c7ce 100644 --- a/openbox/frame.h +++ b/openbox/frame.h @@ -10,13 +10,15 @@ struct _ObClient; typedef enum { OB_FRAME_CONTEXT_NONE, - OB_FRAME_CONTEXT_ROOT, + OB_FRAME_CONTEXT_DESKTOP, OB_FRAME_CONTEXT_CLIENT, OB_FRAME_CONTEXT_TITLEBAR, OB_FRAME_CONTEXT_HANDLE, OB_FRAME_CONTEXT_FRAME, OB_FRAME_CONTEXT_BLCORNER, OB_FRAME_CONTEXT_BRCORNER, + OB_FRAME_CONTEXT_TLCORNER, + OB_FRAME_CONTEXT_TRCORNER, OB_FRAME_CONTEXT_MAXIMIZE, OB_FRAME_CONTEXT_ALLDESKTOPS, OB_FRAME_CONTEXT_SHADE, @@ -26,6 +28,22 @@ typedef enum { OB_FRAME_NUM_CONTEXTS } ObFrameContext; +/*! The decorations the client window wants to be displayed on it */ +typedef enum { + OB_FRAME_DECOR_TITLEBAR = 1 << 0, /*!< Display a titlebar */ + OB_FRAME_DECOR_HANDLE = 1 << 1, /*!< Display a handle (bottom) */ + OB_FRAME_DECOR_GRIPS = 1 << 2, /*!< Display grips in the handle */ + OB_FRAME_DECOR_BORDER = 1 << 3, /*!< Display a border */ + OB_FRAME_DECOR_ICON = 1 << 4, /*!< Display the window's icon */ + OB_FRAME_DECOR_ICONIFY = 1 << 5, /*!< Display an iconify button */ + OB_FRAME_DECOR_MAXIMIZE = 1 << 6, /*!< Display a maximize button */ + /*! Display a button to toggle the window's placement on + all desktops */ + OB_FRAME_DECOR_ALLDESKTOPS = 1 << 7, + OB_FRAME_DECOR_SHADE = 1 << 8, /*!< Displays a shade button */ + OB_FRAME_DECOR_CLOSE = 1 << 9 /*!< Display a close button */ +} ObFrameDecorations; + struct _ObFrame { struct _ObClient *client; @@ -36,7 +54,12 @@ struct _ObFrame Strut size; Rect area; gboolean visible; + + /*! Whether the window is obscured at all or fully visible. */ + gboolean obscured; + guint decorations; + gboolean max_horz; Window title; Window label; @@ -50,6 +73,9 @@ struct _ObFrame Window lgrip; Window rgrip; + Window tlresize; + Window trresize; + RrAppearance *a_unfocused_title; RrAppearance *a_focused_title; RrAppearance *a_unfocused_label; @@ -72,25 +98,34 @@ struct _ObFrame gint max_x; /* x-position of the window maximize button */ gint close_x; /* x-position of the window close button */ gint bwidth; /* border width */ - gint cbwidth; /* client border width */ + gint rbwidth; /* title border width */ + gint cbwidth_x; /* client border width */ + gint cbwidth_y; /* client border width */ gboolean max_press; gboolean close_press; gboolean desk_press; gboolean shade_press; gboolean iconify_press; + gboolean max_hover; + gboolean close_hover; + gboolean desk_hover; + gboolean shade_hover; + gboolean iconify_hover; gboolean focused; -}; -void frame_startup(); -void frame_shutdown(); + gboolean flashing; + gboolean flash_on; + GTimeVal flash_end; +}; ObFrame *frame_new(); void frame_show(ObFrame *self); void frame_hide(ObFrame *self); void frame_adjust_shape(ObFrame *self); -void frame_adjust_area(ObFrame *self, gboolean moved, gboolean resized); +void frame_adjust_area(ObFrame *self, gboolean moved, + gboolean resized, gboolean fake); void frame_adjust_state(ObFrame *self); void frame_adjust_focus(ObFrame *self, gboolean hilite); void frame_adjust_title(ObFrame *self); @@ -114,5 +149,6 @@ void frame_client_gravity(ObFrame *self, int *x, int *y); */ void frame_frame_gravity(ObFrame *self, int *x, int *y); +void frame_flash(ObFrame *self); #endif