X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=openbox%2Fframe.h;h=b1ed8183243b791ea220cb11d16b56825fcab7d9;hb=bca4fe6c8b8d1ab8b2c9273149f48fd9cd4e0f4d;hp=3a5dfdb25642895d15f01c5bb53f759a5f2986dd;hpb=193ca2197a1276ca5a34bbf25b71df656ac964bf;p=chaz%2Fopenbox diff --git a/openbox/frame.h b/openbox/frame.h index 3a5dfdb2..b1ed8183 100644 --- a/openbox/frame.h +++ b/openbox/frame.h @@ -32,14 +32,18 @@ typedef void (*ObFrameIconifyAnimateFunc)(gpointer data); typedef enum { OB_FRAME_CONTEXT_NONE, OB_FRAME_CONTEXT_DESKTOP, + OB_FRAME_CONTEXT_ROOT, 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_TOP, + OB_FRAME_CONTEXT_BOTTOM, + OB_FRAME_CONTEXT_LEFT, + OB_FRAME_CONTEXT_RIGHT, OB_FRAME_CONTEXT_MAXIMIZE, OB_FRAME_CONTEXT_ALLDESKTOPS, OB_FRAME_CONTEXT_SHADE, @@ -79,6 +83,7 @@ struct _ObFrame Rect area; gboolean visible; + guint functions; guint decorations; gboolean max_horz; @@ -95,6 +100,28 @@ struct _ObFrame Window lgrip; Window rgrip; + /* These are borders of the frame and its elements */ + Window titleleft; + Window titletop; + Window titletopleft; + Window titletopright; + Window titleright; + Window titlebottom; + Window left; + Window right; + Window handleleft; + Window handletop; + Window handleright; + Window handlebottom; + Window lgriptop; + Window lgripleft; + Window lgripbottom; + Window rgriptop; + Window rgripright; + Window rgripbottom; + + /* These are resize handles inside the titlebar */ + Window topresize; Window tltresize; Window tllresize; Window trtresize; @@ -110,8 +137,6 @@ struct _ObFrame RrAppearance *a_unfocused_handle; RrAppearance *a_focused_handle; - Strut innersize; - GSList *clients; gint icon_on; /* if the window icon button is on */ @@ -132,9 +157,15 @@ 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 rbwidth; /* title border width */ + gint rbwidth; /* border width between the title and client */ gint cbwidth_x; /* client border width */ gint cbwidth_y; /* client border width */ + gboolean leftb; /* is there a border to the left of the client? */ + gboolean rightb; /* is there a border to the right of the client?*/ + + /* the leftmost and rightmost elements in the titlebar */ + ObFrameContext leftmost; + ObFrameContext rightmost; gboolean max_press; gboolean close_press; @@ -162,6 +193,8 @@ struct _ObFrame }; ObFrame *frame_new(struct _ObClient *c); +void frame_free(ObFrame *self); + void frame_show(ObFrame *self); void frame_hide(ObFrame *self); void frame_adjust_theme(ObFrame *self); @@ -173,12 +206,13 @@ void frame_adjust_state(ObFrame *self); void frame_adjust_focus(ObFrame *self, gboolean hilite); void frame_adjust_title(ObFrame *self); void frame_adjust_icon(ObFrame *self); -void frame_grab_client(ObFrame *self, struct _ObClient *client); -void frame_release_client(ObFrame *self, struct _ObClient *client); +void frame_grab_client(ObFrame *self); +void frame_release_client(ObFrame *self); ObFrameContext frame_context_from_string(const gchar *name); -ObFrameContext frame_context(struct _ObClient *self, Window win); +ObFrameContext frame_context(struct _ObClient *self, Window win, + gint x, gint y); /*! Applies gravity to the client's position to find where the frame should be positioned.