dont build the old action stuff.
config uses the new action stuff. add actions_parse_string
This commit is contained in:
parent
5e8ec2cb78
commit
828d06f271
6 changed files with 34 additions and 46 deletions
|
@ -154,8 +154,6 @@ openbox_openbox_LDADD = \
|
||||||
openbox_openbox_LDFLAGS = -export-dynamic
|
openbox_openbox_LDFLAGS = -export-dynamic
|
||||||
openbox_openbox_SOURCES = \
|
openbox_openbox_SOURCES = \
|
||||||
gettext.h \
|
gettext.h \
|
||||||
openbox/action.c \
|
|
||||||
openbox/action.h \
|
|
||||||
openbox/actions.c \
|
openbox/actions.c \
|
||||||
openbox/actions.h \
|
openbox/actions.h \
|
||||||
openbox/client.c \
|
openbox/client.c \
|
||||||
|
|
|
@ -100,36 +100,48 @@ static void actions_definition_unref(ObActionsDefinition *def)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ObActionsAct* actions_parse(ObParseInst *i,
|
ObActionsAct* actions_parse_string(const gchar *name)
|
||||||
xmlDocPtr doc,
|
|
||||||
xmlNodePtr node)
|
|
||||||
{
|
{
|
||||||
GSList *it;
|
GSList *it;
|
||||||
gchar *name;
|
|
||||||
ObActionsDefinition *def;
|
ObActionsDefinition *def;
|
||||||
ObActionsAct *act = NULL;
|
ObActionsAct *act = NULL;
|
||||||
|
|
||||||
if (!parse_attr_string("name", node, &name)) return NULL;
|
|
||||||
|
|
||||||
/* find the requested action */
|
/* find the requested action */
|
||||||
for (it = registered; it; it = g_slist_next(it)) {
|
for (it = registered; it; it = g_slist_next(it)) {
|
||||||
def = it->data;
|
def = it->data;
|
||||||
if (!g_ascii_strcasecmp(name, def->name))
|
if (!g_ascii_strcasecmp(name, def->name))
|
||||||
break;
|
break;
|
||||||
|
def = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* if we found the action */
|
/* if we found the action */
|
||||||
if (it != NULL) {
|
if (def) {
|
||||||
act = g_new(ObActionsAct, 1);
|
act = g_new(ObActionsAct, 1);
|
||||||
act->ref = 1;
|
act->ref = 1;
|
||||||
act->def = def;
|
act->def = def;
|
||||||
actions_definition_ref(act->def);
|
actions_definition_ref(act->def);
|
||||||
act->options = def->setup(i, doc, node->children);
|
act->options = NULL;
|
||||||
} else
|
} else
|
||||||
g_message(_("Invalid action '%s' requested. No such action exists."),
|
g_message(_("Invalid action '%s' requested. No such action exists."),
|
||||||
name);
|
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);
|
g_free(name);
|
||||||
|
}
|
||||||
|
|
||||||
return act;
|
return act;
|
||||||
}
|
}
|
||||||
|
|
|
@ -106,6 +106,7 @@ gboolean actions_register(const gchar *name,
|
||||||
ObActionsAct* actions_parse(ObParseInst *i,
|
ObActionsAct* actions_parse(ObParseInst *i,
|
||||||
xmlDocPtr doc,
|
xmlDocPtr doc,
|
||||||
xmlNodePtr node);
|
xmlNodePtr node);
|
||||||
|
ObActionsAct* actions_parse_string(const gchar *name);
|
||||||
|
|
||||||
void actions_act_ref(ObActionsAct *act);
|
void actions_act_ref(ObActionsAct *act);
|
||||||
void actions_act_unref(ObActionsAct *act);
|
void actions_act_unref(ObActionsAct *act);
|
||||||
|
|
|
@ -20,10 +20,10 @@
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
#include "keyboard.h"
|
#include "keyboard.h"
|
||||||
#include "mouse.h"
|
#include "mouse.h"
|
||||||
|
#include "actions.h"
|
||||||
#include "prop.h"
|
#include "prop.h"
|
||||||
#include "translate.h"
|
#include "translate.h"
|
||||||
#include "client.h"
|
#include "client.h"
|
||||||
#include "actions.h"
|
|
||||||
#include "screen.h"
|
#include "screen.h"
|
||||||
#include "parser/parse.h"
|
#include "parser/parse.h"
|
||||||
#include "openbox.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))) {
|
else if ((n = parse_find_node("action", node->children))) {
|
||||||
while (n) {
|
while (n) {
|
||||||
ObActionsDefinition *action;
|
ObActionsAct *action;
|
||||||
|
|
||||||
action = actions_parse(i, doc, n);
|
action = actions_parse(i, doc, n);
|
||||||
if (action)
|
if (action)
|
||||||
|
@ -412,9 +412,7 @@ static void parse_mouse(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node,
|
||||||
xmlNodePtr n, nbut, nact;
|
xmlNodePtr n, nbut, nact;
|
||||||
gchar *buttonstr;
|
gchar *buttonstr;
|
||||||
gchar *contextstr;
|
gchar *contextstr;
|
||||||
ObUserAction uact;
|
|
||||||
ObMouseAction mact;
|
ObMouseAction mact;
|
||||||
ObAction *action;
|
|
||||||
|
|
||||||
mouse_unbind_all();
|
mouse_unbind_all();
|
||||||
|
|
||||||
|
@ -434,25 +432,22 @@ static void parse_mouse(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node,
|
||||||
if (!parse_attr_string("button", nbut, &buttonstr))
|
if (!parse_attr_string("button", nbut, &buttonstr))
|
||||||
goto next_nbut;
|
goto next_nbut;
|
||||||
if (parse_attr_contains("press", nbut, "action")) {
|
if (parse_attr_contains("press", nbut, "action")) {
|
||||||
uact = OB_USER_ACTION_MOUSE_PRESS;
|
|
||||||
mact = OB_MOUSE_ACTION_PRESS;
|
mact = OB_MOUSE_ACTION_PRESS;
|
||||||
} else if (parse_attr_contains("release", nbut, "action")) {
|
} else if (parse_attr_contains("release", nbut, "action")) {
|
||||||
uact = OB_USER_ACTION_MOUSE_RELEASE;
|
|
||||||
mact = OB_MOUSE_ACTION_RELEASE;
|
mact = OB_MOUSE_ACTION_RELEASE;
|
||||||
} else if (parse_attr_contains("click", nbut, "action")) {
|
} else if (parse_attr_contains("click", nbut, "action")) {
|
||||||
uact = OB_USER_ACTION_MOUSE_CLICK;
|
|
||||||
mact = OB_MOUSE_ACTION_CLICK;
|
mact = OB_MOUSE_ACTION_CLICK;
|
||||||
} else if (parse_attr_contains("doubleclick", nbut,"action")) {
|
} else if (parse_attr_contains("doubleclick", nbut,"action")) {
|
||||||
uact = OB_USER_ACTION_MOUSE_DOUBLE_CLICK;
|
|
||||||
mact = OB_MOUSE_ACTION_DOUBLE_CLICK;
|
mact = OB_MOUSE_ACTION_DOUBLE_CLICK;
|
||||||
} else if (parse_attr_contains("drag", nbut, "action")) {
|
} else if (parse_attr_contains("drag", nbut, "action")) {
|
||||||
uact = OB_USER_ACTION_MOUSE_MOTION;
|
|
||||||
mact = OB_MOUSE_ACTION_MOTION;
|
mact = OB_MOUSE_ACTION_MOTION;
|
||||||
} else
|
} else
|
||||||
goto next_nbut;
|
goto next_nbut;
|
||||||
nact = parse_find_node("action", nbut->children);
|
nact = parse_find_node("action", nbut->children);
|
||||||
while (nact) {
|
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);
|
mouse_bind(buttonstr, contextstr, mact, action);
|
||||||
nact = parse_find_node("action", nact->next);
|
nact = parse_find_node("action", nact->next);
|
||||||
}
|
}
|
||||||
|
@ -777,8 +772,8 @@ static void bind_default_keyboard()
|
||||||
|
|
||||||
for (it = binds; it->key; ++it) {
|
for (it = binds; it->key; ++it) {
|
||||||
GList *l = g_list_append(NULL, g_strdup(it->key));
|
GList *l = g_list_append(NULL, g_strdup(it->key));
|
||||||
keyboard_bind(l, action_from_string(it->actname,
|
keyboard_bind(l, actions_parse_string(it->actname));
|
||||||
OB_USER_ACTION_KEYBOARD_KEY));
|
g_list_free(l);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -840,25 +835,9 @@ static void bind_default_mouse()
|
||||||
{ NULL, NULL, 0, NULL }
|
{ NULL, NULL, 0, NULL }
|
||||||
};
|
};
|
||||||
|
|
||||||
for (it = binds; it->button; ++it) {
|
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();
|
|
||||||
}
|
|
||||||
mouse_bind(it->button, it->context, it->mact,
|
mouse_bind(it->button, it->context, it->mact,
|
||||||
action_from_string(it->actname, uact));
|
actions_parse_string(it->actname));
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void config_startup(ObParseInst *i)
|
void config_startup(ObParseInst *i)
|
||||||
|
|
|
@ -27,7 +27,7 @@
|
||||||
#include <X11/Xlib.h>
|
#include <X11/Xlib.h>
|
||||||
|
|
||||||
struct _ObClient;
|
struct _ObClient;
|
||||||
struct _ObAction;
|
struct _ObActionAct;
|
||||||
|
|
||||||
extern KeyBindingTree *keyboard_firstnode;
|
extern KeyBindingTree *keyboard_firstnode;
|
||||||
|
|
||||||
|
@ -35,7 +35,7 @@ void keyboard_startup(gboolean reconfig);
|
||||||
void keyboard_shutdown(gboolean reconfig);
|
void keyboard_shutdown(gboolean reconfig);
|
||||||
|
|
||||||
void keyboard_chroot(GList *keylist);
|
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_unbind_all();
|
||||||
|
|
||||||
void keyboard_event(struct _ObClient *client, const XEvent *e);
|
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);
|
void keyboard_reset_chains(gint break_chroots);
|
||||||
|
|
||||||
gboolean keyboard_interactive_grab(guint state, struct _ObClient *client,
|
gboolean keyboard_interactive_grab(guint state, struct _ObClient *client,
|
||||||
struct _ObAction *action);
|
struct _ObActionAct *action);
|
||||||
gboolean keyboard_process_interactive_grab(const XEvent *e,
|
gboolean keyboard_process_interactive_grab(const XEvent *e,
|
||||||
struct _ObClient **client);
|
struct _ObClient **client);
|
||||||
gboolean keyboard_interactively_grabbed();
|
gboolean keyboard_interactively_grabbed();
|
||||||
|
|
|
@ -19,8 +19,6 @@
|
||||||
#ifndef __plugin_keyboard_tree_h
|
#ifndef __plugin_keyboard_tree_h
|
||||||
#define __plugin_keyboard_tree_h
|
#define __plugin_keyboard_tree_h
|
||||||
|
|
||||||
#include "action.h"
|
|
||||||
|
|
||||||
#include <glib.h>
|
#include <glib.h>
|
||||||
|
|
||||||
typedef struct KeyBindingTree {
|
typedef struct KeyBindingTree {
|
||||||
|
|
Loading…
Reference in a new issue