X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=openbox%2Fconfig.c;h=673af4bdbeee9c69be5d6e54474ea7fd1cadcaea;hb=83c739df9117cde1982a1fec4487ea1a3eb6ebf0;hp=867dfb514ac876621dc90ea5b7cb8315a048b034;hpb=d3c1117fb4c0916c1d28b6bf91288a68c9712d53;p=chaz%2Fopenbox diff --git a/openbox/config.c b/openbox/config.c index 867dfb51..673af4bd 100644 --- a/openbox/config.c +++ b/openbox/config.c @@ -36,9 +36,9 @@ gboolean config_focus_raise; gboolean config_focus_last; gboolean config_focus_under_mouse; -ObPlacePolicy config_place_policy; -gboolean config_place_center; -gboolean config_place_active; +ObPlacePolicy config_place_policy; +gboolean config_place_center; +ObPlaceMonitor config_place_monitor; StrutPartial config_margins; @@ -55,7 +55,7 @@ RrFont *config_font_menuitem; RrFont *config_font_menutitle; RrFont *config_font_osd; -gint config_desktops_num; +guint config_desktops_num; GSList *config_desktops_names; guint config_screen_firstdesk; guint config_desktop_popup_time; @@ -89,6 +89,7 @@ guint config_menu_hide_delay; gboolean config_menu_middle; guint config_submenu_show_delay; gboolean config_menu_client_list_icons; +gboolean config_menu_manage_desktops; GSList *config_menu_files; @@ -137,6 +138,7 @@ void config_app_settings_copy_non_defaults(const ObAppSettings *src, if (src->pos_given) { dst->pos_given = TRUE; + dst->pos_force = src->pos_force; dst->position = src->position; dst->monitor = src->monitor; } @@ -246,6 +248,8 @@ static void parse_per_app_settings(ObParseInst *inst, xmlDocPtr doc, settings->monitor = parse_int(doc, c) + 1; g_free(s); } + + parse_attr_bool("force", n, &settings->pos_force); } if ((n = parse_find_node("focus", app->children))) @@ -491,8 +495,12 @@ static void parse_placement(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node, config_place_policy = OB_PLACE_POLICY_MOUSE; if ((n = parse_find_node("center", node))) config_place_center = parse_bool(doc, n); - if ((n = parse_find_node("active", node))) - config_place_active = parse_bool(doc, n); + if ((n = parse_find_node("monitor", node))) { + if (parse_contains("active", doc, n)) + config_place_monitor = OB_PLACE_MONITOR_ACTIVE; + else if (parse_contains("mouse", doc, n)) + config_place_monitor = OB_PLACE_MONITOR_MOUSE; + } } static void parse_margins(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node, @@ -605,7 +613,7 @@ static void parse_desktops(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node, if ((n = parse_find_node("number", node))) { gint d = parse_int(doc, n); if (d > 0) - config_desktops_num = d; + config_desktops_num = (unsigned) d; } if ((n = parse_find_node("firstdesk", node))) { gint d = parse_int(doc, n); @@ -770,6 +778,8 @@ static void parse_menu(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node, config_submenu_show_delay = parse_int(doc, n); if ((n = parse_find_node("applicationIcons", node))) config_menu_client_list_icons = parse_bool(doc, n); + if ((n = parse_find_node("manageDesktops", node))) + config_menu_manage_desktops = parse_bool(doc, n); } } @@ -886,7 +896,7 @@ void config_startup(ObParseInst *i) config_place_policy = OB_PLACE_POLICY_SMART; config_place_center = TRUE; - config_place_active = FALSE; + config_place_monitor = OB_PLACE_MONITOR_ANY; parse_register(i, "placement", parse_placement, NULL); @@ -961,6 +971,7 @@ void config_startup(ObParseInst *i) config_menu_middle = FALSE; config_submenu_show_delay = 0; config_menu_client_list_icons = TRUE; + config_menu_manage_desktops = TRUE; config_menu_files = NULL; parse_register(i, "menu", parse_menu, NULL); @@ -982,6 +993,7 @@ void config_shutdown(void) RrFontClose(config_font_inactivewindow); RrFontClose(config_font_menuitem); RrFontClose(config_font_menutitle); + RrFontClose(config_font_osd); for (it = config_desktops_names; it; it = g_slist_next(it)) g_free(it->data);