#include "prop.h"
#include "translate.h"
#include "parser/parse.h"
+#include "openbox.h"
gboolean config_focus_new;
gboolean config_focus_follow;
gboolean config_focus_last;
gboolean config_focus_last_on_desktop;
+guint config_focus_delay;
char *config_theme;
gint config_resist_win;
gint config_resist_edge;
-gchar *expand_tilde(const gchar *f)
-{
- if (!f)
- return NULL;
- else if (f[0] != '~')
- return g_strdup(f);
- else
- return g_strconcat(g_get_home_dir(), f+1, NULL);
-}
-
/*
<keybind key="C-x">
if (keylist) {
nact = parse_find_node("action", node);
while (nact) {
- if ((action = action_parse(i, doc, nact))) {
- /* validate that its okay for a key binding */
- if (action->func == action_moveresize &&
- action->data.moveresize.corner !=
- prop_atoms.net_wm_moveresize_move_keyboard &&
- action->data.moveresize.corner !=
- prop_atoms.net_wm_moveresize_size_keyboard) {
- action_free(action);
- action = NULL;
- }
-
- if (action)
- keyboard_bind(keylist, action);
- }
+ if ((action = action_parse(i, doc, nact,
+ OB_USER_ACTION_KEYBOARD_KEY)))
+ keyboard_bind(keylist, action);
nact = parse_find_node("action", nact->next);
}
}
xmlNodePtr n, nbut, nact;
char *buttonstr;
char *contextstr;
+ ObUserAction uact;
ObMouseAction mact;
ObAction *action;
while (nbut) {
if (!parse_attr_string("button", nbut, &buttonstr))
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;
- 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;
- 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;
- 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;
- 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;
- else
+ } else
goto next_nbut;
nact = parse_find_node("action", nbut->xmlChildrenNode);
while (nact) {
- if ((action = action_parse(i, doc, nact))) {
- /* validate that its okay for a mouse binding*/
- if (mact == OB_MOUSE_ACTION_MOTION) {
- if (action->func != action_moveresize ||
- action->data.moveresize.corner ==
- prop_atoms.net_wm_moveresize_move_keyboard ||
- action->data.moveresize.corner ==
- prop_atoms.net_wm_moveresize_size_keyboard) {
- action_free(action);
- action = NULL;
- }
- } else {
- if (action->func == action_moveresize &&
- action->data.moveresize.corner !=
- prop_atoms.net_wm_moveresize_move_keyboard &&
- action->data.moveresize.corner !=
- prop_atoms.net_wm_moveresize_size_keyboard) {
- action_free(action);
- action = NULL;
- }
- }
- if (action)
- mouse_bind(buttonstr, contextstr, mact, action);
- }
+ if ((action = action_parse(i, doc, nact, uact)))
+ mouse_bind(buttonstr, contextstr, mact, action);
nact = parse_find_node("action", nact->next);
}
g_free(buttonstr);
config_focus_last = parse_bool(doc, n);
if ((n = parse_find_node("focusLastOnDesktop", node)))
config_focus_last_on_desktop = parse_bool(doc, n);
+ if ((n = parse_find_node("focusDelay", node)))
+ config_focus_delay = parse_int(doc, n);
}
static void parse_theme(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node,
node = node->xmlChildrenNode;
- if ((n = parse_find_node("theme", node))) {
+ if ((n = parse_find_node("name", node))) {
gchar *c;
g_free(config_theme);
c = parse_string(doc, n);
- config_theme = expand_tilde(c);
+ config_theme = ob_expand_tilde(c);
g_free(c);
}
if ((n = parse_find_node("titleLayout", node))) {
c = parse_string(doc, node);
config_menu_files = g_slist_append(config_menu_files,
- expand_tilde(c));
+ ob_expand_tilde(c));
g_free(c);
}
}
config_focus_follow = FALSE;
config_focus_last = TRUE;
config_focus_last_on_desktop = TRUE;
+ config_focus_delay = 0;
parse_register(i, "focus", parse_focus, NULL);
parse_register(i, "mouse", parse_mouse, NULL);
config_resist_win = 10;
- config_resist_edge = 10;
+ config_resist_edge = 20;
parse_register(i, "resistance", parse_resistance, NULL);