]> Dogcows Code - chaz/openbox/blobdiff - openbox/config.c
xflush after rendering
[chaz/openbox] / openbox / config.c
index 72ccd3b47bce99a37c7d7662cc1de4b95009f753..cee3c1378740a6c55b2e919ac245595af255dea0 100644 (file)
@@ -10,6 +10,7 @@ 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;
 
@@ -81,20 +82,9 @@ static void parse_key(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node,
     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);
         }
     }
@@ -122,6 +112,7 @@ static void parse_mouse(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node,
     xmlNodePtr n, nbut, nact;
     char *buttonstr;
     char *contextstr;
+    ObUserAction uact;
     ObMouseAction mact;
     ObAction *action;
 
@@ -140,44 +131,27 @@ static void parse_mouse(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node,
         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);
@@ -205,6 +179,8 @@ static void parse_focus(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node,
         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,
@@ -358,6 +334,7 @@ void config_startup(ObParseInst *i)
     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);
 
This page took 0.028976 seconds and 4 git commands to generate.