X-Git-Url: https://git.brokenzipper.com/gitweb?a=blobdiff_plain;f=openbox%2Fconfig.c;h=debd9fbae22d9cf1a294a2f1b46aef95782f6f86;hb=8e4fcae64d029fbe5f0edc444b0152d6d4b512e3;hp=025a683377bfbc05e456a407134a030423d4e599;hpb=9fcf466aebe8e8312472191a309263df56cdedb8;p=chaz%2Fopenbox diff --git a/openbox/config.c b/openbox/config.c index 025a6833..debd9fba 100644 --- a/openbox/config.c +++ b/openbox/config.c @@ -370,7 +370,8 @@ static void parse_per_app_settings(xmlNodePtr node, gpointer d) g_free(class); g_free(role); g_free(title); - name = class = role = title = NULL; + g_free(type_str); + name = class = role = title = type_str = NULL; } app = obt_xml_find_node(app->next, "application"); @@ -389,39 +390,44 @@ static void parse_per_app_settings(xmlNodePtr node, gpointer d) static void parse_key(xmlNodePtr node, GList *keylist) { - gchar *key; + gchar *keystring, **keys, **key; xmlNodePtr n; gboolean is_chroot = FALSE; - if (!obt_xml_attr_string(node, "key", &key)) + if (!obt_xml_attr_string(node, "key", &keystring)) return; obt_xml_attr_bool(node, "chroot", &is_chroot); - keylist = g_list_append(keylist, key); + keys = g_strsplit(keystring, " ", 0); + for (key = keys; *key; ++key) { + keylist = g_list_append(keylist, *key); - if ((n = obt_xml_find_node(node->children, "keybind"))) { - while (n) { - parse_key(n, keylist); - n = obt_xml_find_node(n->next, "keybind"); + if ((n = obt_xml_find_node(node->children, "keybind"))) { + while (n) { + parse_key(n, keylist); + n = obt_xml_find_node(n->next, "keybind"); + } } - } - else if ((n = obt_xml_find_node(node->children, "action"))) { - while (n) { - ObActionsAct *action; - - action = actions_parse(n); - if (action) - keyboard_bind(keylist, action); - n = obt_xml_find_node(n->next, "action"); + else if ((n = obt_xml_find_node(node->children, "action"))) { + while (n) { + ObActionsAct *action; + + action = actions_parse(n); + if (action) + keyboard_bind(keylist, action); + n = obt_xml_find_node(n->next, "action"); + } } - } - if (is_chroot) - keyboard_chroot(keylist); - g_free(key); - keylist = g_list_delete_link(keylist, g_list_last(keylist)); + if (is_chroot) + keyboard_chroot(keylist); + keylist = g_list_delete_link(keylist, g_list_last(keylist)); + } + + g_strfreev(keys); + g_free(keystring); } static void parse_keyboard(xmlNodePtr node, gpointer d) @@ -576,6 +582,8 @@ static void parse_placement(xmlNodePtr node, gpointer d) config_place_monitor = OB_PLACE_MONITOR_ACTIVE; else if (obt_xml_node_contains(n, "mouse")) config_place_monitor = OB_PLACE_MONITOR_MOUSE; + else if (obt_xml_node_contains(n, "any")) + config_place_monitor = OB_PLACE_MONITOR_ANY; } if ((n = obt_xml_find_node(node, "primaryMonitor"))) { config_primary_monitor_index = obt_xml_node_int(n); @@ -997,7 +1005,7 @@ void config_startup(ObtXmlInst *i) config_place_policy = OB_PLACE_POLICY_SMART; config_place_center = TRUE; - config_place_monitor = OB_PLACE_MONITOR_ANY; + config_place_monitor = OB_PLACE_MONITOR_PRIMARY; config_primary_monitor_index = 1; config_primary_monitor = OB_PLACE_MONITOR_ACTIVE;