X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;ds=sidebyside;f=openbox%2Fconfig.c;h=a268eb5b82e003144764f51c070fe389f363efd5;hb=f4838c9a3d9717a8d8bbf4fb94876dd4fc10f7da;hp=70e44d76e1b8501be8254dad18d69d940e9ca33d;hpb=fdabb69f4f25596df972caa76c85c2aeba26226e;p=chaz%2Fopenbox diff --git a/openbox/config.c b/openbox/config.c index 70e44d76..a268eb5b 100644 --- a/openbox/config.c +++ b/openbox/config.c @@ -26,6 +26,7 @@ #include "screen.h" #include "openbox.h" #include "gettext.h" +#include "obt/paths.h" gboolean config_focus_new; gboolean config_focus_follow; @@ -34,9 +35,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; @@ -53,7 +54,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; @@ -87,6 +88,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; @@ -135,6 +137,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; } @@ -225,7 +228,7 @@ static void parse_per_app_settings(xmlNodePtr node, gpointer d) } if (x_pos_given && (c = obt_parse_find_node(n->children, "y"))) - if (!obt_parse_node_contains("default", doc, c)) { + if (!obt_parse_node_contains(c, "default")) { config_parse_gravity_coord(c, &settings->position.y); settings->pos_given = TRUE; } @@ -240,6 +243,8 @@ static void parse_per_app_settings(xmlNodePtr node, gpointer d) settings->monitor = obt_parse_node_int(c) + 1; g_free(s); } + + obt_parse_attr_bool(n, "force", &settings->pos_force); } if ((n = obt_parse_find_node(app->children, "focus"))) @@ -480,8 +485,12 @@ static void parse_placement(xmlNodePtr node, gpointer d) config_place_policy = OB_PLACE_POLICY_MOUSE; if ((n = obt_parse_find_node(node, "center"))) config_place_center = obt_parse_node_bool(n); - if ((n = obt_parse_find_node(node, "active"))) - config_place_active = obt_parse_node_bool(n); + if ((n = obt_parse_find_node(node, "monitor"))) { + if (obt_parse_node_contains(n, "active")) + config_place_monitor = OB_PLACE_MONITOR_ACTIVE; + else if (obt_parse_node_contains(n, "mouse")) + config_place_monitor = OB_PLACE_MONITOR_MOUSE; + } } static void parse_margins(xmlNodePtr node, gpointer d) @@ -511,7 +520,7 @@ static void parse_theme(xmlNodePtr node, gpointer d) g_free(config_theme); c = obt_parse_node_string(n); - config_theme = parse_expand_tilde(c); + config_theme = obt_paths_expand_tilde(c); g_free(c); } if ((n = obt_parse_find_node(node, "titleLayout"))) { @@ -591,7 +600,7 @@ static void parse_desktops(xmlNodePtr node, gpointer d) if ((n = obt_parse_find_node(node, "number"))) { gint d = obt_parse_node_int(n); if (d > 0) - config_desktops_num = d; + config_desktops_num = (unsigned) d; } if ((n = obt_parse_find_node(node, "firstdesk"))) { gint d = obt_parse_node_int(n); @@ -743,7 +752,7 @@ static void parse_menu(xmlNodePtr node, gpointer d) c = obt_parse_node_string(node); config_menu_files = g_slist_append(config_menu_files, - parse_expand_tilde(c)); + obt_paths_expand_tilde(c)); g_free(c); } if ((n = obt_parse_find_node(node, "hideDelay"))) @@ -754,6 +763,8 @@ static void parse_menu(xmlNodePtr node, gpointer d) config_submenu_show_delay = obt_parse_node_int(n); if ((n = obt_parse_find_node(node, "applicationIcons"))) config_menu_client_list_icons = obt_parse_node_bool(n); + if ((n = obt_parse_find_node(node, "manageDesktops"))) + config_menu_manage_desktops = obt_parse_node_bool(n); } } @@ -869,7 +880,7 @@ void config_startup(ObtParseInst *i) config_place_policy = OB_PLACE_POLICY_SMART; config_place_center = TRUE; - config_place_active = FALSE; + config_place_monitor = OB_PLACE_MONITOR_ANY; obt_parse_register(i, "placement", parse_placement, NULL); @@ -944,6 +955,7 @@ void config_startup(ObtParseInst *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; obt_parse_register(i, "menu", parse_menu, NULL); @@ -965,6 +977,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);