panel: Compute fractional width after reserving the margin, not before (issue #559)

This commit is contained in:
o9000
2016-03-24 20:58:09 +01:00
parent 7b6ce97940
commit 9150a180fa
3 changed files with 12 additions and 12 deletions

View File

@@ -287,11 +287,9 @@ void init_panel_size_and_position(Panel *panel)
panel->area.height = 32;
}
if (panel->fractional_width)
panel->area.width = server.monitors[panel->monitor].width * panel->area.width / 100;
panel->area.width = (server.monitors[panel->monitor].width - panel->marginx) * panel->area.width / 100;
if (panel->fractional_height)
panel->area.height = server.monitors[panel->monitor].height * panel->area.height / 100;
if (panel->area.width + panel->marginx > server.monitors[panel->monitor].width)
panel->area.width = server.monitors[panel->monitor].width - panel->marginx;
panel->area.height = (server.monitors[panel->monitor].height - panel->marginy) * panel->area.height / 100;
if (panel->area.bg->border.radius > panel->area.height / 2) {
printf("panel_background_id rounded is too big... please fix your tint2rc\n");
g_array_append_val(backgrounds, *panel->area.bg);
@@ -309,18 +307,15 @@ void init_panel_size_and_position(Panel *panel)
}
int old_panel_height = panel->area.height;
if (panel->fractional_width)
panel->area.height = server.monitors[panel->monitor].height * panel->area.width / 100;
panel->area.height = (server.monitors[panel->monitor].height - panel->marginy) * panel->area.width / 100;
else
panel->area.height = panel->area.width;
if (panel->fractional_height)
panel->area.width = server.monitors[panel->monitor].width * old_panel_height / 100;
panel->area.width = (server.monitors[panel->monitor].width - panel->marginx) * old_panel_height / 100;
else
panel->area.width = old_panel_height;
if (panel->area.height + panel->marginy > server.monitors[panel->monitor].height)
panel->area.height = server.monitors[panel->monitor].height - panel->marginy;
if (panel->area.bg->border.radius > panel->area.width / 2) {
printf("panel_background_id rounded is too big... please fix your tint2rc\n");
g_array_append_val(backgrounds, *panel->area.bg);
@@ -329,6 +324,11 @@ void init_panel_size_and_position(Panel *panel)
}
}
if (panel->area.width + panel->marginx > server.monitors[panel->monitor].width)
panel->area.width = server.monitors[panel->monitor].width - panel->marginx;
if (panel->area.height + panel->marginy > server.monitors[panel->monitor].height)
panel->area.height = server.monitors[panel->monitor].height - panel->marginy;
// panel position determined here
if (panel_position & LEFT) {
panel->posx = server.monitors[panel->monitor].x + panel->marginx;