{
xmlNodePtr n, c;
gboolean x_pos_given = FALSE;
- gboolean width_given = FALSE;
if ((n = obt_xml_find_node(app->children, "decor")))
if (!obt_xml_node_contains(n, "default"))
&settings->width_num,
&settings->width_denom);
if (settings->width_num > 0 && settings->width_denom >= 0)
- width_given = TRUE;
+ settings->size_given = TRUE;
g_free(s);
- }
+ } else
+ settings->size_given = TRUE;
}
- if (width_given && (c = obt_xml_find_node(n->children, "height"))) {
- gchar *s = obt_xml_node_string(c);
- config_parse_relative_number(s,
- &settings->height_num,
- &settings->height_denom);
- if (settings->height_num > 0 && settings->height_denom >= 0)
+ if ((c = obt_xml_find_node(n->children, "height"))) {
+ if (!obt_xml_node_contains(c, "default")) {
+ gchar *s = obt_xml_node_string(c);
+ config_parse_relative_number(s,
+ &settings->height_num,
+ &settings->height_denom);
+ if (settings->height_num > 0 && settings->height_denom >= 0)
+ settings->size_given = TRUE;
+ g_free(s);
+ } else
settings->size_given = TRUE;
- g_free(s);
}
}
ob_debug("sizing by per-app settings");
- g_assert(settings->width_num > 0);
- g_assert(settings->width_denom >= 0);
- g_assert(settings->height_num > 0);
- g_assert(settings->height_denom >= 0);
-
- if (!settings->width_denom)
- *w = settings->width_num;
- else {
- *w = screen->width * settings->width_num / settings->width_denom;
- *w = MIN(*w, screen->width);
+ if (settings->width_num) {
+ if (!settings->width_denom)
+ *w = settings->width_num;
+ else {
+ *w = screen->width * settings->width_num / settings->width_denom;
+ *w = MIN(*w, screen->width);
+ }
}
- if (!settings->height_denom)
- *h = settings->height_num;
- else {
- *h = screen->height * settings->height_num / settings->height_denom;
- *h = MIN(*h, screen->height);
+ if (settings->height_num) {
+ if (!settings->height_denom)
+ *h = settings->height_num;
+ else {
+ *h = screen->height * settings->height_num / settings->height_denom;
+ *h = MIN(*h, screen->height);
+ }
}
}