X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=openbox%2Fconfig.c;h=6bdae9fffbd3b11dde405a17a63606a598e4d30f;hb=7aae8cc5262c1b36e3196845d62489b76af9063f;hp=cc86ce7cfa748fbc0da12148485a25ce2f396d05;hpb=18141d78dab9e19161cae3e7e89f8b95591a2e9b;p=chaz%2Fopenbox diff --git a/openbox/config.c b/openbox/config.c index cc86ce7c..6bdae9ff 100644 --- a/openbox/config.c +++ b/openbox/config.c @@ -22,7 +22,6 @@ #include "mouse.h" #include "actions.h" #include "translate.h" -#include "hooks.h" #include "client.h" #include "screen.h" #include "openbox.h" @@ -35,15 +34,20 @@ guint config_focus_delay; gboolean config_focus_raise; gboolean config_focus_last; gboolean config_focus_under_mouse; +gboolean config_unfocus_leave; ObPlacePolicy config_place_policy; gboolean config_place_center; ObPlaceMonitor config_place_monitor; +guint config_primary_monitor_index; +ObPlaceMonitor config_primary_monitor; + StrutPartial config_margins; gchar *config_theme; gboolean config_theme_keepborder; +guint config_theme_window_list_icon_size; gchar *config_title_layout; @@ -53,7 +57,8 @@ RrFont *config_font_activewindow; RrFont *config_font_inactivewindow; RrFont *config_font_menuitem; RrFont *config_font_menutitle; -RrFont *config_font_osd; +RrFont *config_font_activeosd; +RrFont *config_font_inactiveosd; guint config_desktops_num; GSList *config_desktops_names; @@ -128,6 +133,7 @@ void config_app_settings_copy_non_defaults(const ObAppSettings *src, copy_if(type, (ObClientType)-1); copy_if(decor, -1); copy_if(shade, -1); + copy_if(monitor, -1); copy_if(focus, -1); copy_if(desktop, 0); copy_if(layer, -2); @@ -198,7 +204,7 @@ static void parse_per_app_settings(xmlNodePtr node, gpointer d) gboolean x_pos_given; while (app) { - name_set = class_set = type_set = x_pos_given = FALSE; + x_pos_given = FALSE; class_set = obt_parse_attr_string(app, "class", &class); name_set = obt_parse_attr_string(app, "name", &name); @@ -263,7 +269,7 @@ static void parse_per_app_settings(xmlNodePtr node, gpointer d) if (!g_ascii_strcasecmp(s, "mouse")) settings->monitor = 0; else - settings->monitor = obt_parse_node_int(c) + 1; + settings->monitor = obt_parse_node_int(c); g_free(s); } @@ -343,47 +349,6 @@ static void parse_per_app_settings(xmlNodePtr node, gpointer d) } } -static void parse_hook(xmlNodePtr node, gpointer d) -{ - gchar *name; - ObHook hook; - xmlNodePtr n; - - - if (!obt_parse_attr_string(node, "name", &name)) { - g_message(_("Hook in config file is missing a name")); - return; - } - - hook = hooks_hook_from_name(name); - if (!hook) - g_message(_("Unknown hook \"%s\" in config file"), name); - else { - if ((n = obt_parse_find_node(node->children, "action"))) - while (n) { - ObActionsAct *action; - - action = actions_parse(n); - if (action) - hooks_add(hook, action); - n = obt_parse_find_node(n->next, "action"); - } - } - - g_free(name); -} - -static void parse_hooks(xmlNodePtr node, gpointer d) -{ - xmlNodePtr n; - - if ((n = obt_parse_find_node(node->children, "hook"))) - while (n) { - parse_hook(n, NULL); - n = obt_parse_find_node(n->next, "hook"); - } -} - /* @@ -477,8 +442,13 @@ static void parse_mouse(xmlNodePtr node, gpointer d) config_mouse_threshold = obt_parse_node_int(n); if ((n = obt_parse_find_node(node, "doubleClickTime"))) config_mouse_dclicktime = obt_parse_node_int(n); - if ((n = obt_parse_find_node(node, "screenEdgeWarpTime"))) + if ((n = obt_parse_find_node(node, "screenEdgeWarpTime"))) { config_mouse_screenedgetime = obt_parse_node_int(n); + /* minimum value of 25 for this property, when it is 1 and you hit the + edge it basically never stops */ + if (config_mouse_screenedgetime && config_mouse_screenedgetime < 25) + config_mouse_screenedgetime = 25; + } n = obt_parse_find_node(node, "context"); while (n) { @@ -536,6 +506,8 @@ static void parse_focus(xmlNodePtr node, gpointer d) config_focus_last = obt_parse_node_bool(n); if ((n = obt_parse_find_node(node, "underMouse"))) config_focus_under_mouse = obt_parse_node_bool(n); + if ((n = obt_parse_find_node(node, "unfocusOnLeave"))) + config_unfocus_leave = obt_parse_node_bool(n); } static void parse_placement(xmlNodePtr node, gpointer d) @@ -555,6 +527,13 @@ static void parse_placement(xmlNodePtr node, gpointer d) else if (obt_parse_node_contains(n, "mouse")) config_place_monitor = OB_PLACE_MONITOR_MOUSE; } + if ((n = obt_parse_find_node(node, "primaryMonitor"))) { + config_primary_monitor_index = obt_parse_node_int(n); + if (!config_primary_monitor_index) { + if (obt_parse_node_contains(n, "mouse")) + config_primary_monitor = OB_PLACE_MONITOR_MOUSE; + } + } } static void parse_margins(xmlNodePtr node, gpointer d) @@ -602,6 +581,13 @@ static void parse_theme(xmlNodePtr node, gpointer d) config_theme_keepborder = obt_parse_node_bool(n); if ((n = obt_parse_find_node(node, "animateIconify"))) config_animate_iconify = obt_parse_node_bool(n); + if ((n = obt_parse_find_node(node, "windowListIconSize"))) { + config_theme_window_list_icon_size = obt_parse_node_int(n); + if (config_theme_window_list_icon_size < 16) + config_theme_window_list_icon_size = 16; + else if (config_theme_window_list_icon_size > 96) + config_theme_window_list_icon_size = 96; + } n = obt_parse_find_node(node, "font"); while (n) { @@ -620,8 +606,12 @@ static void parse_theme(xmlNodePtr node, gpointer d) font = &config_font_menutitle; else if (obt_parse_attr_contains(n, "place", "MenuItem")) font = &config_font_menuitem; + else if (obt_parse_attr_contains(n, "place", "ActiveOnScreenDisplay")) + font = &config_font_activeosd; else if (obt_parse_attr_contains(n, "place", "OnScreenDisplay")) - font = &config_font_osd; + font = &config_font_activeosd; + else if (obt_parse_attr_contains(n, "place","InactiveOnScreenDisplay")) + font = &config_font_inactiveosd; else goto next_font; @@ -815,25 +805,25 @@ static void parse_dock(xmlNodePtr node, gpointer d) static void parse_menu(xmlNodePtr node, gpointer d) { xmlNodePtr n; - for (node = node->children; node; node = node->next) { - if (!xmlStrcasecmp(node->name, (const xmlChar*) "file")) { - gchar *c; + node = node->children; - c = obt_parse_node_string(node); + if ((n = obt_parse_find_node(node, "hideDelay"))) + config_menu_hide_delay = obt_parse_node_int(n); + if ((n = obt_parse_find_node(node, "middle"))) + config_menu_middle = obt_parse_node_bool(n); + if ((n = obt_parse_find_node(node, "submenuShowDelay"))) + 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); + + while ((node = obt_parse_find_node(node, "file"))) { + gchar *c = obt_parse_node_string(node); config_menu_files = g_slist_append(config_menu_files, obt_paths_expand_tilde(c)); g_free(c); - } - if ((n = obt_parse_find_node(node, "hideDelay"))) - config_menu_hide_delay = obt_parse_node_int(n); - if ((n = obt_parse_find_node(node, "middle"))) - config_menu_middle = obt_parse_node_bool(n); - if ((n = obt_parse_find_node(node, "submenuShowDelay"))) - 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); + node = node->next; } } @@ -944,6 +934,7 @@ void config_startup(ObtParseInst *i) config_focus_raise = FALSE; config_focus_last = TRUE; config_focus_under_mouse = FALSE; + config_unfocus_leave = FALSE; obt_parse_register(i, "focus", parse_focus, NULL); @@ -951,6 +942,9 @@ void config_startup(ObtParseInst *i) config_place_center = TRUE; config_place_monitor = OB_PLACE_MONITOR_ANY; + config_primary_monitor_index = 1; + config_primary_monitor = OB_PLACE_MONITOR_ACTIVE; + obt_parse_register(i, "placement", parse_placement, NULL); STRUT_PARTIAL_SET(config_margins, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); @@ -962,6 +956,7 @@ void config_startup(ObtParseInst *i) config_animate_iconify = TRUE; config_title_layout = g_strdup("NLIMC"); config_theme_keepborder = TRUE; + config_theme_window_list_icon_size = 36; config_font_activewindow = NULL; config_font_inactivewindow = NULL; @@ -1029,8 +1024,6 @@ void config_startup(ObtParseInst *i) obt_parse_register(i, "menu", parse_menu, NULL); - obt_parse_register(i, "hooks", parse_hooks, NULL); - config_per_app_settings = NULL; obt_parse_register(i, "applications", parse_per_app_settings, NULL); @@ -1048,7 +1041,8 @@ void config_shutdown(void) RrFontClose(config_font_inactivewindow); RrFontClose(config_font_menuitem); RrFontClose(config_font_menutitle); - RrFontClose(config_font_osd); + RrFontClose(config_font_activeosd); + RrFontClose(config_font_inactiveosd); for (it = config_desktops_names; it; it = g_slist_next(it)) g_free(it->data);