X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=openbox%2Fconfig.c;h=e0cb1819d7f6068788611ca596bc97dd2e5071e8;hb=c234ed9ecd9d5228744aae018768ff0c04f2d217;hp=aa903a2adde55d4db910042e1db5fe24b533b3bf;hpb=ff04e2c9a98325e4ae13958ef63b455df303abc9;p=chaz%2Fopenbox diff --git a/openbox/config.c b/openbox/config.c index aa903a2a..e0cb1819 100644 --- a/openbox/config.c +++ b/openbox/config.c @@ -23,6 +23,7 @@ #include "prop.h" #include "translate.h" #include "client.h" +#include "screen.h" #include "parser/parse.h" #include "openbox.h" @@ -38,7 +39,8 @@ gchar *config_theme; gboolean config_theme_keepborder; gboolean config_theme_hidedisabled; -gchar *config_title_layout; +gchar *config_title_layout; +gboolean config_title_number; gint config_desktops_num; GSList *config_desktops_names; @@ -71,14 +73,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 +116,29 @@ 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; @@ -137,7 +154,7 @@ static void parse_per_app_settings(ObParseInst *i, xmlDocPtr doc, settings->pos_given = FALSE; if ((n = parse_find_node("position", app->children))) { if ((c = parse_find_node("x", n->children))) { - str *s = parse_string(doc, c); + gchar *s = parse_string(doc, c); if (!strcmp(s, "center")) { settings->center_x = TRUE; x_pos_given = TRUE; @@ -149,7 +166,7 @@ static void parse_per_app_settings(ObParseInst *i, xmlDocPtr doc, } if (x_pos_given && (c = parse_find_node("y", n->children))) { - str *s = parse_string(doc, c); + gchar *s = parse_string(doc, c); if (!strcmp(s, "center")) { settings->center_y = TRUE; settings->pos_given = TRUE; @@ -166,7 +183,7 @@ static void parse_per_app_settings(ObParseInst *i, xmlDocPtr doc, settings->focus = parse_bool(doc, n); if ((n = parse_find_node("desktop", app->children))) { - str *s = parse_string(doc, n); + gchar *s = parse_string(doc, n); if (!strcmp(s, "all")) settings->desktop = DESKTOP_ALL; else @@ -178,7 +195,7 @@ static void parse_per_app_settings(ObParseInst *i, xmlDocPtr doc, * desktops */ if ((n = parse_find_node("head", app->children))) { - str *s = parse_string(doc, n); + gchar *s = parse_string(doc, n); if (!strcmp(s, "mouse")) settings->head = -1; else @@ -188,7 +205,7 @@ static void parse_per_app_settings(ObParseInst *i, xmlDocPtr doc, settings->layer = -2; if ((n = parse_find_node("layer", app->children))) { - str *s = parse_string(doc, n); + gchar *s = parse_string(doc, n); if (!strcmp(s, "above")) settings->layer = 1; else if (!strcmp(s, "below")) @@ -217,7 +234,7 @@ static void parse_per_app_settings(ObParseInst *i, xmlDocPtr doc, settings->max_horz = -1; settings->max_vert = -1; if ((n = parse_find_node("maximized", app->children))) { - str *s = parse_string(doc, n); + gchar *s = parse_string(doc, n); if (!strcmp(s, "horizontal")) { settings->max_horz = TRUE; settings->max_vert = FALSE; @@ -415,6 +432,8 @@ static void parse_theme(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node, g_free(config_title_layout); config_title_layout = parse_string(doc, n); } + if ((n = parse_find_node("titleNumber", node))) + config_title_number = parse_bool(doc, n); if ((n = parse_find_node("keepBorder", node))) config_theme_keepborder = parse_bool(doc, n); if ((n = parse_find_node("hideDisabled", node))) @@ -581,6 +600,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))) @@ -722,6 +743,7 @@ void config_startup(ObParseInst *i) config_theme = NULL; config_title_layout = g_strdup("NLIMC"); + config_title_number = TRUE; config_theme_keepborder = TRUE; config_theme_hidedisabled = FALSE; @@ -778,6 +800,7 @@ void config_startup(ObParseInst *i) config_menu_warppointer = TRUE; config_menu_xorstyle = TRUE; config_menu_hide_delay = 250; + config_menu_middle = FALSE; config_submenu_show_delay = 0; config_menu_client_list_icons = TRUE; config_menu_files = NULL; @@ -809,6 +832,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);