summaryrefslogtreecommitdiff
path: root/openbox
diff options
context:
space:
mode:
authorDana Jansens <danakj@orodu.net>2007-06-21 23:28:14 +0000
committerDana Jansens <danakj@orodu.net>2007-06-21 23:28:14 +0000
commit828d06f271392abbef75bb37e2635b2085bdef90 (patch)
tree37877f7f5b54891af122a441eb3f6f8837cb81a6 /openbox
parent5e8ec2cb781ba07341a5970b3e829cc59a8cf332 (diff)
dont build the old action stuff.
config uses the new action stuff. add actions_parse_string
Diffstat (limited to 'openbox')
-rw-r--r--openbox/actions.c30
-rw-r--r--openbox/actions.h1
-rw-r--r--openbox/config.c39
-rw-r--r--openbox/keyboard.h6
-rw-r--r--openbox/keytree.h2
5 files changed, 34 insertions, 44 deletions
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 <X11/Xlib.h>
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 <glib.h>
typedef struct KeyBindingTree {