Fix regression in resizing logic (taskbar_distribute_size now works correctly when the taskbar is completely empty)
This commit is contained in:
parent
ce0acdbd5b
commit
040f6479bf
1 changed files with 24 additions and 11 deletions
35
src/panel.c
35
src/panel.c
|
@ -490,21 +490,34 @@ gboolean resize_panel(void *obj)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Distribute the remaining size between tasks
|
// Distribute the remaining size between tasks
|
||||||
int task_size = total_size / MAX(num_tasks, 1);
|
if (num_tasks > 0) {
|
||||||
for (int i = 0; i < panel->num_desktops; i++) {
|
int task_size = total_size / num_tasks;
|
||||||
Taskbar *taskbar = &panel->taskbar[i];
|
for (int i = 0; i < panel->num_desktops; i++) {
|
||||||
if (!taskbar->area.on_screen)
|
Taskbar *taskbar = &panel->taskbar[i];
|
||||||
continue;
|
if (!taskbar->area.on_screen)
|
||||||
for (GList *l = taskbar->area.children; l; l = l->next) {
|
|
||||||
Area *child = (Area *)l->data;
|
|
||||||
if (!child->on_screen)
|
|
||||||
continue;
|
continue;
|
||||||
if (taskbarname_enabled && l == taskbar->area.children)
|
for (GList *l = taskbar->area.children; l; l = l->next) {
|
||||||
|
Area *child = (Area *)l->data;
|
||||||
|
if (!child->on_screen)
|
||||||
|
continue;
|
||||||
|
if (taskbarname_enabled && l == taskbar->area.children)
|
||||||
|
continue;
|
||||||
|
if (panel_horizontal)
|
||||||
|
taskbar->area.width += task_size;
|
||||||
|
else
|
||||||
|
taskbar->area.height += task_size;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// No tasks => expand the first visible taskbar
|
||||||
|
for (int i = 0; i < panel->num_desktops; i++) {
|
||||||
|
Taskbar *taskbar = &panel->taskbar[i];
|
||||||
|
if (!taskbar->area.on_screen)
|
||||||
continue;
|
continue;
|
||||||
if (panel_horizontal)
|
if (panel_horizontal)
|
||||||
taskbar->area.width += task_size;
|
taskbar->area.width += total_size;
|
||||||
else
|
else
|
||||||
taskbar->area.height += task_size;
|
taskbar->area.height += total_size;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for (int i = 0; i < panel->num_desktops; i++) {
|
for (int i = 0; i < panel->num_desktops; i++) {
|
||||||
|
|
Loading…
Reference in a new issue