- int i;
- unsigned int w = 0;
- frame.workspace_label_w = 0;
-
- for (i = 0; i < screen.getWorkspaceCount(); i++) {
- if (i18n.multibyte()) {
- XRectangle ink, logical;
- XmbTextExtents(screen.getToolbarStyle()->fontset,
- screen.getWorkspace(i)->getName(),
- strlen(screen.getWorkspace(i)->getName()),
- &ink, &logical);
- w = logical.width;
- } else {
- w = XTextWidth(screen.getToolbarStyle()->font,
- screen.getWorkspace(i)->getName(),
- strlen(screen.getWorkspace(i)->getName()));
- }
- w += (frame.bevel_w * 4);
-
- if (w > frame.workspace_label_w) frame.workspace_label_w = w;
- }
-
- if (frame.workspace_label_w < frame.clock_w)
- frame.workspace_label_w = frame.clock_w;
- else if (frame.workspace_label_w > frame.clock_w)
- frame.clock_w = frame.workspace_label_w;
-
- frame.window_label_w =
- (frame.width - (frame.clock_w + (frame.button_w * 4) +
- frame.workspace_label_w + (frame.bevel_w * 8) + 6));
-
- if (m_hidden) {
- XMoveResizeWindow(display, frame.window, frame.x_hidden, frame.y_hidden,
- frame.width, frame.height);
- } else {
- XMoveResizeWindow(display, frame.window, frame.x, frame.y,
- frame.width, frame.height);
- }
-
- XMoveResizeWindow(display, frame.workspace_label, frame.bevel_w,
- frame.bevel_w, frame.workspace_label_w,
- frame.label_h);
- XMoveResizeWindow(display, frame.psbutton, (frame.bevel_w * 2) +
- frame.workspace_label_w + 1, frame.bevel_w + 1,
- frame.button_w, frame.button_w);
- XMoveResizeWindow(display ,frame.nsbutton, (frame.bevel_w * 3) +
- frame.workspace_label_w + frame.button_w + 2,
- frame.bevel_w + 1, frame.button_w, frame.button_w);
- XMoveResizeWindow(display, frame.window_label, (frame.bevel_w * 4) +
- (frame.button_w * 2) + frame.workspace_label_w + 3,
- frame.bevel_w, frame.window_label_w, frame.label_h);
- XMoveResizeWindow(display, frame.pwbutton, (frame.bevel_w * 5) +
- (frame.button_w * 2) + frame.workspace_label_w +
- frame.window_label_w + 4, frame.bevel_w + 1,
- frame.button_w, frame.button_w);
- XMoveResizeWindow(display, frame.nwbutton, (frame.bevel_w * 6) +
- (frame.button_w * 3) + frame.workspace_label_w +
- frame.window_label_w + 5, frame.bevel_w + 1,
- frame.button_w, frame.button_w);
- XMoveResizeWindow(display, frame.clock, frame.width - frame.clock_w -
- frame.bevel_w, frame.bevel_w, frame.clock_w,
- frame.label_h);
-
- Pixmap tmp = frame.base;
- BTexture *texture = &(screen.getToolbarStyle()->toolbar);
- if (texture->getTexture() == (BImage_Flat | BImage_Solid)) {
- frame.base = None;
- XSetWindowBackground(display, frame.window,
- texture->getColor()->getPixel());
- } else {
- frame.base =
- image_ctrl->renderImage(frame.width, frame.height, texture);
- XSetWindowBackgroundPixmap(display, frame.window, frame.base);
- }
- if (tmp) image_ctrl->removeImage(tmp);
-
- tmp = frame.label;
- texture = &(screen.getToolbarStyle()->window);
- if (texture->getTexture() == (BImage_Flat | BImage_Solid)) {
- frame.label = None;
- XSetWindowBackground(display, frame.window_label,
- texture->getColor()->getPixel());
- } else {
- frame.label =
- image_ctrl->renderImage(frame.window_label_w, frame.label_h, texture);
- XSetWindowBackgroundPixmap(display, frame.window_label, frame.label);
- }
- if (tmp) image_ctrl->removeImage(tmp);
-
- tmp = frame.wlabel;
- texture = &(screen.getToolbarStyle()->label);
- if (texture->getTexture() == (BImage_Flat | BImage_Solid)) {
- frame.wlabel = None;
- XSetWindowBackground(display, frame.workspace_label,
- texture->getColor()->getPixel());
- } else {
- frame.wlabel =
- image_ctrl->renderImage(frame.workspace_label_w, frame.label_h, texture);
- XSetWindowBackgroundPixmap(display, frame.workspace_label, frame.wlabel);
- }
- if (tmp) image_ctrl->removeImage(tmp);
-
- tmp = frame.clk;
- texture = &(screen.getToolbarStyle()->clock);
- if (texture->getTexture() == (BImage_Flat | BImage_Solid)) {
- frame.clk = None;
- XSetWindowBackground(display, frame.clock,
- texture->getColor()->getPixel());
- } else {
- frame.clk =
- image_ctrl->renderImage(frame.clock_w, frame.label_h, texture);
- XSetWindowBackgroundPixmap(display, frame.clock, frame.clk);
- }
- if (tmp) image_ctrl->removeImage(tmp);
-
- tmp = frame.button;
- texture = &(screen.getToolbarStyle()->button);
- if (texture->getTexture() == (BImage_Flat | BImage_Solid)) {
- frame.button = None;
-
- frame.button_pixel = texture->getColor()->getPixel();
- XSetWindowBackground(display, frame.psbutton, frame.button_pixel);
- XSetWindowBackground(display, frame.nsbutton, frame.button_pixel);
- XSetWindowBackground(display, frame.pwbutton, frame.button_pixel);
- XSetWindowBackground(display, frame.nwbutton, frame.button_pixel);
- } else {
- frame.button =
- image_ctrl->renderImage(frame.button_w, frame.button_w, texture);
-
- XSetWindowBackgroundPixmap(display, frame.psbutton, frame.button);
- XSetWindowBackgroundPixmap(display, frame.nsbutton, frame.button);
- XSetWindowBackgroundPixmap(display, frame.pwbutton, frame.button);
- XSetWindowBackgroundPixmap(display, frame.nwbutton, frame.button);
- }
- if (tmp) image_ctrl->removeImage(tmp);
-
- tmp = frame.pbutton;
- texture = &(screen.getToolbarStyle()->pressed);
- if (texture->getTexture() == (BImage_Flat | BImage_Solid)) {
- frame.pbutton = None;
- frame.pbutton_pixel = texture->getColor()->getPixel();
- } else {
- frame.pbutton =
- image_ctrl->renderImage(frame.button_w, frame.button_w, texture);
- }
- if (tmp) image_ctrl->removeImage(tmp);
-
- XSetWindowBorder(display, frame.window,
- screen.getBorderColor()->getPixel());
- XSetWindowBorderWidth(display, frame.window, screen.getBorderWidth());
-
- XClearWindow(display, frame.window);
- XClearWindow(display, frame.workspace_label);
- XClearWindow(display, frame.window_label);
- XClearWindow(display, frame.clock);
- XClearWindow(display, frame.psbutton);
- XClearWindow(display, frame.nsbutton);
- XClearWindow(display, frame.pwbutton);
- XClearWindow(display, frame.nwbutton);
-
- redrawWindowLabel();
- redrawWorkspaceLabel();
- redrawPrevWorkspaceButton();
- redrawNextWorkspaceButton();
- redrawPrevWindowButton();
- redrawNextWindowButton();
- checkClock(True);
-
- toolbarmenu->reconfigure();
-}