--- src/workspace.c.orig 2004-11-11 19:02:44.000000000 +0000 +++ src/workspace.c 2004-11-13 00:33:24.000000000 +0000 @@ -280,6 +280,11 @@ char *name = scr->workspaces[workspace]->name; int len = strlen(name); int x, y; +#ifdef XINERAMA + int head; + WMRect rect; + int xx, yy; +#endif if (wPreferences.workspace_name_display_position == WD_NONE || scr->workspace_count < 2) { @@ -306,35 +311,61 @@ w = WMWidthOfString(scr->workspace_name_font, name, len); h = WMFontHeight(scr->workspace_name_font); +#ifdef XINERAMA + head = wGetHeadForPointerLocation(scr); + rect = wGetRectForHead(scr, head); + if (scr->xine_info.count) { + xx = rect.pos.x + (scr->xine_info.screens[head].size.width - (w+4))/2; + yy = rect.pos.y + (scr->xine_info.screens[head].size.height - (h+4))/2; + } + else { + xx = (scr->scr_width - (w+4))/2; + yy = (scr->scr_height - (h+4))/2; + } +#endif + switch (wPreferences.workspace_name_display_position) { case WD_TOP: +#ifdef XINERAMA + px = xx; +#else px = (scr->scr_width - (w+4))/2; - py = 0; +#endif + py = 32; break; case WD_BOTTOM: +#ifdef XINERAMA + px = xx; +#else px = (scr->scr_width - (w+4))/2; - py = scr->scr_height - (h+4); +#endif + py = scr->scr_height - (h+36); break; case WD_TOPLEFT: - px = 0; - py = 0; + px = 32; + py = 32; break; case WD_TOPRIGHT: - px = scr->scr_width - (w+4); - py = 0; + px = scr->scr_width - (w+36); + py = 32; break; case WD_BOTTOMLEFT: - px = 0; - py = scr->scr_height - (h+4); + px = 32; + py = scr->scr_height - (h+36); break; case WD_BOTTOMRIGHT: - px = scr->scr_width - (w+4); - py = scr->scr_height - (h+4); + px = scr->scr_width - (w+36); + py = scr->scr_height - (h+36); break; case WD_CENTER: default: - px = (scr->scr_width - (w+4))/2; - py = (scr->scr_height - (h+4))/2; +#ifdef XINERAMA + px = xx; + py = yy; +#else + px = (scr->scr_width - (w+36))/2; + py = (scr->scr_height - (h+36))/2; +#endif break; } XResizeWindow(dpy, scr->workspace_name, w+4, h+4);