all repos — tint2 @ cfac6a645d891bf1c1d326c9a46598f7defa456a

fork of the tint2 desktop panel for my custom setup - only minimized windows across all desktops for the taskbar

Fix alignment when taskbar_distribute_size = 1 and task_align is not left (issue #688)
o9000 mrovi9000@gmail.com
commit

cfac6a645d891bf1c1d326c9a46598f7defa456a

parent

648c7c109ff15548879bfdc0cc99074727960286

1 files changed, 40 insertions(+), 1 deletions(-)

jump to
M src/panel.csrc/panel.c

@@ -494,9 +494,11 @@ num_tasks++;

} } - // Distribute the remaining size between tasks + // Distribute the remaining size between taskbars if (num_tasks > 0) { int task_size = total_size / num_tasks; + if (taskbar_alignment != ALIGN_LEFT) + task_size = MIN(task_size, panel_horizontal ? panel_config.g_task.maximum_width : panel_config.g_task.maximum_height); for (int i = 0; i < panel->num_desktops; i++) { Taskbar *taskbar = &panel->taskbar[i]; if (!taskbar->area.on_screen)

@@ -511,6 +513,43 @@ if (panel_horizontal)

taskbar->area.width += task_size; else taskbar->area.height += task_size; + } + } + int slack = total_size - task_size * num_tasks; + if (taskbar_alignment == ALIGN_RIGHT) { + for (int i = 0; i < panel->num_desktops; i++) { + Taskbar *taskbar = &panel->taskbar[i]; + if (!taskbar->area.on_screen) + continue; + if (panel_horizontal) + taskbar->area.width += slack; + else + taskbar->area.height += slack; + break; + } + } else if (taskbar_alignment == ALIGN_CENTER) { + slack /= 2; + for (int i = 0; i < panel->num_desktops; i++) { + Taskbar *taskbar = &panel->taskbar[i]; + if (!taskbar->area.on_screen) + continue; + if (panel_horizontal) + taskbar->area.width += slack; + else + taskbar->area.height += slack; + taskbar->area.alignment = ALIGN_RIGHT; + break; + } + for (int i = panel->num_desktops - 1; i >= 0; i--) { + Taskbar *taskbar = &panel->taskbar[i]; + if (!taskbar->area.on_screen) + continue; + if (panel_horizontal) + taskbar->area.width += slack; + else + taskbar->area.height += slack; + taskbar->area.alignment = ALIGN_LEFT; + break; } } } else {