#include "screen.h"
#include "openbox.h"
#include "gettext.h"
+#include "obt/paths.h"
gboolean config_focus_new;
gboolean config_focus_follow;
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;
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;
gboolean config_menu_middle;
guint config_submenu_show_delay;
gboolean config_menu_client_list_icons;
+gboolean config_menu_manage_desktops;
GSList *config_menu_files;
if (src->pos_given) {
dst->pos_given = TRUE;
+ dst->pos_force = src->pos_force;
dst->position = src->position;
dst->monitor = src->monitor;
}
}
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;
}
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")))
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)
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"))) {
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);
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")))
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);
}
}
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);
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);
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);