]> Dogcows Code - chaz/openbox/blobdiff - openbox/config.c
hopefully fix keyboard move and resize refusing to go outside the screen
[chaz/openbox] / openbox / config.c
index 56d94341d9c37ba3ddf2a0d633861e32e0c27d50..d986ac1b3111b57a82d90ca0ce924f653a5c3550 100644 (file)
@@ -23,6 +23,7 @@
 #include "prop.h"
 #include "translate.h"
 #include "client.h"
+#include "screen.h"
 #include "parser/parse.h"
 #include "openbox.h"
 
@@ -71,14 +72,14 @@ gint config_mouse_dclicktime;
 gboolean config_menu_warppointer;
 gboolean config_menu_xorstyle;
 guint    config_menu_hide_delay;
+gboolean config_menu_middle;
 guint    config_submenu_show_delay;
 gboolean config_menu_client_list_icons;
 
 GSList *config_menu_files;
 
-gint config_resist_win;
-gint config_resist_edge;
-
+gint     config_resist_win;
+gint     config_resist_edge;
 gboolean config_resist_layers_below;
 
 GSList *config_per_app_settings;
@@ -114,14 +115,28 @@ static void parse_per_app_settings(ObParseInst *i, xmlDocPtr doc,
                                    xmlNodePtr node, gpointer d)
 {
     xmlNodePtr app = parse_find_node("application", node->children);
-    gchar *name;
+    gchar *name, *class;
+    gboolean name_set, class_set;
+    gboolean x_pos_given;
 
     while (app) {
-        gboolean x_pos_given = FALSE;
-        if (parse_attr_string("name", app, &name)) {
+        name_set = class_set = x_pos_given = FALSE;
+
+        class_set = parse_attr_string("class", app, &class);
+        name_set = parse_attr_string("name", app, &name);
+        if (class_set || name_set) {
             xmlNodePtr n, c;
             ObAppSettings *settings = g_new0(ObAppSettings, 1);
-            settings->name = name;
+            
+            if (name_set)
+                settings->name = name;
+            else
+                settings->name = NULL;
+            if (class_set)
+                settings->class = class;
+            else
+                settings->class = NULL;
+
             if (!parse_attr_string("role", app, &settings->role))
                 settings->role = NULL;
 
@@ -581,6 +596,8 @@ static void parse_menu(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node,
             config_menu_xorstyle = parse_bool(doc, n);
         if ((n = parse_find_node("hideDelay", node)))
             config_menu_hide_delay = parse_int(doc, n);
+        if ((n = parse_find_node("middle", node)))
+            config_menu_middle = parse_bool(doc, n);
         if ((n = parse_find_node("submenuShowDelay", node)))
             config_submenu_show_delay = parse_int(doc, n);
         if ((n = parse_find_node("desktopMenuIcons", node)))
@@ -778,6 +795,7 @@ void config_startup(ObParseInst *i)
     config_menu_warppointer = TRUE;
     config_menu_xorstyle = TRUE;
     config_menu_hide_delay = 250;
+    config_menu_middle = TRUE;
     config_submenu_show_delay = 0;
     config_menu_client_list_icons = TRUE;
     config_menu_files = NULL;
@@ -809,6 +827,7 @@ void config_shutdown()
         ObAppSettings *itd = (ObAppSettings *)it->data;
         g_free(itd->name);
         g_free(itd->role);
+        g_free(itd->class);
         g_free(it->data);
     }
     g_slist_free(config_per_app_settings);
This page took 0.028285 seconds and 4 git commands to generate.