]> Dogcows Code - chaz/openbox/blobdiff - openbox/config.c
add role matching to per app settings and fix a small memleak in the code that frees...
[chaz/openbox] / openbox / config.c
index 720a1f89e788370ce4b33ac1f7a57ac4ff87a6b9..5b669685f334f4fff8c3f4bd2e2d77e59915cf8a 100644 (file)
@@ -122,8 +122,10 @@ static void parse_per_app_settings(ObParseInst *i, xmlDocPtr doc,
         gboolean x_pos_given = FALSE;
         if (parse_attr_string("name", app, &name)) {
             xmlNodePtr n, c;
-            ObAppSettings *settings = g_new0(ObAppSetting, 1);
+            ObAppSettings *settings = g_new0(ObAppSettings, 1);
             settings->name = name;
+            if (!parse_attr_string("role", app, &settings->role))
+                settings->role = NULL;
 
             settings->decor = TRUE;
             if ((n = parse_find_node("decor", app->children)))
@@ -148,10 +150,10 @@ static void parse_per_app_settings(ObParseInst *i, xmlDocPtr doc,
                 if (x_pos_given && (c = parse_find_node("y", n->children))) {
                     if (!strcmp(parse_string(doc, c), "center")) {
                         settings->center_y = TRUE;
-                        settings->pos_given;
+                        settings->pos_given = TRUE;
                     } else {
                         settings->position.y = parse_int(doc, c);
-                        settings->pos_given;
+                        settings->pos_given = TRUE;
                     }
                 }
             }
@@ -755,7 +757,11 @@ void config_shutdown()
         g_free(it->data);
     g_slist_free(config_menu_files);
 
-    for (it = config_per_app_settings; it; it = g_slist_next(it))
+    for (it = config_per_app_settings; it; it = g_slist_next(it)) {
+        ObAppSettings *itd = (ObAppSettings *)it->data;
+        g_free(itd->name);
+        g_free(itd->role);
         g_free(it->data);
+    }
     g_slist_free(config_per_app_settings);
 }
This page took 0.021082 seconds and 4 git commands to generate.