diff options
| author | Dana Jansens <danakj@orodu.net> | 2003-04-13 07:18:28 +0000 |
|---|---|---|
| committer | Dana Jansens <danakj@orodu.net> | 2003-04-13 07:18:28 +0000 |
| commit | 5cf61ee02354c1c9f80c11f3796afc4b948055d6 (patch) | |
| tree | 5530ecca55e11cc74e57db07d750447c7107f8ed /openbox/frame.h | |
| parent | fb1696659672386bcfc0f753b67f9eeda74e93b9 (diff) | |
move the openbox engine into librender and the kernel. the theme is loaded and stored inside librender. the frame is decorated and managed inside the kernel.
Diffstat (limited to 'openbox/frame.h')
| -rw-r--r-- | openbox/frame.h | 65 |
1 files changed, 64 insertions, 1 deletions
diff --git a/openbox/frame.h b/openbox/frame.h index fb492d8c..c36e7833 100644 --- a/openbox/frame.h +++ b/openbox/frame.h @@ -3,6 +3,7 @@ #include "geom.h" #include "client.h" +#include "render/render.h" typedef enum { Context_None, @@ -24,7 +25,8 @@ typedef enum { NUM_CONTEXTS } Context; -Context frame_context_from_string(char *name); +#define FRAME_HANDLE_Y(f) (f->innersize.top + f->client->area.height + \ + f->cbwidth) typedef struct Frame { Client *client; @@ -35,8 +37,69 @@ typedef struct Frame { Strut size; Rect area; gboolean visible; + + Window title; + Window label; + Window max; + Window close; + Window desk; + Window shade; + Window icon; + Window iconify; + Window handle; + Window lgrip; + Window rgrip; + + Appearance *a_unfocused_title; + Appearance *a_focused_title; + Appearance *a_unfocused_label; + Appearance *a_focused_label; + Appearance *a_icon; + Appearance *a_unfocused_handle; + Appearance *a_focused_handle; + + Strut innersize; + + GSList *clients; + + int width; /* title and handle */ + int label_width; + int icon_x; /* x-position of the window icon button */ + int label_x; /* x-position of the window title */ + int iconify_x; /* x-position of the window iconify button */ + int desk_x; /* x-position of the window all-desktops button */ + int shade_x; /* x-position of the window shade button */ + int max_x; /* x-position of the window maximize button */ + int close_x; /* x-position of the window close button */ + int bwidth; /* border width */ + int cbwidth; /* client border width */ + + gboolean max_press; + gboolean close_press; + gboolean desk_press; + gboolean shade_press; + gboolean iconify_press; } Frame; +void frame_startup(); +void frame_shutdown(); + +Frame *frame_new(); +void frame_show(Frame *self); +void frame_hide(Frame *self); +void frame_adjust_shape(Frame *self); +void frame_adjust_area(Frame *self, gboolean moved, gboolean resized); +void frame_adjust_state(Frame *self); +void frame_adjust_focus(Frame *self); +void frame_adjust_title(Frame *self); +void frame_adjust_icon(Frame *self); +void frame_grab_client(Frame *self, Client *client); +void frame_release_client(Frame *self, Client *client); + +Context frame_context_from_string(char *name); + +Context frame_context(Frame *self, Window win); + /*! Applies gravity to the client's position to find where the frame should be positioned. @return The proper coordinates for the frame, based on the client. |
