]> Dogcows Code - chaz/openbox/blobdiff - openbox/config.c
remove trailing whitespace
[chaz/openbox] / openbox / config.c
index 86068d75af24c06f68439294c3b1b9614384acf0..d74b95f0687e327b36c8c48557337d961f0735ba 100644 (file)
@@ -20,6 +20,7 @@
 #include "config.h"
 #include "keyboard.h"
 #include "mouse.h"
+#include "actions.h"
 #include "prop.h"
 #include "translate.h"
 #include "client.h"
@@ -33,8 +34,12 @@ 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;
+
+StrutPartial config_margins;
 
 gchar   *config_theme;
 gboolean config_theme_keepborder;
@@ -76,6 +81,7 @@ guint config_keyboard_reset_state;
 
 gint config_mouse_threshold;
 gint config_mouse_dclicktime;
+gint config_mouse_screenedgetime;
 
 guint    config_menu_hide_delay;
 gboolean config_menu_middle;
@@ -131,6 +137,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;
@@ -181,7 +189,7 @@ static void parse_per_app_settings(ObParseInst *i, xmlDocPtr doc,
         if (class_set || name_set) {
             xmlNodePtr n, c;
             ObAppSettings *settings = config_create_app_settings();;
-            
+
             if (name_set)
                 settings->name = g_pattern_spec_new(name);
 
@@ -207,7 +215,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 +233,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);
@@ -302,7 +320,7 @@ static void parse_per_app_settings(ObParseInst *i, xmlDocPtr doc,
             config_per_app_settings = g_slist_append(config_per_app_settings,
                                               (gpointer) settings);
         }
-        
+
         app = parse_find_node("application", app->next);
     }
 
