+ systray.area.posx = panel->area.width - panel->area.pix.border.width - panel->area.paddingxlr - systray.area.width;
+ if (panel->clock.area.on_screen)
+ systray.area.posx -= (panel->clock.area.width + panel->area.paddingx);
+#ifdef ENABLE_BATTERY
+ if (panel->battery.area.on_screen)
+ systray.area.posx -= (panel->battery.area.width + panel->area.paddingx);
+#endif
+ }
+ else {
+ if (!count) systray.area.height = 0;
+ else {
+ int icons_per_row = (sysbar->area.width - 2*sysbar->area.pix.border.width - 2*sysbar->area.paddingy + sysbar->area.paddingx) / (icon_size+sysbar->area.paddingx);
+ int column_count = count / icons_per_row+ (count%icons_per_row != 0);
+ systray.area.height = (2 * systray.area.pix.border.width) + (2 * systray.area.paddingxlr) + (icon_size * column_count) + ((column_count-1) * systray.area.paddingx);
+ }
+
+ systray.area.posy = panel->area.pix.border.width + panel->area.paddingxlr;
+ if (panel->clock.area.on_screen)
+ systray.area.posy += (panel->clock.area.height + panel->area.paddingx);
+#ifdef ENABLE_BATTERY
+ if (panel->battery.area.on_screen)
+ systray.area.posy += (panel->battery.area.height + panel->area.paddingx);
+#endif
+ }
+
+ int max_line_pos;
+ if (panel_horizontal) {
+ max_line_pos = sysbar->area.posy+sysbar->area.height - sysbar->area.pix.border.width - sysbar->area.paddingy - icon_size;
+ posy = panel->area.pix.border.width + panel->area.paddingy + systray.area.pix.border.width + systray.area.paddingy;
+ posx = systray.area.posx + systray.area.pix.border.width + systray.area.paddingxlr;
+ }
+ else {
+ max_line_pos = sysbar->area.posx+sysbar->area.width - sysbar->area.pix.border.width - sysbar->area.paddingy - icon_size;
+ posx = panel->area.pix.border.width + panel->area.paddingy + systray.area.pix.border.width + systray.area.paddingy;
+ posy = systray.area.posy + systray.area.pix.border.width + systray.area.paddingxlr;
+ }
+
+ for (l = systray.list_icons; l ; l = l->next) {
+ traywin = (TrayWindow*)l->data;
+ if (traywin->hide) continue;
+
+ traywin->y = posy;
+ traywin->x = posx;
+ traywin->width = icon_size;
+ traywin->height = icon_size;
+ if (panel_horizontal) {
+ if (posy + icon_size + sysbar->area.paddingxlr < max_line_pos)
+ posy += icon_size + sysbar->area.paddingx;
+ else {
+ posx += (icon_size + systray.area.paddingx);
+ posy = panel->area.pix.border.width + panel->area.paddingy + systray.area.pix.border.width + systray.area.paddingy;
+ }
+ }
+ else {
+ if (posx + icon_size + sysbar->area.paddingxlr < max_line_pos)
+ posx += icon_size + systray.area.paddingx;
+ else {
+ posy += (icon_size + systray.area.paddingx);
+ posx = panel->area.pix.border.width + panel->area.paddingy + systray.area.pix.border.width + systray.area.paddingy;
+ }
+ }
+
+ // position and size the icon window
+ XMoveResizeWindow(server.dsp, traywin->id, traywin->x, traywin->y, icon_size, icon_size);
+ XResizeWindow(server.dsp, traywin->tray_id, icon_size, icon_size);