all repos — openbox @ 828d06f271392abbef75bb37e2635b2085bdef90

openbox fork - make it a bit more like ryudo

dont build the old action stuff.
config uses the new action stuff.
add actions_parse_string
Dana Jansens danakj@orodu.net
commit

828d06f271392abbef75bb37e2635b2085bdef90

parent

5e8ec2cb781ba07341a5970b3e829cc59a8cf332

6 files changed, 34 insertions(+), 46 deletions(-)

jump to
M Makefile.amMakefile.am

@@ -154,8 +154,6 @@ parser/libobparser.la

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 \
M openbox/actions.copenbox/actions.c

@@ -100,36 +100,48 @@ g_free(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; }
M openbox/actions.hopenbox/actions.h

@@ -106,6 +106,7 @@

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);
M openbox/config.copenbox/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 @@ }

} 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 @@ {

xmlNodePtr n, nbut, nact; gchar *buttonstr; gchar *contextstr; - ObUserAction uact; ObMouseAction mact; - ObAction *action; mouse_unbind_all();

@@ -434,25 +432,22 @@ while (nbut) {

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 @@ };

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 @@ { "A-Middle", "Frame", OB_MOUSE_ACTION_MOTION, "Resize" },

{ 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)
M openbox/keyboard.hopenbox/keyboard.h

@@ -27,7 +27,7 @@ #include <glib.h>

#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_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();
M openbox/keytree.hopenbox/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 {