@@ -343,9 +361,9 @@ static void parse_key(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node,
     }
     else if ((n = parse_find_node("action", node->children))) {
         while (n) {
-            ObAction *action;
-            
-            action = action_parse(i, doc, n, OB_USER_ACTION_KEYBOARD_KEY);
+            ObActionsAct *action;
+
+            action = actions_parse(i, doc, n);
             if (action)
                 keyboard_bind(keylist, action);
             n = parse_find_node("action", n->next);
@@ -383,7 +401,7 @@ static void parse_keyboard(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node,
 
 /*
 
-<context name="Titlebar"> 
+<context name="Titlebar">
   <mousebind button="Left" action="Press">
     <action name="Raise"></action>
   </mousebind>
@@ -397,18 +415,18 @@ static void parse_mouse(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node,
     xmlNodePtr n, nbut, nact;
     gchar *buttonstr;
     gchar *contextstr;
-    ObUserAction uact;
     ObMouseAction mact;
-    ObAction *action;
 
     mouse_unbind_all();
 
     node = node->children;
-    
+
     if ((n = parse_find_node("dragThreshold", node)))
         config_mouse_threshold = parse_int(doc, n);
     if ((n = parse_find_node("doubleClickTime", node)))
         config_mouse_dclicktime = parse_int(doc, n);
+    if ((n = parse_find_node("screenEdgeWarpTime", node)))
+        config_mouse_screenedgetime = parse_int(doc, n);
 
     n = parse_find_node("context", node);
     while (n) {
@@ -419,25 +437,22 @@ static void parse_mouse(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node,
             if (!parse_attr_string("button", nbut, &buttonstr))
                 goto next_nbut;
             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")) {
-                uact = OB_USER_ACTION_MOUSE_RELEASE;
                 mact = OB_MOUSE_ACTION_RELEASE;
             } 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")) {
-                uact = OB_USER_ACTION_MOUSE_DOUBLE_CLICK;
                 mact = OB_MOUSE_ACTION_DOUBLE_CLICK;
             } else if (parse_attr_contains("drag", nbut, "action")) {
-                uact = OB_USER_ACTION_MOUSE_MOTION;
                 mact = OB_MOUSE_ACTION_MOTION;
             } else
                 goto next_nbut;
             nact = parse_find_node("action", nbut->children);
             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);
                 nact = parse_find_node("action", nact->next);
             }
@@ -457,7 +472,7 @@ static void parse_focus(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node,
     xmlNodePtr n;
 
     node = node->children;
-    
+
     if ((n = parse_find_node("focusNew", node)))
         config_focus_new = parse_bool(doc, n);
     if ((n = parse_find_node("followMouse", node)))
@@ -468,6 +483,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,
@@ -476,10 +493,29 @@ static void parse_placement(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node,
     xmlNodePtr n;
 
     node = node->children;
-    
+
     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_margins(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node,
+                          gpointer d)
+{
+    xmlNodePtr n;
+
+    node = node->children;
+
+    if ((n = parse_find_node("top", node)))
+        config_margins.top = MAX(0, parse_int(doc, n));
+    if ((n = parse_find_node("left", node)))
+        config_margins.left = MAX(0, parse_int(doc, n));
+    if ((n = parse_find_node("right", node)))
+        config_margins.right = MAX(0, parse_int(doc, n));
+    if ((n = parse_find_node("bottom", node)))
+        config_margins.bottom = MAX(0, parse_int(doc, n));
 }
 
 static void parse_theme(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node,
@@ -571,7 +607,7 @@ static void parse_desktops(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node,
     xmlNodePtr n;
 
     node = node->children;
-    
+
     if ((n = parse_find_node("number", node))) {
         gint d = parse_int(doc, n);
         if (d > 0)
@@ -606,7 +642,7 @@ static void parse_resize(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node,
     xmlNodePtr n;
 
     node = node->children;
-    
+
     if ((n = parse_find_node("drawContents", node)))
         config_resize_redraw = parse_bool(doc, n);
     if ((n = parse_find_node("popupShow", node))) {
@@ -727,8 +763,8 @@ static void parse_menu(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node,
             config_menu_client_list_icons = parse_bool(doc, n);
     }
 }
-   
-static void parse_resistance(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node, 
+
+static void parse_resistance(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node,
                              gpointer d)
 {
     xmlNodePtr n;
@@ -755,11 +791,9 @@ static void bind_default_keyboard()
         { "A-F4", "Close" },
         { NULL, NULL }
     };
-
     for (it = binds; it->key; ++it) {
         GList *l = g_list_append(NULL, g_strdup(it->key));
-        keyboard_bind(l, action_from_string(it->actname,
-                                            OB_USER_ACTION_KEYBOARD_KEY));
+        keyboard_bind(l, actions_parse_string(it->actname));
     }
 }
 
@@ -807,7 +841,7 @@ static void bind_default_mouse()
         { "Left", "AllDesktops", OB_MOUSE_ACTION_CLICK, "Raise" },
         { "Left", "Shade", OB_MOUSE_ACTION_CLICK, "Raise" },
         { "Left", "Close", OB_MOUSE_ACTION_CLICK, "Close" },
-        { "Left", "Maximize", OB_MOUSE_ACTION_CLICK, "ToggleMaximizeFull" },
+        { "Left", "Maximize", OB_MOUSE_ACTION_CLICK, "ToggleMaximize" },
         { "Left", "Iconify", OB_MOUSE_ACTION_CLICK, "Iconify" },
         { "Left", "AllDesktops", OB_MOUSE_ACTION_CLICK, "ToggleOmnipresent" },
         { "Left", "Shade", OB_MOUSE_ACTION_CLICK, "ToggleShade" },
@@ -815,31 +849,19 @@ static void bind_default_mouse()
         { "Left", "TRCorner", OB_MOUSE_ACTION_MOTION, "Resize" },
         { "Left", "BLCorner", OB_MOUSE_ACTION_MOTION, "Resize" },
         { "Left", "BRCorner", OB_MOUSE_ACTION_MOTION, "Resize" },
+        { "Left", "Top", OB_MOUSE_ACTION_MOTION, "Resize" },
+        { "Left", "Bottom", OB_MOUSE_ACTION_MOTION, "Resize" },
+        { "Left", "Left", OB_MOUSE_ACTION_MOTION, "Resize" },
+        { "Left", "Right", OB_MOUSE_ACTION_MOTION, "Resize" },
         { "Left", "Titlebar", OB_MOUSE_ACTION_MOTION, "Move" },
         { "A-Left", "Frame", OB_MOUSE_ACTION_MOTION, "Move" },
         { "A-Middle", "Frame", OB_MOUSE_ACTION_MOTION, "Resize" },
         { NULL, NULL, 0, NULL }
     };
 
-    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();
-        }
+    for (it = binds; it->button; ++it)
         mouse_bind(it->button, it->context, it->mact,
-                   action_from_string(it->actname, uact));
-    }
+                   actions_parse_string(it->actname));
 }
 
 void config_startup(ObParseInst *i)
@@ -848,14 +870,20 @@ 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);
 
+    STRUT_PARTIAL_SET(config_margins, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
+
+    parse_register(i, "margins", parse_margins, NULL);
+
     config_theme = NULL;
 
     config_animate_iconify = TRUE;
@@ -906,6 +934,7 @@ void config_startup(ObParseInst *i)
 
     config_mouse_threshold = 8;
     config_mouse_dclicktime = 200;
+    config_mouse_screenedgetime = 400;
 
     bind_default_mouse();
 
This page took 0.029434 seconds and 4 git commands to generate.