use a context enum instead of quarks

This commit is contained in:
Dana Jansens 2003-04-05 17:22:01 +00:00
parent 831db744f4
commit bca8082d6d
4 changed files with 76 additions and 34 deletions

View file

@ -46,6 +46,6 @@ typedef void EngineFrameShow(Frame *self);
typedef void EngineFrameHide(Frame *self); typedef void EngineFrameHide(Frame *self);
/* get_context */ /* get_context */
typedef GQuark EngineGetContext(Client *client, Window win); typedef Context EngineGetContext(Client *client, Window win);
#endif #endif

View file

@ -92,21 +92,6 @@ gboolean startup()
{ {
char *path; char *path;
g_quark_from_string("none");
g_quark_from_string("root");
g_quark_from_string("client");
g_quark_from_string("titlebar");
g_quark_from_string("handle");
g_quark_from_string("frame");
g_quark_from_string("blcorner");
g_quark_from_string("brcorner");
g_quark_from_string("maximize");
g_quark_from_string("alldesktops");
g_quark_from_string("shade");
g_quark_from_string("iconify");
g_quark_from_string("icon");
g_quark_from_string("close");
/* create the ~/.openbox/themes/openbox dir */ /* create the ~/.openbox/themes/openbox dir */
path = g_build_filename(g_get_home_dir(), ".openbox", "themes", "openbox", path = g_build_filename(g_get_home_dir(), ".openbox", "themes", "openbox",
NULL); NULL);
@ -861,28 +846,28 @@ static void mouse_event(const ObEvent *e, ObFrame *self)
} }
} }
GQuark get_context(Client *client, Window win) Context get_context(Client *client, Window win)
{ {
ObFrame *self; ObFrame *self;
if (win == ob_root) return g_quark_try_string("root"); if (win == ob_root) return Context_Root;
if (client == NULL) return g_quark_try_string("none"); if (client == NULL) return Context_None;
if (win == client->window) return g_quark_try_string("client"); if (win == client->window) return Context_Client;
self = (ObFrame*) client->frame; self = (ObFrame*) client->frame;
if (win == self->frame.window) return g_quark_try_string("frame"); if (win == self->frame.window) return Context_Frame;
if (win == self->frame.plate) return g_quark_try_string("client"); if (win == self->frame.plate) return Context_Client;
if (win == self->title) return g_quark_try_string("titlebar"); if (win == self->title) return Context_Titlebar;
if (win == self->label) return g_quark_try_string("titlebar"); if (win == self->label) return Context_Titlebar;
if (win == self->handle) return g_quark_try_string("handle"); if (win == self->handle) return Context_Handle;
if (win == self->lgrip) return g_quark_try_string("blcorner"); if (win == self->lgrip) return Context_BLCorner;
if (win == self->rgrip) return g_quark_try_string("brcorner"); if (win == self->rgrip) return Context_BRCorner;
if (win == self->max) return g_quark_try_string("maximize"); if (win == self->max) return Context_Maximize;
if (win == self->iconify) return g_quark_try_string("iconify"); if (win == self->iconify) return Context_Iconify;
if (win == self->close) return g_quark_try_string("close"); if (win == self->close) return Context_Close;
if (win == self->icon) return g_quark_try_string("icon"); if (win == self->icon) return Context_Icon;
if (win == self->desk) return g_quark_try_string("alldesktops"); if (win == self->desk) return Context_AllDesktops;
if (win == self->shade) return g_quark_try_string("shade"); if (win == self->shade) return Context_Shade;
return g_quark_try_string("none"); return Context_None;
} }

View file

@ -1,5 +1,40 @@
#include "frame.h" #include "frame.h"
Context frame_context_from_string(char *name)
{
if (!g_ascii_strcasecmp("root", name))
return Context_Root;
else if (!g_ascii_strcasecmp("client", name))
return Context_Client;
else if (!g_ascii_strcasecmp("titlebar", name))
return Context_Titlebar;
else if (!g_ascii_strcasecmp("handle", name))
return Context_Handle;
else if (!g_ascii_strcasecmp("frame", name))
return Context_Frame;
else if (!g_ascii_strcasecmp("blcorner", name))
return Context_BLCorner;
else if (!g_ascii_strcasecmp("tlcorner", name))
return Context_TLCorner;
else if (!g_ascii_strcasecmp("brcorner", name))
return Context_BRCorner;
else if (!g_ascii_strcasecmp("trcorner", name))
return Context_TRCorner;
else if (!g_ascii_strcasecmp("maximize", name))
return Context_Maximize;
else if (!g_ascii_strcasecmp("alldesktops", name))
return Context_AllDesktops;
else if (!g_ascii_strcasecmp("shade", name))
return Context_Shade;
else if (!g_ascii_strcasecmp("iconify", name))
return Context_Iconify;
else if (!g_ascii_strcasecmp("icon", name))
return Context_Icon;
else if (!g_ascii_strcasecmp("close", name))
return Context_Close;
return Context_None;
}
void frame_client_gravity(Frame *self, int *x, int *y) void frame_client_gravity(Frame *self, int *x, int *y)
{ {
/* horizontal */ /* horizontal */

View file

@ -4,6 +4,28 @@
#include "geom.h" #include "geom.h"
#include "client.h" #include "client.h"
typedef enum {
Context_None,
Context_Root,
Context_Client,
Context_Titlebar,
Context_Handle,
Context_Frame,
Context_BLCorner,
Context_BRCorner,
Context_TLCorner,
Context_TRCorner,
Context_Maximize,
Context_AllDesktops,
Context_Shade,
Context_Iconify,
Context_Icon,
Context_Close,
NUM_CONTEXTS
} Context;
Context frame_context_from_string(char *name);
typedef struct Frame { typedef struct Frame {
Client *client; Client *client;