From 828d06f271392abbef75bb37e2635b2085bdef90 Mon Sep 17 00:00:00 2001 From: Dana Jansens Date: Thu, 21 Jun 2007 23:28:14 +0000 Subject: [PATCH] dont build the old action stuff. config uses the new action stuff. add actions_parse_string --- Makefile.am | 2 -- openbox/actions.c | 30 +++++++++++++++++++++--------- openbox/actions.h | 1 + openbox/config.c | 39 +++++++++------------------------------ openbox/keyboard.h | 6 +++--- openbox/keytree.h | 2 -- 6 files changed, 34 insertions(+), 46 deletions(-) diff --git a/Makefile.am b/Makefile.am index 230862a9..0ebc9aad 100644 --- a/Makefile.am +++ b/Makefile.am @@ -154,8 +154,6 @@ openbox_openbox_LDADD = \ openbox_openbox_LDFLAGS = -export-dynamic openbox_openbox_SOURCES = \ gettext.h \ - openbox/action.c \ - openbox/action.h \ openbox/actions.c \ openbox/actions.h \ openbox/client.c \ diff --git a/openbox/actions.c b/openbox/actions.c index 6cd1d1cc..8d523dc8 100644 --- a/openbox/actions.c +++ b/openbox/actions.c @@ -100,36 +100,48 @@ static void actions_definition_unref(ObActionsDefinition *def) } } -ObActionsAct* actions_parse(ObParseInst *i, - xmlDocPtr doc, - xmlNodePtr node) +ObActionsAct* actions_parse_string(const gchar *name) { GSList *it; - gchar *name; ObActionsDefinition *def; ObActionsAct *act = NULL; - if (!parse_attr_string("name", node, &name)) return NULL; - /* find the requested action */ for (it = registered; it; it = g_slist_next(it)) { def = it->data; if (!g_ascii_strcasecmp(name, def->name)) break; + def = NULL; } /* if we found the action */ - if (it != NULL) { + if (def) { act = g_new(ObActionsAct, 1); act->ref = 1; act->def = def; actions_definition_ref(act->def); - act->options = def->setup(i, doc, node->children); + act->options = NULL; } else g_message(_("Invalid action '%s' requested. No such action exists."), name); - g_free(name); + return act; +} + +ObActionsAct* actions_parse(ObParseInst *i, + xmlDocPtr doc, + xmlNodePtr node) +{ + gchar *name; + ObActionsAct *act = NULL; + + if (parse_attr_string("name", node, &name)) { + if ((act = actions_parse_string(name))) + /* there is more stuff to parse here */ + act->options = act->def->setup(i, doc, node->children); + + g_free(name); + } return act; } diff --git a/openbox/actions.h b/openbox/actions.h index ca152e28..548b40b5 100644 --- a/openbox/actions.h +++ b/openbox/actions.h @@ -106,6 +106,7 @@ gboolean actions_register(const gchar *name, ObActionsAct* actions_parse(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node); +ObActionsAct* actions_parse_string(const gchar *name); void actions_act_ref(ObActionsAct *act); void actions_act_unref(ObActionsAct *act); diff --git a/openbox/config.c b/openbox/config.c index 1f651ced..48df2e79 100644 --- a/openbox/config.c +++ b/openbox/config.c @@ -20,10 +20,10 @@ #include "config.h" #include "keyboard.h" #include "mouse.h" +#include "actions.h" #include "prop.h" #include "translate.h" #include "client.h" -#include "actions.h" #include "screen.h" #include "parser/parse.h" #include "openbox.h" @@ -358,7 +358,7 @@ static void parse_key(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node, } else if ((n = parse_find_node("action", node->children))) { while (n) { - ObActionsDefinition *action; + ObActionsAct *action; action = actions_parse(i, doc, n); if (action) @@ -412,9 +412,7 @@ static void parse_mouse(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node, xmlNodePtr n, nbut, nact; gchar *buttonstr; gchar *contextstr; - ObUserAction uact; ObMouseAction mact; - ObAction *action; mouse_unbind_all(); @@ -434,25 +432,22 @@ static void parse_mouse(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node, if (!parse_attr_string("button", nbut, &buttonstr)) goto next_nbut; if (parse_attr_contains("press", nbut, "action")) { - uact = OB_USER_ACTION_MOUSE_PRESS; mact = OB_MOUSE_ACTION_PRESS; } else if (parse_attr_contains("release", nbut, "action")) { - uact = OB_USER_ACTION_MOUSE_RELEASE; mact = OB_MOUSE_ACTION_RELEASE; } else if (parse_attr_contains("click", nbut, "action")) { - uact = OB_USER_ACTION_MOUSE_CLICK; mact = OB_MOUSE_ACTION_CLICK; } else if (parse_attr_contains("doubleclick", nbut,"action")) { - uact = OB_USER_ACTION_MOUSE_DOUBLE_CLICK; mact = OB_MOUSE_ACTION_DOUBLE_CLICK; } else if (parse_attr_contains("drag", nbut, "action")) { - uact = OB_USER_ACTION_MOUSE_MOTION; mact = OB_MOUSE_ACTION_MOTION; } else goto next_nbut; nact = parse_find_node("action", nbut->children); while (nact) { - if ((action = action_parse(i, doc, nact, uact))) + ObActionsAct *action; + + if ((action = actions_parse(i, doc, nact))) mouse_bind(buttonstr, contextstr, mact, action); nact = parse_find_node("action", nact->next); } @@ -777,8 +772,8 @@ static void bind_default_keyboard() for (it = binds; it->key; ++it) { GList *l = g_list_append(NULL, g_strdup(it->key)); - keyboard_bind(l, action_from_string(it->actname, - OB_USER_ACTION_KEYBOARD_KEY)); + keyboard_bind(l, actions_parse_string(it->actname)); + g_list_free(l); } } @@ -840,25 +835,9 @@ static void bind_default_mouse() { NULL, NULL, 0, NULL } }; - for (it = binds; it->button; ++it) { - ObUserAction uact; - switch (it->mact) { - case OB_MOUSE_ACTION_PRESS: - uact = OB_USER_ACTION_MOUSE_PRESS; break; - case OB_MOUSE_ACTION_RELEASE: - uact = OB_USER_ACTION_MOUSE_RELEASE; break; - case OB_MOUSE_ACTION_CLICK: - uact = OB_USER_ACTION_MOUSE_CLICK; break; - case OB_MOUSE_ACTION_DOUBLE_CLICK: - uact = OB_USER_ACTION_MOUSE_DOUBLE_CLICK; break; - case OB_MOUSE_ACTION_MOTION: - uact = OB_USER_ACTION_MOUSE_MOTION; break; - default: - g_assert_not_reached(); - } + for (it = binds; it->button; ++it) mouse_bind(it->button, it->context, it->mact, - action_from_string(it->actname, uact)); - } + actions_parse_string(it->actname)); } void config_startup(ObParseInst *i) diff --git a/openbox/keyboard.h b/openbox/keyboard.h index 3d70448f..95d8be32 100644 --- a/openbox/keyboard.h +++ b/openbox/keyboard.h @@ -27,7 +27,7 @@ #include struct _ObClient; -struct _ObAction; +struct _ObActionAct; extern KeyBindingTree *keyboard_firstnode; @@ -35,7 +35,7 @@ void keyboard_startup(gboolean reconfig); void keyboard_shutdown(gboolean reconfig); void keyboard_chroot(GList *keylist); -gboolean keyboard_bind(GList *keylist, ObAction *action); +gboolean keyboard_bind(GList *keylist, struct _ObActionAct *action); void keyboard_unbind_all(); void keyboard_event(struct _ObClient *client, const XEvent *e); @@ -44,7 +44,7 @@ void keyboard_event(struct _ObClient *client, const XEvent *e); void keyboard_reset_chains(gint break_chroots); gboolean keyboard_interactive_grab(guint state, struct _ObClient *client, - struct _ObAction *action); + struct _ObActionAct *action); gboolean keyboard_process_interactive_grab(const XEvent *e, struct _ObClient **client); gboolean keyboard_interactively_grabbed(); diff --git a/openbox/keytree.h b/openbox/keytree.h index d3544f80..59a515c7 100644 --- a/openbox/keytree.h +++ b/openbox/keytree.h @@ -19,8 +19,6 @@ #ifndef __plugin_keyboard_tree_h #define __plugin_keyboard_tree_h -#include "action.h" - #include typedef struct KeyBindingTree { -- 2.45.2