]> Dogcows Code - chaz/openbox/blobdiff - openbox/config.c
let you lower a window without lowering its children, or its siblings
[chaz/openbox] / openbox / config.c
index 86068d75af24c06f68439294c3b1b9614384acf0..2eb8e13c4fe5623ae2459511f44453b92bc751af 100644 (file)
@@ -33,8 +33,10 @@ gboolean config_focus_follow;
 guint    config_focus_delay;
 gboolean config_focus_raise;
 gboolean config_focus_last;
+gboolean config_focus_under_mouse;
 
 ObPlacePolicy config_place_policy;
+gboolean      config_place_center;
 
 gchar   *config_theme;
 gboolean config_theme_keepborder;
@@ -131,6 +133,8 @@ void config_app_settings_copy_non_defaults(const ObAppSettings *src,
         dst->pos_given = TRUE;
         dst->center_x = src->center_x;
         dst->center_y = src->center_y;
+        dst->opposite_x = src->opposite_x;
+        dst->opposite_y = src->opposite_y;
         dst->position.x = src->position.x;
         dst->position.y = src->position.y;
         dst->monitor = src->monitor;
@@ -207,7 +211,12 @@ static void parse_per_app_settings(ObParseInst *i, xmlDocPtr doc,
                             settings->center_x = TRUE;
                             x_pos_given = TRUE;
                         } else {
-                            settings->position.x = parse_int(doc, c);
+                            if (s[0] == '-')
+                                settings->opposite_x = TRUE;
+                            if (s[0] == '-' || s[0] == '+')
+                                settings->position.x = atoi(s+1);
+                            else
+                                settings->position.x = atoi(s);
                             x_pos_given = TRUE;
                         }
                         g_free(s);
@@ -220,7 +229,12 @@ static void parse_per_app_settings(ObParseInst *i, xmlDocPtr doc,
                             settings->center_y = TRUE;
                             settings->pos_given = TRUE;
                         } else {
-                            settings->position.y = parse_int(doc, c);
+                            if (s[0] == '-')
+                                settings->opposite_y = TRUE;
+                            if (s[0] == '-' || s[0] == '+')
+                                settings->position.y = atoi(s+1);
+                            else
+                                settings->position.y = atoi(s);
                             settings->pos_given = TRUE;
                         }
                         g_free(s);
@@ -468,6 +482,8 @@ static void parse_focus(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node,
         config_focus_raise = parse_bool(doc, n);
     if ((n = parse_find_node("focusLast", node)))
         config_focus_last = parse_bool(doc, n);
+    if ((n = parse_find_node("underMouse", node)))
+        config_focus_under_mouse = parse_bool(doc, n);
 }
 
 static void parse_placement(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node,
@@ -480,6 +496,8 @@ static void parse_placement(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node,
     if ((n = parse_find_node("policy", node)))
         if (parse_contains("UnderMouse", doc, n))
             config_place_policy = OB_PLACE_POLICY_MOUSE;
+    if ((n = parse_find_node("center", node)))
+        config_place_center = parse_bool(doc, n);
 }
 
 static void parse_theme(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node,
@@ -848,11 +866,13 @@ void config_startup(ObParseInst *i)
     config_focus_follow = FALSE;
     config_focus_delay = 0;
     config_focus_raise = FALSE;
-    config_focus_last = FALSE;
+    config_focus_last = TRUE;
+    config_focus_under_mouse = FALSE;
 
     parse_register(i, "focus", parse_focus, NULL);
 
     config_place_policy = OB_PLACE_POLICY_SMART;
+    config_place_center = TRUE;
 
     parse_register(i, "placement", parse_placement, NULL);
 
This page took 0.022816 seconds and 4 git commands to generate.