- openbox->saveWindowSearch(frame.maximize_button, this);
- }
-}
-
-
-void OpenboxWindow::positionButtons(Bool redecorate_label) {
- const char *format = openbox->getTitleBarLayout();
- const unsigned int bw = frame.bevel_w + 1;
- const unsigned int by = frame.bevel_w + 1;
- unsigned int bx = frame.bevel_w + 1;
- unsigned int bcount = strlen(format) - 1;
-
- if (!decorations.close)
- bcount--;
- if (!decorations.maximize)
- bcount--;
- if (!decorations.iconify)
- bcount--;
- frame.label_w = frame.width - bx * 2 - (frame.button_w + bw) * bcount;
-
- bool hasclose, hasiconify, hasmaximize;
- hasclose = hasiconify = hasmaximize = false;
-
- for (int i = 0; format[i] != '\0' && i < 4; i++) {
- switch(format[i]) {
- case 'C':
- if (decorations.close && frame.close_button != None) {
- XMoveResizeWindow(display, frame.close_button, bx, by,
- frame.button_w, frame.button_h);
- XMapWindow(display, frame.close_button);
- XClearWindow(display, frame.close_button);
- bx += frame.button_w + bw;
- hasclose = true;
- } else if (frame.close_button)
- XUnmapWindow(display, frame.close_button);
- break;
- case 'I':
- if (decorations.iconify && frame.iconify_button != None) {
- XMoveResizeWindow(display, frame.iconify_button, bx, by,
- frame.button_w, frame.button_h);
- XMapWindow(display, frame.iconify_button);
- XClearWindow(display, frame.iconify_button);
- bx += frame.button_w + bw;
- hasiconify = true;
- } else if (frame.close_button)
- XUnmapWindow(display, frame.close_button);
- break;
- case 'M':
- if (decorations.maximize && frame.maximize_button != None) {
- XMoveResizeWindow(display, frame.maximize_button, bx, by,
- frame.button_w, frame.button_h);
- XMapWindow(display, frame.maximize_button);
- XClearWindow(display, frame.maximize_button);
- bx += frame.button_w + bw;
- hasmaximize = true;
- } else if (frame.close_button)
- XUnmapWindow(display, frame.close_button);
- break;
- case 'L':
- XMoveResizeWindow(display, frame.label, bx, by - 1,
- frame.label_w, frame.label_h);
- bx += frame.label_w + bw;
- break;
- }