#include "font.hh"
#include "gccache.hh"
#include "image.hh"
-#include "screen.hh"
-#include "util.hh"
+#include "bbscreen.hh"
#include "bbwindow.hh"
#include "workspace.hh"
+#include "otk/util.hh"
+#include "otk/style.hh"
+
using std::string;
using std::abs;
flags.skip_pager = flags.fullscreen = False;
flags.maximized = 0;
- blackbox_attrib.workspace = window_number = BSENTINEL;
+ blackbox_attrib.workspace = window_number = otk::BSENTINEL;
blackbox_attrib.flags = blackbox_attrib.attrib = blackbox_attrib.stack = 0l;
blackbox_attrib.decoration = DecorNormal;
XUngrabServer(otk::OBDisplay::display);
#ifdef SHAPE
- if (blackbox->hasShapeExtensions() && flags.shaped)
+ if (otk::OBDisplay::shape() && flags.shaped)
configureShape();
#endif // SHAPE
XMapSubwindows(otk::OBDisplay::display, frame.plate);
#ifdef SHAPE
- if (blackbox->hasShapeExtensions()) {
+ if (otk::OBDisplay::shape()) {
XShapeSelectInput(otk::OBDisplay::display, client.window,
ShapeNotifyMask);
void BlackboxWindow::updateStrut(void) {
unsigned long num = 4;
unsigned long *data;
- if (! xatom->getValue(client.window, OBAtom::net_wm_strut, OBAtom::cardinal,
- num, &data))
+ if (! xatom->get(client.window, otk::OBProperty::net_wm_strut,
+ otk::OBProperty::Atom_Cardinal,
+ &num, &data))
return;
if (num == 4) {
unsigned long *val;
unsigned long num = (unsigned) -1;
- if (xatom->getValue(client.window, OBAtom::net_wm_window_type, OBAtom::atom,
- num, &val)) {
+ if (xatom->get(client.window, otk::OBProperty::net_wm_window_type,
+ otk::OBProperty::Atom_Atom,
+ &num, &val)) {
for (unsigned long i = 0; i < num; ++i) {
- if (val[i] == xatom->getAtom(OBAtom::net_wm_window_type_desktop))
+ if (val[i] == xatom->atom(otk::OBProperty::net_wm_window_type_desktop))
window_type = Type_Desktop;
- else if (val[i] == xatom->getAtom(OBAtom::net_wm_window_type_dock))
+ else if (val[i] == xatom->atom(otk::OBProperty::net_wm_window_type_dock))
window_type = Type_Dock;
- else if (val[i] == xatom->getAtom(OBAtom::net_wm_window_type_toolbar))
+ else if (val[i] == xatom->atom(otk::OBProperty::net_wm_window_type_toolbar))
window_type = Type_Toolbar;
- else if (val[i] == xatom->getAtom(OBAtom::net_wm_window_type_menu))
+ else if (val[i] == xatom->atom(otk::OBProperty::net_wm_window_type_menu))
window_type = Type_Menu;
- else if (val[i] == xatom->getAtom(OBAtom::net_wm_window_type_utility))
+ else if (val[i] == xatom->atom(otk::OBProperty::net_wm_window_type_utility))
window_type = Type_Utility;
- else if (val[i] == xatom->getAtom(OBAtom::net_wm_window_type_splash))
+ else if (val[i] == xatom->atom(otk::OBProperty::net_wm_window_type_splash))
window_type = Type_Splash;
- else if (val[i] == xatom->getAtom(OBAtom::net_wm_window_type_dialog))
+ else if (val[i] == xatom->atom(otk::OBProperty::net_wm_window_type_dialog))
window_type = Type_Dialog;
- else if (val[i] == xatom->getAtom(OBAtom::net_wm_window_type_normal))
+ else if (val[i] == xatom->atom(otk::OBProperty::net_wm_window_type_normal))
window_type = Type_Normal;
else if (val[i] ==
- xatom->getAtom(OBAtom::kde_net_wm_window_type_override))
+ xatom->atom(otk::OBProperty::kde_net_wm_window_type_override))
mwm_decorations = 0; // prevent this window from getting any decor
}
delete val;
void BlackboxWindow::getWMName(void) {
- if (xatom->getValue(client.window, OBAtom::net_wm_name,
- OBAtom::utf8, client.title) &&
+ if (xatom->get(client.window, otk::OBProperty::net_wm_name,
+ otk::OBProperty::utf8, &client.title) &&
!client.title.empty()) {
- xatom->eraseValue(client.window, OBAtom::net_wm_visible_name);
+ xatom->erase(client.window, otk::OBProperty::net_wm_visible_name);
return;
}
//fall through to using WM_NAME
- if (xatom->getValue(client.window, OBAtom::wm_name, OBAtom::ansi, client.title)
+ if (xatom->get(client.window, otk::OBProperty::wm_name,
+ otk::OBProperty::ascii, &client.title)
&& !client.title.empty()) {
- xatom->eraseValue(client.window, OBAtom::net_wm_visible_name);
+ xatom->erase(client.window, otk::OBProperty::net_wm_visible_name);
return;
}
// fall back to an internal default
client.title = "Unnamed";
- xatom->setValue(client.window, OBAtom::net_wm_visible_name, OBAtom::utf8,
- client.title);
+ xatom->set(client.window, otk::OBProperty::net_wm_visible_name,
+ otk::OBProperty::utf8, client.title);
#ifdef DEBUG_WITH_ID
// the 16 is the 8 chars of the debug text plus the number
void BlackboxWindow::getWMIconName(void) {
- if (xatom->getValue(client.window, OBAtom::net_wm_icon_name,
- OBAtom::utf8, client.icon_title) &&
+ if (xatom->get(client.window, otk::OBProperty::net_wm_icon_name,
+ otk::OBProperty::utf8, &client.icon_title) &&
!client.icon_title.empty()) {
- xatom->eraseValue(client.window, OBAtom::net_wm_visible_icon_name);
+ xatom->erase(client.window, otk::OBProperty::net_wm_visible_icon_name);
return;
}
//fall through to using WM_ICON_NAME
- if (xatom->getValue(client.window, OBAtom::wm_icon_name, OBAtom::ansi,
- client.icon_title) &&
+ if (xatom->get(client.window, otk::OBProperty::wm_icon_name,
+ otk::OBProperty::ascii,
+ &client.icon_title) &&
!client.icon_title.empty()) {
- xatom->eraseValue(client.window, OBAtom::net_wm_visible_icon_name);
+ xatom->erase(client.window, otk::OBProperty::net_wm_visible_icon_name);
return;
}
// fall back to using the main name
client.icon_title = client.title;
- xatom->setValue(client.window, OBAtom::net_wm_visible_icon_name, OBAtom::utf8,
- client.icon_title);
+ xatom->set(client.window, otk::OBProperty::net_wm_visible_icon_name,
+ otk::OBProperty::utf8,
+ client.icon_title);
}
if (XGetWMProtocols(otk::OBDisplay::display, client.window,
&proto, &num_return)) {
for (int i = 0; i < num_return; ++i) {
- if (proto[i] == xatom->getAtom(OBAtom::wm_delete_window)) {
+ if (proto[i] == xatom->atom(otk::OBProperty::wm_delete_window)) {
decorations |= Decor_Close;
functions |= Func_Close;
- } else if (proto[i] == xatom->getAtom(OBAtom::wm_take_focus))
+ } else if (proto[i] == xatom->atom(otk::OBProperty::wm_take_focus))
flags.send_focus_message = True;
}
void BlackboxWindow::getNetWMHints(void) {
unsigned long workspace;
- if (xatom->getValue(client.window, OBAtom::net_wm_desktop, OBAtom::cardinal,
- workspace)) {
+ if (xatom->get(client.window, otk::OBProperty::net_wm_desktop,
+ otk::OBProperty::Atom_Cardinal,
+ &workspace)) {
if (workspace == 0xffffffff)
flags.stuck = True;
else
unsigned long *state;
unsigned long num = (unsigned) -1;
- if (xatom->getValue(client.window, OBAtom::net_wm_state, OBAtom::atom,
- num, &state)) {
+ if (xatom->get(client.window, otk::OBProperty::net_wm_state,
+ otk::OBProperty::Atom_Atom,
+ &num, &state)) {
bool vert = False,
horz = False;
for (unsigned long i = 0; i < num; ++i) {
- if (state[i] == xatom->getAtom(OBAtom::net_wm_state_modal))
+ if (state[i] == xatom->atom(otk::OBProperty::net_wm_state_modal))
flags.modal = True;
- else if (state[i] == xatom->getAtom(OBAtom::net_wm_state_shaded))
+ else if (state[i] == xatom->atom(otk::OBProperty::net_wm_state_shaded))
flags.shaded = True;
- else if (state[i] == xatom->getAtom(OBAtom::net_wm_state_skip_taskbar))
+ else if (state[i] == xatom->atom(otk::OBProperty::net_wm_state_skip_taskbar))
flags.skip_taskbar = True;
- else if (state[i] == xatom->getAtom(OBAtom::net_wm_state_skip_pager))
+ else if (state[i] == xatom->atom(otk::OBProperty::net_wm_state_skip_pager))
flags.skip_pager = True;
- else if (state[i] == xatom->getAtom(OBAtom::net_wm_state_fullscreen))
+ else if (state[i] == xatom->atom(otk::OBProperty::net_wm_state_fullscreen))
flags.fullscreen = True;
- else if (state[i] == xatom->getAtom(OBAtom::net_wm_state_hidden))
+ else if (state[i] == xatom->atom(otk::OBProperty::net_wm_state_hidden))
setState(IconicState);
- else if (state[i] == xatom->getAtom(OBAtom::net_wm_state_maximized_vert))
+ else if (state[i] == xatom->atom(otk::OBProperty::net_wm_state_maximized_vert))
vert = True;
- else if (state[i] == xatom->getAtom(OBAtom::net_wm_state_maximized_horz))
+ else if (state[i] == xatom->atom(otk::OBProperty::net_wm_state_maximized_horz))
horz = True;
}
if (vert && horz)
MwmHints *mwm_hint;
num = PropMwmHintsElements;
- if (! xatom->getValue(client.window, OBAtom::motif_wm_hints,
- OBAtom::motif_wm_hints, num,
- (unsigned long **)&mwm_hint))
+ if (! xatom->get(client.window, otk::OBProperty::motif_wm_hints,
+ otk::OBProperty::motif_wm_hints, &num,
+ (unsigned long **)&mwm_hint))
return;
if (num < PropMwmHintsElements) {
delete [] mwm_hint;
BlackboxHints *blackbox_hint;
num = PropBlackboxHintsElements;
- if (! xatom->getValue(client.window, OBAtom::blackbox_hints,
- OBAtom::blackbox_hints, num,
- (unsigned long **)&blackbox_hint))
+ if (! xatom->get(client.window, otk::OBProperty::blackbox_hints,
+ otk::OBProperty::blackbox_hints, &num,
+ (unsigned long **)&blackbox_hint))
return False;
if (num < PropBlackboxHintsElements) {
delete [] blackbox_hint;
* move.
*/
void BlackboxWindow::configure(int dx, int dy,
- unsigned int dw, unsigned int dh) {
+ int dw, int dh) {
bool send_event = ((frame.rect.x() != dx || frame.rect.y() != dy) &&
! flags.moving);
frame.rect.bottom() - frame.margin.bottom);
#ifdef SHAPE
- if (blackbox->hasShapeExtensions() && flags.shaped) {
+ if (otk::OBDisplay::shape() && flags.shaped) {
configureShape();
}
#endif // SHAPE
if (flags.send_focus_message) {
XEvent ce;
ce.xclient.type = ClientMessage;
- ce.xclient.message_type = xatom->getAtom(OBAtom::wm_protocols);
+ ce.xclient.message_type = xatom->atom(otk::OBProperty::wm_protocols);
ce.xclient.display = otk::OBDisplay::display;
ce.xclient.window = client.window;
ce.xclient.format = 32;
- ce.xclient.data.l[0] = xatom->getAtom(OBAtom::wm_take_focus);
+ ce.xclient.data.l[0] = xatom->atom(otk::OBProperty::wm_take_focus);
ce.xclient.data.l[1] = blackbox->getLastTime();
ce.xclient.data.l[2] = 0l;
ce.xclient.data.l[3] = 0l;
void BlackboxWindow::deiconify(bool reassoc, bool raise) {
if (flags.iconic || reassoc)
- screen->reassociateWindow(this, BSENTINEL, False);
+ screen->reassociateWindow(this, otk::BSENTINEL, False);
else if (blackbox_attrib.workspace != screen->getCurrentWorkspaceID())
return;
XEvent ce;
ce.xclient.type = ClientMessage;
- ce.xclient.message_type = xatom->getAtom(OBAtom::wm_protocols);
+ ce.xclient.message_type = xatom->atom(otk::OBProperty::wm_protocols);
ce.xclient.display = otk::OBDisplay::display;
ce.xclient.window = client.window;
ce.xclient.format = 32;
- ce.xclient.data.l[0] = xatom->getAtom(OBAtom::wm_delete_window);
+ ce.xclient.data.l[0] = xatom->atom(otk::OBProperty::wm_delete_window);
ce.xclient.data.l[1] = CurrentTime;
ce.xclient.data.l[2] = 0l;
ce.xclient.data.l[3] = 0l;
void BlackboxWindow::setWorkspace(unsigned int n) {
blackbox_attrib.flags |= AttribWorkspace;
blackbox_attrib.workspace = n;
- if (n == BSENTINEL) { // iconified window
+ if (n == otk::BSENTINEL) { // iconified window
/*
we set the workspace to 'all workspaces' so that taskbars will show the
window. otherwise, it made uniconifying a window imposible without the
*/
n = 0xffffffff;
}
- xatom->setValue(client.window, OBAtom::net_wm_desktop, OBAtom::cardinal, n);
+ xatom->set(client.window, otk::OBProperty::net_wm_desktop,
+ otk::OBProperty::Atom_Cardinal, n);
}
screen->getWorkspace(i)->removeWindow(this, True);
if (! flags.iconic)
- screen->reassociateWindow(this, BSENTINEL, True);
+ screen->reassociateWindow(this, otk::BSENTINEL, True);
// temporary fix since sticky windows suck. set the hint to what we
// actually hold in our data.
- xatom->setValue(client.window, OBAtom::net_wm_desktop, OBAtom::cardinal,
- blackbox_attrib.workspace);
+ xatom->set(client.window, otk::OBProperty::net_wm_desktop,
+ otk::OBProperty::Atom_Cardinal,
+ blackbox_attrib.workspace);
setState(current_state);
} else {
// temporary fix since sticky windows suck. set the hint to a different
// value than that contained in the class' data.
- xatom->setValue(client.window, OBAtom::net_wm_desktop, OBAtom::cardinal,
- 0xffffffff);
+ xatom->set(client.window, otk::OBProperty::net_wm_desktop,
+ otk::OBProperty::Atom_Cardinal,
+ 0xffffffff);
for (unsigned int i = 0; i < screen->getNumberOfWorkspaces(); ++i)
if (i != blackbox_attrib.workspace)
Atom actions[7];
int num = 0;
- actions[num++] = xatom->getAtom(OBAtom::net_wm_action_shade);
- actions[num++] = xatom->getAtom(OBAtom::net_wm_action_change_desktop);
- actions[num++] = xatom->getAtom(OBAtom::net_wm_action_close);
+ actions[num++] = xatom->atom(otk::OBProperty::net_wm_action_shade);
+ actions[num++] = xatom->atom(otk::OBProperty::net_wm_action_change_desktop);
+ actions[num++] = xatom->atom(otk::OBProperty::net_wm_action_close);
if (functions & Func_Move)
- actions[num++] = xatom->getAtom(OBAtom::net_wm_action_move);
+ actions[num++] = xatom->atom(otk::OBProperty::net_wm_action_move);
if (functions & Func_Resize)
- actions[num++] = xatom->getAtom(OBAtom::net_wm_action_resize);
+ actions[num++] = xatom->atom(otk::OBProperty::net_wm_action_resize);
if (functions & Func_Maximize) {
- actions[num++] = xatom->getAtom(OBAtom::net_wm_action_maximize_horz);
- actions[num++] = xatom->getAtom(OBAtom::net_wm_action_maximize_vert);
+ actions[num++] = xatom->atom(otk::OBProperty::net_wm_action_maximize_horz);
+ actions[num++] = xatom->atom(otk::OBProperty::net_wm_action_maximize_vert);
}
- xatom->setValue(client.window, OBAtom::net_wm_allowed_actions, OBAtom::atom,
- actions, num);
+ xatom->set(client.window, otk::OBProperty::net_wm_allowed_actions,
+ otk::OBProperty::Atom_Atom,
+ actions, num);
}
unsigned long state[2];
state[0] = current_state;
state[1] = None;
- xatom->setValue(client.window, OBAtom::wm_state, OBAtom::wm_state, state, 2);
+ xatom->set(client.window, otk::OBProperty::wm_state, otk::OBProperty::wm_state, state, 2);
- xatom->setValue(client.window, OBAtom::blackbox_attributes,
- OBAtom::blackbox_attributes, (unsigned long *)&blackbox_attrib,
+ xatom->set(client.window, otk::OBProperty::blackbox_attributes,
+ otk::OBProperty::blackbox_attributes, (unsigned long *)&blackbox_attrib,
PropBlackboxAttributesElements);
Atom netstate[8];
int num = 0;
if (flags.modal)
- netstate[num++] = xatom->getAtom(OBAtom::net_wm_state_modal);
+ netstate[num++] = xatom->atom(otk::OBProperty::net_wm_state_modal);
if (flags.shaded)
- netstate[num++] = xatom->getAtom(OBAtom::net_wm_state_shaded);
+ netstate[num++] = xatom->atom(otk::OBProperty::net_wm_state_shaded);
if (flags.iconic)
- netstate[num++] = xatom->getAtom(OBAtom::net_wm_state_hidden);
+ netstate[num++] = xatom->atom(otk::OBProperty::net_wm_state_hidden);
if (flags.skip_taskbar)
- netstate[num++] = xatom->getAtom(OBAtom::net_wm_state_skip_taskbar);
+ netstate[num++] = xatom->atom(otk::OBProperty::net_wm_state_skip_taskbar);
if (flags.skip_pager)
- netstate[num++] = xatom->getAtom(OBAtom::net_wm_state_skip_pager);
+ netstate[num++] = xatom->atom(otk::OBProperty::net_wm_state_skip_pager);
if (flags.fullscreen)
- netstate[num++] = xatom->getAtom(OBAtom::net_wm_state_fullscreen);
+ netstate[num++] = xatom->atom(otk::OBProperty::net_wm_state_fullscreen);
if (flags.maximized == 1 || flags.maximized == 2)
- netstate[num++] = xatom->getAtom(OBAtom::net_wm_state_maximized_vert);
+ netstate[num++] = xatom->atom(otk::OBProperty::net_wm_state_maximized_vert);
if (flags.maximized == 1 || flags.maximized == 3)
- netstate[num++] = xatom->getAtom(OBAtom::net_wm_state_maximized_horz);
- xatom->setValue(client.window, OBAtom::net_wm_state, OBAtom::atom,
- netstate, num);
+ netstate[num++] = xatom->atom(otk::OBProperty::net_wm_state_maximized_horz);
+ xatom->set(client.window, otk::OBProperty::net_wm_state,
+ otk::OBProperty::Atom_Atom,
+ netstate, num);
}
bool BlackboxWindow::getState(void) {
- bool ret = xatom->getValue(client.window, OBAtom::wm_state, OBAtom::wm_state,
- current_state);
+ bool ret = xatom->get(client.window, otk::OBProperty::wm_state,
+ otk::OBProperty::wm_state, ¤t_state);
if (! ret) current_state = 0;
return ret;
}
void BlackboxWindow::restoreAttributes(void) {
unsigned long num = PropBlackboxAttributesElements;
BlackboxAttributes *net;
- if (! xatom->getValue(client.window, OBAtom::blackbox_attributes,
- OBAtom::blackbox_attributes, num,
+ if (! xatom->get(client.window, otk::OBProperty::blackbox_attributes,
+ otk::OBProperty::blackbox_attributes, &num,
(unsigned long **)&net))
return;
if (num < PropBlackboxAttributesElements) {
}
XClearWindow(otk::OBDisplay::display, frame.label);
- WindowStyle *style = screen->getWindowStyle();
+ otk::Style *style = screen->getWindowStyle();
int pos = frame.bevel_w * 2;
style->doJustify(client.title.c_str(), pos, frame.label_w, frame.bevel_w * 4);
otk::BPen pen((flags.focused) ? screen->getWindowStyle()->b_pic_focus :
screen->getWindowStyle()->b_pic_unfocus);
- PixmapMask pm = screen->getWindowStyle()->icon_button;
+ otk::Style::PixmapMask pm = screen->getWindowStyle()->icon_button;
if (screen->getWindowStyle()->icon_button.mask != None) {
XSetClipMask(otk::OBDisplay::display, pen.gc(), pm.mask);
otk::BPen pen((flags.focused) ? screen->getWindowStyle()->b_pic_focus :
screen->getWindowStyle()->b_pic_unfocus);
- PixmapMask pm = screen->getWindowStyle()->max_button;
+ otk::Style::PixmapMask pm = screen->getWindowStyle()->max_button;
if (pm.mask != None) {
XSetClipMask(otk::OBDisplay::display, pen.gc(), pm.mask);
otk::BPen pen((flags.focused) ? screen->getWindowStyle()->b_pic_focus :
screen->getWindowStyle()->b_pic_unfocus);
- PixmapMask pm = screen->getWindowStyle()->close_button;
+ otk::Style::PixmapMask pm = screen->getWindowStyle()->close_button;
if (pm.mask != None) {
XSetClipMask(otk::OBDisplay::display, pen.gc(), pm.mask);
otk::BPen pen((flags.focused) ? screen->getWindowStyle()->b_pic_focus :
screen->getWindowStyle()->b_pic_unfocus);
- PixmapMask pm = screen->getWindowStyle()->stick_button;
+ otk::Style::PixmapMask pm = screen->getWindowStyle()->stick_button;
if (pm.mask != None) {
XSetClipMask(otk::OBDisplay::display, pen.gc(), pm.mask);
if (flags.iconic) screen->propagateWindowName(this);
break;
- case OBAtom::net_wm_name:
+ case otk::OBProperty::net_wm_name:
case XA_WM_NAME:
getWMName();
}
default:
- if (pe->atom == xatom->getAtom(OBAtom::wm_protocols)) {
+ if (pe->atom == xatom->atom(otk::OBProperty::wm_protocols)) {
getWMProtocols();
if ((decorations & Decor_Close) && (! frame.close_button)) {
XMapSubwindows(otk::OBDisplay::display, frame.title);
}
}
- } else if (pe->atom == xatom->getAtom(OBAtom::net_wm_strut)) {
+ } else if (pe->atom == xatom->atom(otk::OBProperty::net_wm_strut)) {
updateStrut();
}
#ifdef SHAPE
void BlackboxWindow::shapeEvent(XShapeEvent *e) {
- if (blackbox->hasShapeExtensions()) {
+ if (otk::OBDisplay::shape()) {
if (! e->shaped && flags.shaped) {
clearShape();
flags.shaped = False;
// erase the netwm stuff that we read when a window maps, so that it
// doesn't persist between mappings.
// (these are the ones read in getNetWMFlags().)
- xatom->eraseValue(client.window, OBAtom::net_wm_desktop);
- xatom->eraseValue(client.window, OBAtom::net_wm_state);
+ xatom->erase(client.window, otk::OBProperty::net_wm_desktop);
+ xatom->erase(client.window, otk::OBProperty::net_wm_state);
restoreGravity(client.rect);
* window's dimensions.
*/
void BlackboxWindow::upsize(void) {
- frame.bevel_w = screen->getBevelWidth();
+ frame.bevel_w = screen->getWindowStyle()->getBevelWidth();
if (decorations & Decor_Border) {
- frame.border_w = screen->getBorderWidth();
+ frame.border_w = screen->getWindowStyle()->getBorderWidth();
if (! isTransient())
- frame.mwm_border_w = screen->getFrameWidth();
+ frame.mwm_border_w = screen->getWindowStyle()->getFrameWidth();
else
frame.mwm_border_w = 0;
} else {
if (decorations & Decor_Titlebar) {
// the height of the titlebar is based upon the height of the font being
// used to display the window's title
- WindowStyle *style = screen->getWindowStyle();
+ otk::Style *style = screen->getWindowStyle();
frame.title_h = style->font->height() + (frame.bevel_w * 2) + 2;
frame.label_h = frame.title_h - (frame.bevel_w * 2);
if (decorations & Decor_Handle) {
frame.grip_w = frame.button_w * 2;
- frame.handle_h = screen->getHandleWidth();
+ frame.handle_h = screen->getWindowStyle()->getHandleWidth();
// set the bottom frame margin
frame.margin.bottom = frame.border_w + frame.handle_h +
}
-void WindowStyle::doJustify(const std::string &text, int &start_pos,
- unsigned int max_length,
- unsigned int modifier) const {
- size_t text_len = text.size();
- unsigned int length;
-
- do {
- length = font->measureString(string(text, 0, text_len)) + modifier;
- } while (length > max_length && text_len-- > 0);
-
- switch (justify) {
- case RightJustify:
- start_pos += max_length - length;
- break;
-
- case CenterJustify:
- start_pos += (max_length - length) / 2;
- break;
-
- case LeftJustify:
- default:
- break;
- }
-}
-
-
BWindowGroup::BWindowGroup(Blackbox *b, Window _group)
: blackbox(b), group(_group) {
XWindowAttributes wattrib;