using some references instead of pointers where possible in Screen, ScreenInfo, Slit, Toolbar, and Netizen

This commit is contained in:
Dana Jansens 2002-04-14 13:58:17 +00:00
parent 9ea141105e
commit 72af8cea6a
17 changed files with 527 additions and 538 deletions

View file

@ -337,7 +337,7 @@ BaseDisplay::BaseDisplay(char *app_name, char *dpy_name) {
screenInfoList = new LinkedList<ScreenInfo>;
for (int i = 0; i < number_of_screens; i++) {
ScreenInfo *screeninfo = new ScreenInfo(this, i);
ScreenInfo *screeninfo = new ScreenInfo(*this, i);
screenInfoList->insert(screeninfo);
}
@ -574,17 +574,16 @@ void BaseDisplay::ungrabButton(unsigned int button, unsigned int modifiers,
}
ScreenInfo::ScreenInfo(BaseDisplay *d, int num) {
basedisplay = d;
ScreenInfo::ScreenInfo(BaseDisplay &d, int num) : basedisplay(d) {
screen_number = num;
root_window = RootWindow(basedisplay->getXDisplay(), screen_number);
depth = DefaultDepth(basedisplay->getXDisplay(), screen_number);
root_window = RootWindow(basedisplay.getXDisplay(), screen_number);
depth = DefaultDepth(basedisplay.getXDisplay(), screen_number);
width =
WidthOfScreen(ScreenOfDisplay(basedisplay->getXDisplay(), screen_number));
WidthOfScreen(ScreenOfDisplay(basedisplay.getXDisplay(), screen_number));
height =
HeightOfScreen(ScreenOfDisplay(basedisplay->getXDisplay(), screen_number));
HeightOfScreen(ScreenOfDisplay(basedisplay.getXDisplay(), screen_number));
// search for a TrueColor Visual... if we can't find one... we will use the
// default visual for the screen
@ -596,7 +595,7 @@ ScreenInfo::ScreenInfo(BaseDisplay *d, int num) {
visual = (Visual *) 0;
if ((vinfo_return = XGetVisualInfo(basedisplay->getXDisplay(),
if ((vinfo_return = XGetVisualInfo(basedisplay.getXDisplay(),
VisualScreenMask | VisualClassMask,
&vinfo_template, &vinfo_nitems)) &&
vinfo_nitems > 0) {
@ -611,10 +610,10 @@ ScreenInfo::ScreenInfo(BaseDisplay *d, int num) {
}
if (visual) {
colormap = XCreateColormap(basedisplay->getXDisplay(), root_window,
colormap = XCreateColormap(basedisplay.getXDisplay(), root_window,
visual, AllocNone);
} else {
visual = DefaultVisual(basedisplay->getXDisplay(), screen_number);
colormap = DefaultColormap(basedisplay->getXDisplay(), screen_number);
visual = DefaultVisual(basedisplay.getXDisplay(), screen_number);
colormap = DefaultColormap(basedisplay.getXDisplay(), screen_number);
}
}

View file

@ -328,7 +328,7 @@ public:
class ScreenInfo {
private:
BaseDisplay *basedisplay;
BaseDisplay &basedisplay;
Visual *visual;
Window root_window;
Colormap colormap;
@ -338,9 +338,9 @@ private:
public:
ScreenInfo(BaseDisplay *, int);
ScreenInfo(BaseDisplay &, int);
inline BaseDisplay *getBaseDisplay(void) { return basedisplay; }
inline BaseDisplay &getBaseDisplay(void) { return basedisplay; }
inline Visual *getVisual(void) { return visual; }
inline const Window &getRootWindow(void) const { return root_window; }

View file

@ -49,7 +49,7 @@ using namespace std;
static Basemenu *shown = (Basemenu *) 0;
Basemenu::Basemenu(BScreen &scrn) : screen(scrn), openbox(*scrn.getOpenbox()) {
Basemenu::Basemenu(BScreen &scrn) : screen(scrn), openbox(scrn.getOpenbox()) {
image_ctrl = screen.getImageControl();
display = openbox.getXDisplay();
parent = (Basemenu *) 0;

View file

@ -164,13 +164,13 @@ void Configmenu::Focusmenu::itemSelected(int button, int index) {
configmenu->screen.saveSloppyFocus(False);
configmenu->screen.saveAutoRaise(False);
if (! configmenu->screen.getOpenbox()->getFocusedWindow())
XSetInputFocus(configmenu->screen.getOpenbox()->getXDisplay(),
if (! configmenu->screen.getOpenbox().getFocusedWindow())
XSetInputFocus(configmenu->screen.getOpenbox().getXDisplay(),
configmenu->screen.getToolbar()->getWindowID(),
RevertToParent, CurrentTime);
else
XSetInputFocus(configmenu->screen.getOpenbox()->getXDisplay(),
configmenu->screen.getOpenbox()->
XSetInputFocus(configmenu->screen.getOpenbox().getXDisplay(),
configmenu->screen.getOpenbox().
getFocusedWindow()->getClientWindow(),
RevertToParent, CurrentTime);

View file

@ -33,84 +33,82 @@
#include "Netizen.h"
#include "Screen.h"
Netizen::Netizen(BScreen *scr, Window win) {
screen = scr;
basedisplay = screen->getBaseDisplay();
window = win;
Netizen::Netizen(BScreen &scr, Window win) : screen(scr),
basedisplay(scr.getBaseDisplay()), window(win)
{
event.type = ClientMessage;
event.xclient.message_type = basedisplay->getOpenboxStructureMessagesAtom();
event.xclient.display = basedisplay->getXDisplay();
event.xclient.message_type = basedisplay.getOpenboxStructureMessagesAtom();
event.xclient.display = basedisplay.getXDisplay();
event.xclient.window = window;
event.xclient.format = 32;
event.xclient.data.l[0] = basedisplay->getOpenboxNotifyStartupAtom();
event.xclient.data.l[0] = basedisplay.getOpenboxNotifyStartupAtom();
event.xclient.data.l[1] = event.xclient.data.l[2] =
event.xclient.data.l[3] = event.xclient.data.l[4] = 0l;
XSendEvent(basedisplay->getXDisplay(), window, False, NoEventMask, &event);
XSendEvent(basedisplay.getXDisplay(), window, False, NoEventMask, &event);
}
void Netizen::sendWorkspaceCount(void) {
event.xclient.data.l[0] = basedisplay->getOpenboxNotifyWorkspaceCountAtom();
event.xclient.data.l[1] = screen->getWorkspaceCount();
event.xclient.data.l[0] = basedisplay.getOpenboxNotifyWorkspaceCountAtom();
event.xclient.data.l[1] = screen.getWorkspaceCount();
XSendEvent(basedisplay->getXDisplay(), window, False, NoEventMask, &event);
XSendEvent(basedisplay.getXDisplay(), window, False, NoEventMask, &event);
}
void Netizen::sendCurrentWorkspace(void) {
event.xclient.data.l[0] = basedisplay->getOpenboxNotifyCurrentWorkspaceAtom();
event.xclient.data.l[1] = screen->getCurrentWorkspaceID();
event.xclient.data.l[0] = basedisplay.getOpenboxNotifyCurrentWorkspaceAtom();
event.xclient.data.l[1] = screen.getCurrentWorkspaceID();
XSendEvent(basedisplay->getXDisplay(), window, False, NoEventMask, &event);
XSendEvent(basedisplay.getXDisplay(), window, False, NoEventMask, &event);
}
void Netizen::sendWindowFocus(Window w) {
event.xclient.data.l[0] = basedisplay->getOpenboxNotifyWindowFocusAtom();
event.xclient.data.l[0] = basedisplay.getOpenboxNotifyWindowFocusAtom();
event.xclient.data.l[1] = w;
XSendEvent(basedisplay->getXDisplay(), window, False, NoEventMask, &event);
XSendEvent(basedisplay.getXDisplay(), window, False, NoEventMask, &event);
}
void Netizen::sendWindowAdd(Window w, unsigned long p) {
event.xclient.data.l[0] = basedisplay->getOpenboxNotifyWindowAddAtom();
event.xclient.data.l[0] = basedisplay.getOpenboxNotifyWindowAddAtom();
event.xclient.data.l[1] = w;
event.xclient.data.l[2] = p;
XSendEvent(basedisplay->getXDisplay(), window, False, NoEventMask, &event);
XSendEvent(basedisplay.getXDisplay(), window, False, NoEventMask, &event);
event.xclient.data.l[2] = 0l;
}
void Netizen::sendWindowDel(Window w) {
event.xclient.data.l[0] = basedisplay->getOpenboxNotifyWindowDelAtom();
event.xclient.data.l[0] = basedisplay.getOpenboxNotifyWindowDelAtom();
event.xclient.data.l[1] = w;
XSendEvent(basedisplay->getXDisplay(), window, False, NoEventMask, &event);
XSendEvent(basedisplay.getXDisplay(), window, False, NoEventMask, &event);
}
void Netizen::sendWindowRaise(Window w) {
event.xclient.data.l[0] = basedisplay->getOpenboxNotifyWindowRaiseAtom();
event.xclient.data.l[0] = basedisplay.getOpenboxNotifyWindowRaiseAtom();
event.xclient.data.l[1] = w;
XSendEvent(basedisplay->getXDisplay(), window, False, NoEventMask, &event);
XSendEvent(basedisplay.getXDisplay(), window, False, NoEventMask, &event);
}
void Netizen::sendWindowLower(Window w) {
event.xclient.data.l[0] = basedisplay->getOpenboxNotifyWindowLowerAtom();
event.xclient.data.l[0] = basedisplay.getOpenboxNotifyWindowLowerAtom();
event.xclient.data.l[1] = w;
XSendEvent(basedisplay->getXDisplay(), window, False, NoEventMask, &event);
XSendEvent(basedisplay.getXDisplay(), window, False, NoEventMask, &event);
}
void Netizen::sendConfigNotify(XEvent *e) {
XSendEvent(basedisplay->getXDisplay(), window, False,
XSendEvent(basedisplay.getXDisplay(), window, False,
StructureNotifyMask, e);
}

View file

@ -32,15 +32,15 @@ class Netizen;
class Netizen {
private:
BaseDisplay *basedisplay;
BScreen *screen;
BaseDisplay &basedisplay;
BScreen &screen;
Window window;
XEvent event;
protected:
public:
Netizen(BScreen *, Window);
Netizen(BScreen &, Window);
inline const Window &getWindowID(void) const { return window; }

View file

@ -53,7 +53,7 @@
Rootmenu::Rootmenu(BScreen &scrn) : Basemenu(scrn), screen(scrn),
openbox(*scrn.getOpenbox())
openbox(scrn.getOpenbox())
{
}
@ -73,7 +73,7 @@ void Rootmenu::itemSelected(int button, int index) {
#ifndef __EMX__
char displaystring[MAXPATHLEN];
sprintf(displaystring, "DISPLAY=%s",
DisplayString(screen.getBaseDisplay()->getXDisplay()));
DisplayString(screen.getBaseDisplay().getXDisplay()));
sprintf(displaystring + strlen(displaystring) - 1, "%d",
screen.getScreenNumber());

View file

@ -180,16 +180,14 @@ static const char *getFontSize(const char *pattern, int *size) {
}
BScreen::BScreen(Openbox *ob, int scrn) : ScreenInfo(ob, scrn) {
openbox = ob;
BScreen::BScreen(Openbox &ob, int scrn) : ScreenInfo(ob, scrn), openbox(ob) {
event_mask = ColormapChangeMask | EnterWindowMask | PropertyChangeMask |
SubstructureRedirectMask | KeyPressMask | KeyReleaseMask |
ButtonPressMask | ButtonReleaseMask;
XErrorHandler old = XSetErrorHandler((XErrorHandler) anotherWMRunning);
XSelectInput(getBaseDisplay()->getXDisplay(), getRootWindow(), event_mask);
XSync(getBaseDisplay()->getXDisplay(), False);
XSelectInput(getBaseDisplay().getXDisplay(), getRootWindow(), event_mask);
XSync(getBaseDisplay().getXDisplay(), False);
XSetErrorHandler((XErrorHandler) old);
managed = running;
@ -216,14 +214,14 @@ BScreen::BScreen(Openbox *ob, int scrn) : ScreenInfo(ob, scrn) {
#ifdef HAVE_GETPID
pid_t bpid = getpid();
XChangeProperty(getBaseDisplay()->getXDisplay(), getRootWindow(),
openbox->getOpenboxPidAtom(), XA_CARDINAL,
XChangeProperty(getBaseDisplay().getXDisplay(), getRootWindow(),
openbox.getOpenboxPidAtom(), XA_CARDINAL,
sizeof(pid_t) * 8, PropModeReplace,
(unsigned char *) &bpid, 1);
#endif // HAVE_GETPID
XDefineCursor(getBaseDisplay()->getXDisplay(), getRootWindow(),
openbox->getSessionCursor());
XDefineCursor(getBaseDisplay().getXDisplay(), getRootWindow(),
openbox.getSessionCursor());
workspaceNames = new LinkedList<char>;
workspacesList = new LinkedList<Workspace>;
@ -232,12 +230,12 @@ BScreen::BScreen(Openbox *ob, int scrn) : ScreenInfo(ob, scrn) {
iconList = new LinkedList<OpenboxWindow>;
image_control =
new BImageControl(openbox, this, True, openbox->getColorsPerChannel(),
openbox->getCacheLife(), openbox->getCacheMax());
new BImageControl(&openbox, this, True, openbox.getColorsPerChannel(),
openbox.getCacheLife(), openbox.getCacheMax());
image_control->installRootColormap();
root_colormap_installed = True;
openbox->load_rc(this);
openbox.load_rc(this);
image_control->setDither(resource.image_dither);
@ -247,88 +245,88 @@ BScreen::BScreen(Openbox *ob, int scrn) : ScreenInfo(ob, scrn) {
unsigned long gc_value_mask = GCForeground;
if (! i18n->multibyte()) gc_value_mask |= GCFont;
gcv.foreground = WhitePixel(getBaseDisplay()->getXDisplay(),
gcv.foreground = WhitePixel(getBaseDisplay().getXDisplay(),
getScreenNumber())
^ BlackPixel(getBaseDisplay()->getXDisplay(),
^ BlackPixel(getBaseDisplay().getXDisplay(),
getScreenNumber());
gcv.function = GXxor;
gcv.subwindow_mode = IncludeInferiors;
opGC = XCreateGC(getBaseDisplay()->getXDisplay(), getRootWindow(),
opGC = XCreateGC(getBaseDisplay().getXDisplay(), getRootWindow(),
GCForeground | GCFunction | GCSubwindowMode, &gcv);
gcv.foreground = resource.wstyle.l_text_focus.getPixel();
if (resource.wstyle.font)
gcv.font = resource.wstyle.font->fid;
resource.wstyle.l_text_focus_gc =
XCreateGC(getBaseDisplay()->getXDisplay(), getRootWindow(),
XCreateGC(getBaseDisplay().getXDisplay(), getRootWindow(),
gc_value_mask, &gcv);
gcv.foreground = resource.wstyle.l_text_unfocus.getPixel();
if (resource.wstyle.font)
gcv.font = resource.wstyle.font->fid;
resource.wstyle.l_text_unfocus_gc =
XCreateGC(getBaseDisplay()->getXDisplay(), getRootWindow(),
XCreateGC(getBaseDisplay().getXDisplay(), getRootWindow(),
gc_value_mask, &gcv);
gcv.foreground = resource.wstyle.b_pic_focus.getPixel();
resource.wstyle.b_pic_focus_gc =
XCreateGC(getBaseDisplay()->getXDisplay(), getRootWindow(),
XCreateGC(getBaseDisplay().getXDisplay(), getRootWindow(),
GCForeground, &gcv);
gcv.foreground = resource.wstyle.b_pic_unfocus.getPixel();
resource.wstyle.b_pic_unfocus_gc =
XCreateGC(getBaseDisplay()->getXDisplay(), getRootWindow(),
XCreateGC(getBaseDisplay().getXDisplay(), getRootWindow(),
GCForeground, &gcv);
gcv.foreground = resource.mstyle.t_text.getPixel();
if (resource.mstyle.t_font)
gcv.font = resource.mstyle.t_font->fid;
resource.mstyle.t_text_gc =
XCreateGC(getBaseDisplay()->getXDisplay(), getRootWindow(),
XCreateGC(getBaseDisplay().getXDisplay(), getRootWindow(),
gc_value_mask, &gcv);
gcv.foreground = resource.mstyle.f_text.getPixel();
if (resource.mstyle.f_font)
gcv.font = resource.mstyle.f_font->fid;
resource.mstyle.f_text_gc =
XCreateGC(getBaseDisplay()->getXDisplay(), getRootWindow(),
XCreateGC(getBaseDisplay().getXDisplay(), getRootWindow(),
gc_value_mask, &gcv);
gcv.foreground = resource.mstyle.h_text.getPixel();
resource.mstyle.h_text_gc =
XCreateGC(getBaseDisplay()->getXDisplay(), getRootWindow(),
XCreateGC(getBaseDisplay().getXDisplay(), getRootWindow(),
gc_value_mask, &gcv);
gcv.foreground = resource.mstyle.d_text.getPixel();
resource.mstyle.d_text_gc =
XCreateGC(getBaseDisplay()->getXDisplay(), getRootWindow(),
XCreateGC(getBaseDisplay().getXDisplay(), getRootWindow(),
gc_value_mask, &gcv);
gcv.foreground = resource.mstyle.hilite.getColor()->getPixel();
resource.mstyle.hilite_gc =
XCreateGC(getBaseDisplay()->getXDisplay(), getRootWindow(),
XCreateGC(getBaseDisplay().getXDisplay(), getRootWindow(),
gc_value_mask, &gcv);
gcv.foreground = resource.tstyle.l_text.getPixel();
if (resource.tstyle.font)
gcv.font = resource.tstyle.font->fid;
resource.tstyle.l_text_gc =
XCreateGC(getBaseDisplay()->getXDisplay(), getRootWindow(),
XCreateGC(getBaseDisplay().getXDisplay(), getRootWindow(),
gc_value_mask, &gcv);
gcv.foreground = resource.tstyle.w_text.getPixel();
resource.tstyle.w_text_gc =
XCreateGC(getBaseDisplay()->getXDisplay(), getRootWindow(),
XCreateGC(getBaseDisplay().getXDisplay(), getRootWindow(),
gc_value_mask, &gcv);
gcv.foreground = resource.tstyle.c_text.getPixel();
resource.tstyle.c_text_gc =
XCreateGC(getBaseDisplay()->getXDisplay(), getRootWindow(),
XCreateGC(getBaseDisplay().getXDisplay(), getRootWindow(),
gc_value_mask, &gcv);
gcv.foreground = resource.tstyle.b_pic.getPixel();
resource.tstyle.b_pic_gc =
XCreateGC(getBaseDisplay()->getXDisplay(), getRootWindow(),
XCreateGC(getBaseDisplay().getXDisplay(), getRootWindow(),
gc_value_mask, &gcv);
const char *s = i18n->getMessage(ScreenSet, ScreenPositionLength,
@ -358,7 +356,7 @@ BScreen::BScreen(Openbox *ob, int scrn) : ScreenInfo(ob, scrn) {
attrib.save_under = True;
geom_window =
XCreateWindow(getBaseDisplay()->getXDisplay(), getRootWindow(),
XCreateWindow(getBaseDisplay().getXDisplay(), getRootWindow(),
0, 0, geom_w, geom_h, resource.border_width, getDepth(),
InputOutput, getVisual(), mask, &attrib);
geom_visible = False;
@ -367,24 +365,24 @@ BScreen::BScreen(Openbox *ob, int scrn) : ScreenInfo(ob, scrn) {
if (resource.wstyle.t_focus.getTexture() ==
(BImage_Flat | BImage_Solid)) {
geom_pixmap = None;
XSetWindowBackground(getBaseDisplay()->getXDisplay(), geom_window,
XSetWindowBackground(getBaseDisplay().getXDisplay(), geom_window,
resource.wstyle.t_focus.getColor()->getPixel());
} else {
geom_pixmap = image_control->renderImage(geom_w, geom_h,
&resource.wstyle.t_focus);
XSetWindowBackgroundPixmap(getBaseDisplay()->getXDisplay(),
XSetWindowBackgroundPixmap(getBaseDisplay().getXDisplay(),
geom_window, geom_pixmap);
}
} else {
if (resource.wstyle.l_focus.getTexture() ==
(BImage_Flat | BImage_Solid)) {
geom_pixmap = None;
XSetWindowBackground(getBaseDisplay()->getXDisplay(), geom_window,
XSetWindowBackground(getBaseDisplay().getXDisplay(), geom_window,
resource.wstyle.l_focus.getColor()->getPixel());
} else {
geom_pixmap = image_control->renderImage(geom_w, geom_h,
&resource.wstyle.l_focus);
XSetWindowBackgroundPixmap(getBaseDisplay()->getXDisplay(),
XSetWindowBackgroundPixmap(getBaseDisplay().getXDisplay(),
geom_window, geom_pixmap);
}
}
@ -413,10 +411,10 @@ BScreen::BScreen(Openbox *ob, int scrn) : ScreenInfo(ob, scrn) {
current_workspace = workspacesList->first();
workspacemenu->setItemSelected(2, True);
toolbar = new Toolbar(this);
toolbar = new Toolbar(*this);
#ifdef SLIT
slit = new Slit(this);
slit = new Slit(*this);
#endif // SLIT
InitMenu();
@ -429,14 +427,14 @@ BScreen::BScreen(Openbox *ob, int scrn) : ScreenInfo(ob, scrn) {
int i;
unsigned int nchild;
Window r, p, *children;
XQueryTree(getBaseDisplay()->getXDisplay(), getRootWindow(), &r, &p,
XQueryTree(getBaseDisplay().getXDisplay(), getRootWindow(), &r, &p,
&children, &nchild);
// preen the window list of all icon windows... for better dockapp support
for (i = 0; i < (int) nchild; i++) {
if (children[i] == None) continue;
XWMHints *wmhints = XGetWMHints(getBaseDisplay()->getXDisplay(),
XWMHints *wmhints = XGetWMHints(getBaseDisplay().getXDisplay(),
children[i]);
if (wmhints) {
@ -455,18 +453,18 @@ BScreen::BScreen(Openbox *ob, int scrn) : ScreenInfo(ob, scrn) {
// manage shown windows
for (i = 0; i < (int) nchild; ++i) {
if (children[i] == None || (! openbox->validateWindow(children[i])))
if (children[i] == None || (! openbox.validateWindow(children[i])))
continue;
XWindowAttributes attrib;
if (XGetWindowAttributes(getBaseDisplay()->getXDisplay(), children[i],
if (XGetWindowAttributes(getBaseDisplay().getXDisplay(), children[i],
&attrib)) {
if (attrib.override_redirect) continue;
if (attrib.map_state != IsUnmapped) {
new OpenboxWindow(openbox, children[i], this);
new OpenboxWindow(&openbox, children[i], this);
OpenboxWindow *win = openbox->searchWindow(children[i]);
OpenboxWindow *win = openbox.searchWindow(children[i]);
if (win) {
XMapRequestEvent mre;
mre.window = children[i];
@ -478,11 +476,11 @@ BScreen::BScreen(Openbox *ob, int scrn) : ScreenInfo(ob, scrn) {
}
if (! resource.sloppy_focus)
XSetInputFocus(getBaseDisplay()->getXDisplay(), toolbar->getWindowID(),
XSetInputFocus(getBaseDisplay().getXDisplay(), toolbar->getWindowID(),
RevertToParent, CurrentTime);
XFree(children);
XFlush(getBaseDisplay()->getXDisplay());
XFlush(getBaseDisplay().getXDisplay());
}
@ -493,7 +491,7 @@ BScreen::~BScreen(void) {
image_control->removeImage(geom_pixmap);
if (geom_window != None)
XDestroyWindow(getBaseDisplay()->getXDisplay(), geom_window);
XDestroyWindow(getBaseDisplay().getXDisplay(), geom_window);
removeWorkspaceNames();
@ -533,54 +531,54 @@ BScreen::~BScreen(void) {
delete netizenList;
if (resource.wstyle.fontset)
XFreeFontSet(getBaseDisplay()->getXDisplay(), resource.wstyle.fontset);
XFreeFontSet(getBaseDisplay().getXDisplay(), resource.wstyle.fontset);
if (resource.mstyle.t_fontset)
XFreeFontSet(getBaseDisplay()->getXDisplay(), resource.mstyle.t_fontset);
XFreeFontSet(getBaseDisplay().getXDisplay(), resource.mstyle.t_fontset);
if (resource.mstyle.f_fontset)
XFreeFontSet(getBaseDisplay()->getXDisplay(), resource.mstyle.f_fontset);
XFreeFontSet(getBaseDisplay().getXDisplay(), resource.mstyle.f_fontset);
if (resource.tstyle.fontset)
XFreeFontSet(getBaseDisplay()->getXDisplay(), resource.tstyle.fontset);
XFreeFontSet(getBaseDisplay().getXDisplay(), resource.tstyle.fontset);
if (resource.wstyle.font)
XFreeFont(getBaseDisplay()->getXDisplay(), resource.wstyle.font);
XFreeFont(getBaseDisplay().getXDisplay(), resource.wstyle.font);
if (resource.mstyle.t_font)
XFreeFont(getBaseDisplay()->getXDisplay(), resource.mstyle.t_font);
XFreeFont(getBaseDisplay().getXDisplay(), resource.mstyle.t_font);
if (resource.mstyle.f_font)
XFreeFont(getBaseDisplay()->getXDisplay(), resource.mstyle.f_font);
XFreeFont(getBaseDisplay().getXDisplay(), resource.mstyle.f_font);
if (resource.tstyle.font)
XFreeFont(getBaseDisplay()->getXDisplay(), resource.tstyle.font);
XFreeFont(getBaseDisplay().getXDisplay(), resource.tstyle.font);
if (resource.root_command != NULL)
delete [] resource.root_command;
XFreeGC(getBaseDisplay()->getXDisplay(), opGC);
XFreeGC(getBaseDisplay().getXDisplay(), opGC);
XFreeGC(getBaseDisplay()->getXDisplay(),
XFreeGC(getBaseDisplay().getXDisplay(),
resource.wstyle.l_text_focus_gc);
XFreeGC(getBaseDisplay()->getXDisplay(),
XFreeGC(getBaseDisplay().getXDisplay(),
resource.wstyle.l_text_unfocus_gc);
XFreeGC(getBaseDisplay()->getXDisplay(),
XFreeGC(getBaseDisplay().getXDisplay(),
resource.wstyle.b_pic_focus_gc);
XFreeGC(getBaseDisplay()->getXDisplay(),
XFreeGC(getBaseDisplay().getXDisplay(),
resource.wstyle.b_pic_unfocus_gc);
XFreeGC(getBaseDisplay()->getXDisplay(),
XFreeGC(getBaseDisplay().getXDisplay(),
resource.mstyle.t_text_gc);
XFreeGC(getBaseDisplay()->getXDisplay(),
XFreeGC(getBaseDisplay().getXDisplay(),
resource.mstyle.f_text_gc);
XFreeGC(getBaseDisplay()->getXDisplay(),
XFreeGC(getBaseDisplay().getXDisplay(),
resource.mstyle.h_text_gc);
XFreeGC(getBaseDisplay()->getXDisplay(),
XFreeGC(getBaseDisplay().getXDisplay(),
resource.mstyle.d_text_gc);
XFreeGC(getBaseDisplay()->getXDisplay(),
XFreeGC(getBaseDisplay().getXDisplay(),
resource.mstyle.hilite_gc);
XFreeGC(getBaseDisplay()->getXDisplay(),
XFreeGC(getBaseDisplay().getXDisplay(),
resource.tstyle.l_text_gc);
XFreeGC(getBaseDisplay()->getXDisplay(),
XFreeGC(getBaseDisplay().getXDisplay(),
resource.tstyle.w_text_gc);
XFreeGC(getBaseDisplay()->getXDisplay(),
XFreeGC(getBaseDisplay().getXDisplay(),
resource.tstyle.c_text_gc);
XFreeGC(getBaseDisplay()->getXDisplay(),
XFreeGC(getBaseDisplay().getXDisplay(),
resource.tstyle.b_pic_gc);
}
@ -636,7 +634,7 @@ void BScreen::readDatabaseTexture(const char *rname, const char *rclass,
if (xcol.blue >= 0xff) xcol.blue = 0xffff;
else xcol.blue *= 0xff;
if (! XAllocColor(getBaseDisplay()->getXDisplay(),
if (! XAllocColor(getBaseDisplay().getXDisplay(),
getColormap(), &xcol))
xcol.pixel = 0;
@ -652,7 +650,7 @@ void BScreen::readDatabaseTexture(const char *rname, const char *rclass,
(unsigned int) ((texture->getColor()->getBlue() >> 2) +
(texture->getColor()->getBlue() >> 1)) * 0xff;
if (! XAllocColor(getBaseDisplay()->getXDisplay(),
if (! XAllocColor(getBaseDisplay().getXDisplay(),
getColormap(), &xcol))
xcol.pixel = 0;
@ -707,7 +705,7 @@ void BScreen::readDatabaseFontSet(const char *rname, const char *rclass,
std::string s;
if (*fontset)
XFreeFontSet(getBaseDisplay()->getXDisplay(), *fontset);
XFreeFontSet(getBaseDisplay().getXDisplay(), *fontset);
if (resource.styleconfig.getValue(rname, rclass, s)) {
if (! (*fontset = createFontSet(s.c_str())))
@ -736,10 +734,10 @@ void BScreen::readDatabaseFont(const char *rname, const char *rclass,
std::string s;
if (*font)
XFreeFont(getBaseDisplay()->getXDisplay(), *font);
XFreeFont(getBaseDisplay().getXDisplay(), *font);
if (resource.styleconfig.getValue(rname, rclass, s)) {
if ((*font = XLoadQueryFont(getBaseDisplay()->getXDisplay(),
if ((*font = XLoadQueryFont(getBaseDisplay().getXDisplay(),
s.c_str())) == NULL) {
fprintf(stderr, i18n->getMessage(ScreenSet, ScreenFontLoadFail,
"BScreen::LoadStyle(): couldn't load font '%s'\n"),
@ -750,7 +748,7 @@ void BScreen::readDatabaseFont(const char *rname, const char *rclass,
load_default = true;
if (load_default) {
if ((*font = XLoadQueryFont(getBaseDisplay()->getXDisplay(),
if ((*font = XLoadQueryFont(getBaseDisplay().getXDisplay(),
defaultFont)) == NULL) {
fprintf(stderr, i18n->getMessage(ScreenSet, ScreenDefaultFontLoadFail,
"BScreen::LoadStyle(): couldn't load default font.\n"));
@ -766,7 +764,7 @@ XFontSet BScreen::createFontSet(const char *fontname) {
int nmissing, pixel_size = 0, buf_size = 0;
char weight[FONT_ELEMENT_SIZE], slant[FONT_ELEMENT_SIZE];
fs = XCreateFontSet(getBaseDisplay()->getXDisplay(),
fs = XCreateFontSet(getBaseDisplay().getXDisplay(),
fontname, &missing, &nmissing, &def);
if (fs && (! nmissing)) return fs;
@ -775,7 +773,7 @@ XFontSet BScreen::createFontSet(const char *fontname) {
if (nmissing) XFreeStringList(missing);
setlocale(LC_CTYPE, "C");
fs = XCreateFontSet(getBaseDisplay()->getXDisplay(), fontname,
fs = XCreateFontSet(getBaseDisplay().getXDisplay(), fontname,
&missing, &nmissing, &def);
setlocale(LC_CTYPE, "");
}
@ -809,9 +807,9 @@ XFontSet BScreen::createFontSet(const char *fontname) {
fontname = pattern2;
if (nmissing) XFreeStringList(missing);
if (fs) XFreeFontSet(getBaseDisplay()->getXDisplay(), fs);
if (fs) XFreeFontSet(getBaseDisplay().getXDisplay(), fs);
fs = XCreateFontSet(getBaseDisplay()->getXDisplay(), fontname,
fs = XCreateFontSet(getBaseDisplay().getXDisplay(), fontname,
&missing, &nmissing, &def);
delete [] pattern2;
@ -826,71 +824,71 @@ void BScreen::reconfigure(void) {
unsigned long gc_value_mask = GCForeground;
if (! i18n->multibyte()) gc_value_mask |= GCFont;
gcv.foreground = WhitePixel(getBaseDisplay()->getXDisplay(),
gcv.foreground = WhitePixel(getBaseDisplay().getXDisplay(),
getScreenNumber());
gcv.function = GXinvert;
gcv.subwindow_mode = IncludeInferiors;
XChangeGC(getBaseDisplay()->getXDisplay(), opGC,
XChangeGC(getBaseDisplay().getXDisplay(), opGC,
GCForeground | GCFunction | GCSubwindowMode, &gcv);
gcv.foreground = resource.wstyle.l_text_focus.getPixel();
if (resource.wstyle.font)
gcv.font = resource.wstyle.font->fid;
XChangeGC(getBaseDisplay()->getXDisplay(), resource.wstyle.l_text_focus_gc,
XChangeGC(getBaseDisplay().getXDisplay(), resource.wstyle.l_text_focus_gc,
gc_value_mask, &gcv);
gcv.foreground = resource.wstyle.l_text_unfocus.getPixel();
XChangeGC(getBaseDisplay()->getXDisplay(), resource.wstyle.l_text_unfocus_gc,
XChangeGC(getBaseDisplay().getXDisplay(), resource.wstyle.l_text_unfocus_gc,
gc_value_mask, &gcv);
gcv.foreground = resource.wstyle.b_pic_focus.getPixel();
XChangeGC(getBaseDisplay()->getXDisplay(), resource.wstyle.b_pic_focus_gc,
XChangeGC(getBaseDisplay().getXDisplay(), resource.wstyle.b_pic_focus_gc,
GCForeground, &gcv);
gcv.foreground = resource.wstyle.b_pic_unfocus.getPixel();
XChangeGC(getBaseDisplay()->getXDisplay(), resource.wstyle.b_pic_unfocus_gc,
XChangeGC(getBaseDisplay().getXDisplay(), resource.wstyle.b_pic_unfocus_gc,
GCForeground, &gcv);
gcv.foreground = resource.mstyle.t_text.getPixel();
if (resource.mstyle.t_font)
gcv.font = resource.mstyle.t_font->fid;
XChangeGC(getBaseDisplay()->getXDisplay(), resource.mstyle.t_text_gc,
XChangeGC(getBaseDisplay().getXDisplay(), resource.mstyle.t_text_gc,
gc_value_mask, &gcv);
gcv.foreground = resource.mstyle.f_text.getPixel();
if (resource.mstyle.f_font)
gcv.font = resource.mstyle.f_font->fid;
XChangeGC(getBaseDisplay()->getXDisplay(), resource.mstyle.f_text_gc,
XChangeGC(getBaseDisplay().getXDisplay(), resource.mstyle.f_text_gc,
gc_value_mask, &gcv);
gcv.foreground = resource.mstyle.h_text.getPixel();
XChangeGC(getBaseDisplay()->getXDisplay(), resource.mstyle.h_text_gc,
XChangeGC(getBaseDisplay().getXDisplay(), resource.mstyle.h_text_gc,
gc_value_mask, &gcv);
gcv.foreground = resource.mstyle.d_text.getPixel();
XChangeGC(getBaseDisplay()->getXDisplay(), resource.mstyle.d_text_gc,
XChangeGC(getBaseDisplay().getXDisplay(), resource.mstyle.d_text_gc,
gc_value_mask, &gcv);
gcv.foreground = resource.mstyle.hilite.getColor()->getPixel();
XChangeGC(getBaseDisplay()->getXDisplay(), resource.mstyle.hilite_gc,
XChangeGC(getBaseDisplay().getXDisplay(), resource.mstyle.hilite_gc,
gc_value_mask, &gcv);
gcv.foreground = resource.tstyle.l_text.getPixel();
if (resource.tstyle.font)
gcv.font = resource.tstyle.font->fid;
XChangeGC(getBaseDisplay()->getXDisplay(), resource.tstyle.l_text_gc,
XChangeGC(getBaseDisplay().getXDisplay(), resource.tstyle.l_text_gc,
gc_value_mask, &gcv);
gcv.foreground = resource.tstyle.w_text.getPixel();
XChangeGC(getBaseDisplay()->getXDisplay(), resource.tstyle.w_text_gc,
XChangeGC(getBaseDisplay().getXDisplay(), resource.tstyle.w_text_gc,
gc_value_mask, &gcv);
gcv.foreground = resource.tstyle.c_text.getPixel();
XChangeGC(getBaseDisplay()->getXDisplay(), resource.tstyle.c_text_gc,
XChangeGC(getBaseDisplay().getXDisplay(), resource.tstyle.c_text_gc,
gc_value_mask, &gcv);
gcv.foreground = resource.tstyle.b_pic.getPixel();
XChangeGC(getBaseDisplay()->getXDisplay(), resource.tstyle.b_pic_gc,
XChangeGC(getBaseDisplay().getXDisplay(), resource.tstyle.b_pic_gc,
gc_value_mask, &gcv);
const char *s = i18n->getMessage(ScreenSet, ScreenPositionLength,
@ -918,32 +916,32 @@ void BScreen::reconfigure(void) {
if (resource.wstyle.t_focus.getTexture() ==
(BImage_Flat | BImage_Solid)) {
geom_pixmap = None;
XSetWindowBackground(getBaseDisplay()->getXDisplay(), geom_window,
XSetWindowBackground(getBaseDisplay().getXDisplay(), geom_window,
resource.wstyle.t_focus.getColor()->getPixel());
} else {
geom_pixmap = image_control->renderImage(geom_w, geom_h,
&resource.wstyle.t_focus);
XSetWindowBackgroundPixmap(getBaseDisplay()->getXDisplay(),
XSetWindowBackgroundPixmap(getBaseDisplay().getXDisplay(),
geom_window, geom_pixmap);
}
} else {
if (resource.wstyle.l_focus.getTexture() ==
(BImage_Flat | BImage_Solid)) {
geom_pixmap = None;
XSetWindowBackground(getBaseDisplay()->getXDisplay(), geom_window,
XSetWindowBackground(getBaseDisplay().getXDisplay(), geom_window,
resource.wstyle.l_focus.getColor()->getPixel());
} else {
geom_pixmap = image_control->renderImage(geom_w, geom_h,
&resource.wstyle.l_focus);
XSetWindowBackgroundPixmap(getBaseDisplay()->getXDisplay(),
XSetWindowBackgroundPixmap(getBaseDisplay().getXDisplay(),
geom_window, geom_pixmap);
}
}
if (tmp) image_control->removeImage(tmp);
XSetWindowBorderWidth(getBaseDisplay()->getXDisplay(), geom_window,
XSetWindowBorderWidth(getBaseDisplay().getXDisplay(), geom_window,
resource.border_width);
XSetWindowBorder(getBaseDisplay()->getXDisplay(), geom_window,
XSetWindowBorder(getBaseDisplay().getXDisplay(), geom_window,
resource.border_color.getPixel());
workspacemenu->reconfigure();
@ -995,7 +993,7 @@ void BScreen::removeWorkspaceNames(void) {
void BScreen::LoadStyle(void) {
obResource &conf = resource.styleconfig;
conf.setFile(openbox->getStyleFilename());
conf.setFile(openbox.getStyleFilename());
if (!conf.load()) {
conf.setFile(DEFAULTSTYLE);
if (!conf.load()) {
@ -1043,77 +1041,77 @@ void BScreen::LoadStyle(void) {
// load window config
readDatabaseTexture("window.title.focus", "Window.Title.Focus",
&resource.wstyle.t_focus,
WhitePixel(getBaseDisplay()->getXDisplay(),
WhitePixel(getBaseDisplay().getXDisplay(),
getScreenNumber()));
readDatabaseTexture("window.title.unfocus", "Window.Title.Unfocus",
&resource.wstyle.t_unfocus,
BlackPixel(getBaseDisplay()->getXDisplay(),
BlackPixel(getBaseDisplay().getXDisplay(),
getScreenNumber()));
readDatabaseTexture("window.label.focus", "Window.Label.Focus",
&resource.wstyle.l_focus,
WhitePixel(getBaseDisplay()->getXDisplay(),
WhitePixel(getBaseDisplay().getXDisplay(),
getScreenNumber()));
readDatabaseTexture("window.label.unfocus", "Window.Label.Unfocus",
&resource.wstyle.l_unfocus,
BlackPixel(getBaseDisplay()->getXDisplay(),
BlackPixel(getBaseDisplay().getXDisplay(),
getScreenNumber()));
readDatabaseTexture("window.handle.focus", "Window.Handle.Focus",
&resource.wstyle.h_focus,
WhitePixel(getBaseDisplay()->getXDisplay(),
WhitePixel(getBaseDisplay().getXDisplay(),
getScreenNumber()));
readDatabaseTexture("window.handle.unfocus", "Window.Handle.Unfocus",
&resource.wstyle.h_unfocus,
BlackPixel(getBaseDisplay()->getXDisplay(),
BlackPixel(getBaseDisplay().getXDisplay(),
getScreenNumber()));
readDatabaseTexture("window.grip.focus", "Window.Grip.Focus",
&resource.wstyle.g_focus,
WhitePixel(getBaseDisplay()->getXDisplay(),
WhitePixel(getBaseDisplay().getXDisplay(),
getScreenNumber()));
readDatabaseTexture("window.grip.unfocus", "Window.Grip.Unfocus",
&resource.wstyle.g_unfocus,
BlackPixel(getBaseDisplay()->getXDisplay(),
BlackPixel(getBaseDisplay().getXDisplay(),
getScreenNumber()));
readDatabaseTexture("window.button.focus", "Window.Button.Focus",
&resource.wstyle.b_focus,
WhitePixel(getBaseDisplay()->getXDisplay(),
WhitePixel(getBaseDisplay().getXDisplay(),
getScreenNumber()));
readDatabaseTexture("window.button.unfocus", "Window.Button.Unfocus",
&resource.wstyle.b_unfocus,
BlackPixel(getBaseDisplay()->getXDisplay(),
BlackPixel(getBaseDisplay().getXDisplay(),
getScreenNumber()));
readDatabaseTexture("window.button.pressed", "Window.Button.Pressed",
&resource.wstyle.b_pressed,
BlackPixel(getBaseDisplay()->getXDisplay(),
BlackPixel(getBaseDisplay().getXDisplay(),
getScreenNumber()));
readDatabaseColor("window.frame.focusColor",
"Window.Frame.FocusColor",
&resource.wstyle.f_focus,
WhitePixel(getBaseDisplay()->getXDisplay(),
WhitePixel(getBaseDisplay().getXDisplay(),
getScreenNumber()));
readDatabaseColor("window.frame.unfocusColor",
"Window.Frame.UnfocusColor",
&resource.wstyle.f_unfocus,
BlackPixel(getBaseDisplay()->getXDisplay(),
BlackPixel(getBaseDisplay().getXDisplay(),
getScreenNumber()));
readDatabaseColor("window.label.focus.textColor",
"Window.Label.Focus.TextColor",
&resource.wstyle.l_text_focus,
BlackPixel(getBaseDisplay()->getXDisplay(),
BlackPixel(getBaseDisplay().getXDisplay(),
getScreenNumber()));
readDatabaseColor("window.label.unfocus.textColor",
"Window.Label.Unfocus.TextColor",
&resource.wstyle.l_text_unfocus,
WhitePixel(getBaseDisplay()->getXDisplay(),
WhitePixel(getBaseDisplay().getXDisplay(),
getScreenNumber()));
readDatabaseColor("window.button.focus.picColor",
"Window.Button.Focus.PicColor",
&resource.wstyle.b_pic_focus,
BlackPixel(getBaseDisplay()->getXDisplay(),
BlackPixel(getBaseDisplay().getXDisplay(),
getScreenNumber()));
readDatabaseColor("window.button.unfocus.picColor",
"Window.Button.Unfocus.PicColor",
&resource.wstyle.b_pic_unfocus,
WhitePixel(getBaseDisplay()->getXDisplay(),
WhitePixel(getBaseDisplay().getXDisplay(),
getScreenNumber()));
if (conf.getValue("window.justify", "Window.Justify", s)) {
@ -1129,44 +1127,44 @@ void BScreen::LoadStyle(void) {
// load toolbar config
readDatabaseTexture("toolbar", "Toolbar",
&resource.tstyle.toolbar,
BlackPixel(getBaseDisplay()->getXDisplay(),
BlackPixel(getBaseDisplay().getXDisplay(),
getScreenNumber()));
readDatabaseTexture("toolbar.label", "Toolbar.Label",
&resource.tstyle.label,
BlackPixel(getBaseDisplay()->getXDisplay(),
BlackPixel(getBaseDisplay().getXDisplay(),
getScreenNumber()));
readDatabaseTexture("toolbar.windowLabel", "Toolbar.WindowLabel",
&resource.tstyle.window,
BlackPixel(getBaseDisplay()->getXDisplay(),
BlackPixel(getBaseDisplay().getXDisplay(),
getScreenNumber()));
readDatabaseTexture("toolbar.button", "Toolbar.Button",
&resource.tstyle.button,
WhitePixel(getBaseDisplay()->getXDisplay(),
WhitePixel(getBaseDisplay().getXDisplay(),
getScreenNumber()));
readDatabaseTexture("toolbar.button.pressed", "Toolbar.Button.Pressed",
&resource.tstyle.pressed,
BlackPixel(getBaseDisplay()->getXDisplay(),
BlackPixel(getBaseDisplay().getXDisplay(),
getScreenNumber()));
readDatabaseTexture("toolbar.clock", "Toolbar.Clock",
&resource.tstyle.clock,
BlackPixel(getBaseDisplay()->getXDisplay(),
BlackPixel(getBaseDisplay().getXDisplay(),
getScreenNumber()));
readDatabaseColor("toolbar.label.textColor", "Toolbar.Label.TextColor",
&resource.tstyle.l_text,
WhitePixel(getBaseDisplay()->getXDisplay(),
WhitePixel(getBaseDisplay().getXDisplay(),
getScreenNumber()));
readDatabaseColor("toolbar.windowLabel.textColor",
"Toolbar.WindowLabel.TextColor",
&resource.tstyle.w_text,
WhitePixel(getBaseDisplay()->getXDisplay(),
WhitePixel(getBaseDisplay().getXDisplay(),
getScreenNumber()));
readDatabaseColor("toolbar.clock.textColor", "Toolbar.Clock.TextColor",
&resource.tstyle.c_text,
WhitePixel(getBaseDisplay()->getXDisplay(),
WhitePixel(getBaseDisplay().getXDisplay(),
getScreenNumber()));
readDatabaseColor("toolbar.button.picColor", "Toolbar.Button.PicColor",
&resource.tstyle.b_pic,
BlackPixel(getBaseDisplay()->getXDisplay(),
BlackPixel(getBaseDisplay().getXDisplay(),
getScreenNumber()));
if (conf.getValue("toolbar.justify", "Toolbar.Justify", s)) {
@ -1182,31 +1180,31 @@ void BScreen::LoadStyle(void) {
// load menu config
readDatabaseTexture("menu.title", "Menu.Title",
&resource.mstyle.title,
WhitePixel(getBaseDisplay()->getXDisplay(),
WhitePixel(getBaseDisplay().getXDisplay(),
getScreenNumber()));
readDatabaseTexture("menu.frame", "Menu.Frame",
&resource.mstyle.frame,
BlackPixel(getBaseDisplay()->getXDisplay(),
BlackPixel(getBaseDisplay().getXDisplay(),
getScreenNumber()));
readDatabaseTexture("menu.hilite", "Menu.Hilite",
&resource.mstyle.hilite,
WhitePixel(getBaseDisplay()->getXDisplay(),
WhitePixel(getBaseDisplay().getXDisplay(),
getScreenNumber()));
readDatabaseColor("menu.title.textColor", "Menu.Title.TextColor",
&resource.mstyle.t_text,
BlackPixel(getBaseDisplay()->getXDisplay(),
BlackPixel(getBaseDisplay().getXDisplay(),
getScreenNumber()));
readDatabaseColor("menu.frame.textColor", "Menu.Frame.TextColor",
&resource.mstyle.f_text,
WhitePixel(getBaseDisplay()->getXDisplay(),
WhitePixel(getBaseDisplay().getXDisplay(),
getScreenNumber()));
readDatabaseColor("menu.frame.disableColor", "Menu.Frame.DisableColor",
&resource.mstyle.d_text,
BlackPixel(getBaseDisplay()->getXDisplay(),
BlackPixel(getBaseDisplay().getXDisplay(),
getScreenNumber()));
readDatabaseColor("menu.hilite.textColor", "Menu.Hilite.TextColor",
&resource.mstyle.h_text,
BlackPixel(getBaseDisplay()->getXDisplay(),
BlackPixel(getBaseDisplay().getXDisplay(),
getScreenNumber()));
if (conf.getValue("menu.title.justify", "Menu.Title.Justify", s)) {
@ -1250,7 +1248,7 @@ void BScreen::LoadStyle(void) {
resource.mstyle.bullet_pos = Basemenu::Left;
readDatabaseColor("borderColor", "BorderColor", &resource.border_color,
BlackPixel(getBaseDisplay()->getXDisplay(),
BlackPixel(getBaseDisplay().getXDisplay(),
getScreenNumber()));
// load bevel, border and handle widths
@ -1291,7 +1289,7 @@ void BScreen::LoadStyle(void) {
#ifndef __EMX__
char displaystring[MAXPATHLEN];
sprintf(displaystring, "DISPLAY=%s",
DisplayString(getBaseDisplay()->getXDisplay()));
DisplayString(getBaseDisplay().getXDisplay()));
sprintf(displaystring + strlen(displaystring) - 1, "%d",
getScreenNumber());
@ -1389,11 +1387,11 @@ void BScreen::changeWorkspaceID(int id) {
workspacemenu->setItemSelected(current_workspace->getWorkspaceID() + 2,
False);
if (openbox->getFocusedWindow() &&
openbox->getFocusedWindow()->getScreen() == this &&
(! openbox->getFocusedWindow()->isStuck())) {
current_workspace->setLastFocusedWindow(openbox->getFocusedWindow());
openbox->setFocusedWindow((OpenboxWindow *) 0);
if (openbox.getFocusedWindow() &&
openbox.getFocusedWindow()->getScreen() == this &&
(! openbox.getFocusedWindow()->isStuck())) {
current_workspace->setLastFocusedWindow(openbox.getFocusedWindow());
openbox.setFocusedWindow((OpenboxWindow *) 0);
}
current_workspace = getWorkspace(id);
@ -1405,7 +1403,7 @@ void BScreen::changeWorkspaceID(int id) {
current_workspace->showAll();
if (resource.focus_last && current_workspace->getLastFocusedWindow()) {
XSync(openbox->getXDisplay(), False);
XSync(openbox.getXDisplay(), False);
current_workspace->getLastFocusedWindow()->setInputFocus();
}
}
@ -1427,8 +1425,8 @@ void BScreen::addNetizen(Netizen *n) {
w->getWorkspaceID());
}
Window f = ((openbox->getFocusedWindow()) ?
openbox->getFocusedWindow()->getClientWindow() : None);
Window f = ((openbox.getFocusedWindow()) ?
openbox.getFocusedWindow()->getClientWindow() : None);
n->sendWindowFocus(f);
}
@ -1462,8 +1460,8 @@ void BScreen::updateNetizenWorkspaceCount(void) {
void BScreen::updateNetizenWindowFocus(void) {
Window f = ((openbox->getFocusedWindow()) ?
openbox->getFocusedWindow()->getClientWindow() : None);
Window f = ((openbox.getFocusedWindow()) ?
openbox.getFocusedWindow()->getClientWindow() : None);
LinkedListIterator<Netizen> it(netizenList);
for (Netizen *n = it.current(); n; it++, n = it.current())
n->sendWindowFocus(f);
@ -1510,7 +1508,7 @@ void BScreen::raiseWindows(Window *workspace_stack, int num) {
Window[(num + workspacesList->count() + rootmenuList->count() + 13)];
int i = 0, k = num;
XRaiseWindow(getBaseDisplay()->getXDisplay(), iconmenu->getWindowID());
XRaiseWindow(getBaseDisplay().getXDisplay(), iconmenu->getWindowID());
*(session_stack + i++) = iconmenu->getWindowID();
LinkedListIterator<Workspace> wit(workspacesList);
@ -1549,7 +1547,7 @@ void BScreen::raiseWindows(Window *workspace_stack, int num) {
while (k--)
*(session_stack + i++) = *(workspace_stack + k);
XRestackWindows(getBaseDisplay()->getXDisplay(), session_stack, i);
XRestackWindows(getBaseDisplay().getXDisplay(), session_stack, i);
delete [] session_stack;
}
@ -1607,11 +1605,11 @@ void BScreen::nextFocus(void) {
int focused_window_number = -1;
OpenboxWindow *next;
if (openbox->getFocusedWindow()) {
if (openbox->getFocusedWindow()->getScreen()->getScreenNumber() ==
if (openbox.getFocusedWindow()) {
if (openbox.getFocusedWindow()->getScreen()->getScreenNumber() ==
getScreenNumber()) {
have_focused = True;
focused_window_number = openbox->getFocusedWindow()->getWindowNumber();
focused_window_number = openbox.getFocusedWindow()->getWindowNumber();
}
}
@ -1641,11 +1639,11 @@ void BScreen::prevFocus(void) {
int focused_window_number = -1;
OpenboxWindow *prev;
if (openbox->getFocusedWindow()) {
if (openbox->getFocusedWindow()->getScreen()->getScreenNumber() ==
if (openbox.getFocusedWindow()) {
if (openbox.getFocusedWindow()->getScreen()->getScreenNumber() ==
getScreenNumber()) {
have_focused = True;
focused_window_number = openbox->getFocusedWindow()->getWindowNumber();
focused_window_number = openbox.getFocusedWindow()->getWindowNumber();
}
}
@ -1674,17 +1672,17 @@ void BScreen::raiseFocus(void) {
Bool have_focused = False;
int focused_window_number = -1;
if (openbox->getFocusedWindow()) {
if (openbox->getFocusedWindow()->getScreen()->getScreenNumber() ==
if (openbox.getFocusedWindow()) {
if (openbox.getFocusedWindow()->getScreen()->getScreenNumber() ==
getScreenNumber()) {
have_focused = True;
focused_window_number = openbox->getFocusedWindow()->getWindowNumber();
focused_window_number = openbox.getFocusedWindow()->getWindowNumber();
}
}
if ((getCurrentWorkspace()->getCount() > 1) && have_focused)
getWorkspace(openbox->getFocusedWindow()->getWorkspaceNumber())->
raiseWindow(openbox->getFocusedWindow());
getWorkspace(openbox.getFocusedWindow()->getWorkspaceNumber())->
raiseWindow(openbox.getFocusedWindow());
}
@ -1700,16 +1698,16 @@ void BScreen::InitMenu(void) {
}
Bool defaultMenu = True;
if (openbox->getMenuFilename()) {
FILE *menu_file = fopen(openbox->getMenuFilename(), "r");
if (openbox.getMenuFilename()) {
FILE *menu_file = fopen(openbox.getMenuFilename(), "r");
if (!menu_file) {
perror(openbox->getMenuFilename());
perror(openbox.getMenuFilename());
} else {
if (feof(menu_file)) {
fprintf(stderr, i18n->getMessage(ScreenSet, ScreenEmptyMenuFile,
"%s: Empty menu file"),
openbox->getMenuFilename());
openbox.getMenuFilename());
} else {
char line[1024], label[1024];
memset(line, 0, 1024);
@ -1763,7 +1761,7 @@ void BScreen::InitMenu(void) {
rootmenu->insert(i18n->getMessage(ScreenSet, ScreenExit, "Exit"),
BScreen::Exit);
} else {
openbox->saveMenuFilename(openbox->getMenuFilename());
openbox.saveMenuFilename(openbox.getMenuFilename());
}
}
@ -1964,7 +1962,7 @@ Bool BScreen::parseMenuFile(FILE *file, Rootmenu *menu) {
if (! feof(submenufile)) {
if (! parseMenuFile(submenufile, menu))
openbox->saveMenuFilename(newfile);
openbox.saveMenuFilename(newfile);
fclose(submenufile);
}
@ -2123,7 +2121,7 @@ Bool BScreen::parseMenuFile(FILE *file, Rootmenu *menu) {
rootmenuList->insert(stylesmenu);
}
openbox->saveMenuFilename(stylesdir);
openbox.saveMenuFilename(stylesdir);
} else {
fprintf(stderr, i18n->getMessage(ScreenSet,
ScreenSTYLESDIRErrorNotDir,
@ -2165,10 +2163,10 @@ Bool BScreen::parseMenuFile(FILE *file, Rootmenu *menu) {
void BScreen::shutdown(void) {
openbox->grab();
openbox.grab();
XSelectInput(getBaseDisplay()->getXDisplay(), getRootWindow(), NoEventMask);
XSync(getBaseDisplay()->getXDisplay(), False);
XSelectInput(getBaseDisplay().getXDisplay(), getRootWindow(), NoEventMask);
XSync(getBaseDisplay().getXDisplay(), False);
LinkedListIterator<Workspace> it(workspacesList);
for (Workspace *w = it.current(); w; it++, w = it.current())
@ -2183,17 +2181,17 @@ void BScreen::shutdown(void) {
slit->shutdown();
#endif // SLIT
openbox->ungrab();
openbox.ungrab();
}
void BScreen::showPosition(int x, int y) {
if (! geom_visible) {
XMoveResizeWindow(getBaseDisplay()->getXDisplay(), geom_window,
XMoveResizeWindow(getBaseDisplay().getXDisplay(), geom_window,
(getWidth() - geom_w) / 2,
(getHeight() - geom_h) / 2, geom_w, geom_h);
XMapWindow(getBaseDisplay()->getXDisplay(), geom_window);
XRaiseWindow(getBaseDisplay()->getXDisplay(), geom_window);
XMapWindow(getBaseDisplay().getXDisplay(), geom_window);
XRaiseWindow(getBaseDisplay().getXDisplay(), geom_window);
geom_visible = True;
}
@ -2203,16 +2201,16 @@ void BScreen::showPosition(int x, int y) {
sprintf(label, i18n->getMessage(ScreenSet, ScreenPositionFormat,
"X: %4d x Y: %4d"), x, y);
XClearWindow(getBaseDisplay()->getXDisplay(), geom_window);
XClearWindow(getBaseDisplay().getXDisplay(), geom_window);
if (i18n->multibyte()) {
XmbDrawString(getBaseDisplay()->getXDisplay(), geom_window,
XmbDrawString(getBaseDisplay().getXDisplay(), geom_window,
resource.wstyle.fontset, resource.wstyle.l_text_focus_gc,
resource.bevel_width, resource.bevel_width -
resource.wstyle.fontset_extents->max_ink_extent.y,
label, strlen(label));
} else {
XDrawString(getBaseDisplay()->getXDisplay(), geom_window,
XDrawString(getBaseDisplay().getXDisplay(), geom_window,
resource.wstyle.l_text_focus_gc,
resource.bevel_width,
resource.wstyle.font->ascent +
@ -2223,11 +2221,11 @@ void BScreen::showPosition(int x, int y) {
void BScreen::showGeometry(unsigned int gx, unsigned int gy) {
if (! geom_visible) {
XMoveResizeWindow(getBaseDisplay()->getXDisplay(), geom_window,
XMoveResizeWindow(getBaseDisplay().getXDisplay(), geom_window,
(getWidth() - geom_w) / 2,
(getHeight() - geom_h) / 2, geom_w, geom_h);
XMapWindow(getBaseDisplay()->getXDisplay(), geom_window);
XRaiseWindow(getBaseDisplay()->getXDisplay(), geom_window);
XMapWindow(getBaseDisplay().getXDisplay(), geom_window);
XRaiseWindow(getBaseDisplay().getXDisplay(), geom_window);
geom_visible = True;
}
@ -2237,16 +2235,16 @@ void BScreen::showGeometry(unsigned int gx, unsigned int gy) {
sprintf(label, i18n->getMessage(ScreenSet, ScreenGeometryFormat,
"W: %4d x H: %4d"), gx, gy);
XClearWindow(getBaseDisplay()->getXDisplay(), geom_window);
XClearWindow(getBaseDisplay().getXDisplay(), geom_window);
if (i18n->multibyte()) {
XmbDrawString(getBaseDisplay()->getXDisplay(), geom_window,
XmbDrawString(getBaseDisplay().getXDisplay(), geom_window,
resource.wstyle.fontset, resource.wstyle.l_text_focus_gc,
resource.bevel_width, resource.bevel_width -
resource.wstyle.fontset_extents->max_ink_extent.y,
label, strlen(label));
} else {
XDrawString(getBaseDisplay()->getXDisplay(), geom_window,
XDrawString(getBaseDisplay().getXDisplay(), geom_window,
resource.wstyle.l_text_focus_gc,
resource.bevel_width,
resource.wstyle.font->ascent +
@ -2257,7 +2255,7 @@ void BScreen::showGeometry(unsigned int gx, unsigned int gy) {
void BScreen::hideGeometry(void) {
if (geom_visible) {
XUnmapWindow(getBaseDisplay()->getXDisplay(), geom_window);
XUnmapWindow(getBaseDisplay().getXDisplay(), geom_window);
geom_visible = False;
}
}

View file

@ -102,7 +102,7 @@ private:
Pixmap geom_pixmap;
Window geom_window;
Openbox *openbox;
Openbox &openbox;
BImageControl *image_control;
Configmenu *configmenu;
Iconmenu *iconmenu;
@ -175,7 +175,7 @@ protected:
public:
BScreen(Openbox *, int);
BScreen(Openbox &, int);
~BScreen(void);
inline const Bool &isToolbarOnTop(void) const
@ -199,7 +199,7 @@ public:
inline const GC &getOpGC() const { return opGC; }
inline Openbox *getOpenbox(void) { return openbox; }
inline Openbox &getOpenbox(void) { return openbox; }
inline BColor *getBorderColor(void) { return &resource.border_color; }
inline BImageControl *getImageControl(void) { return image_control; }
inline Rootmenu *getRootmenu(void) { return rootmenu; }

View file

@ -42,18 +42,15 @@
#include "Toolbar.h"
Slit::Slit(BScreen *scr) {
screen = scr;
openbox = screen->getOpenbox();
Slit::Slit(BScreen &scr) : screen(scr), openbox(scr.getOpenbox()) {
on_top = screen.isSlitOnTop();
hidden = do_auto_hide = screen.doSlitAutoHide();
on_top = screen->isSlitOnTop();
hidden = do_auto_hide = screen->doSlitAutoHide();
display = screen->getBaseDisplay()->getXDisplay();
display = screen.getBaseDisplay().getXDisplay();
frame.window = frame.pixmap = None;
timer = new BTimer(*openbox, *this);
timer->setTimeout(openbox->getAutoRaiseDelay());
timer = new BTimer(openbox, *this);
timer->setTimeout(openbox.getAutoRaiseDelay());
timer->fireOnce(True);
clientList = new LinkedList<SlitClient>;
@ -65,8 +62,8 @@ Slit::Slit(BScreen *scr) {
CWColormap | CWOverrideRedirect | CWEventMask;
attrib.background_pixmap = None;
attrib.background_pixel = attrib.border_pixel =
screen->getBorderColor()->getPixel();
attrib.colormap = screen->getColormap();
screen.getBorderColor()->getPixel();
attrib.colormap = screen.getColormap();
attrib.override_redirect = True;
attrib.event_mask = SubstructureRedirectMask | ButtonPressMask |
EnterWindowMask | LeaveWindowMask;
@ -75,18 +72,18 @@ Slit::Slit(BScreen *scr) {
frame.width = frame.height = 1;
frame.window =
XCreateWindow(display, screen->getRootWindow(), frame.x, frame.y,
frame.width, frame.height, screen->getBorderWidth(),
screen->getDepth(), InputOutput, screen->getVisual(),
XCreateWindow(display, screen.getRootWindow(), frame.x, frame.y,
frame.width, frame.height, screen.getBorderWidth(),
screen.getDepth(), InputOutput, screen.getVisual(),
create_mask, &attrib);
openbox->saveSlitSearch(frame.window, this);
openbox.saveSlitSearch(frame.window, this);
reconfigure();
}
Slit::~Slit() {
openbox->grab();
openbox.grab();
if (timer->isTiming()) timer->stop();
delete timer;
@ -94,20 +91,20 @@ Slit::~Slit() {
delete clientList;
delete slitmenu;
screen->getImageControl()->removeImage(frame.pixmap);
screen.getImageControl()->removeImage(frame.pixmap);
openbox->removeSlitSearch(frame.window);
openbox.removeSlitSearch(frame.window);
XDestroyWindow(display, frame.window);
openbox->ungrab();
openbox.ungrab();
}
void Slit::addClient(Window w) {
openbox->grab();
openbox.grab();
if (openbox->validateWindow(w)) {
if (openbox.validateWindow(w)) {
SlitClient *client = new SlitClient;
client->client_window = w;
@ -116,8 +113,8 @@ void Slit::addClient(Window w) {
if (wmhints) {
if ((wmhints->flags & IconWindowHint) &&
(wmhints->icon_window != None)) {
XMoveWindow(display, client->client_window, screen->getWidth() + 10,
screen->getHeight() + 10);
XMoveWindow(display, client->client_window, screen.getWidth() + 10,
screen.getHeight() + 10);
XMapWindow(display, client->client_window);
client->icon_window = wmhints->icon_window;
@ -158,26 +155,26 @@ void Slit::addClient(Window w) {
clientList->insert(client);
openbox->saveSlitSearch(client->client_window, this);
openbox->saveSlitSearch(client->icon_window, this);
openbox.saveSlitSearch(client->client_window, this);
openbox.saveSlitSearch(client->icon_window, this);
reconfigure();
}
openbox->ungrab();
openbox.ungrab();
}
void Slit::removeClient(SlitClient *client, Bool remap) {
openbox->removeSlitSearch(client->client_window);
openbox->removeSlitSearch(client->icon_window);
openbox.removeSlitSearch(client->client_window);
openbox.removeSlitSearch(client->icon_window);
clientList->remove(client);
screen->removeNetizen(client->window);
screen.removeNetizen(client->window);
if (remap && openbox->validateWindow(client->window)) {
if (remap && openbox.validateWindow(client->window)) {
XSelectInput(display, frame.window, NoEventMask);
XSelectInput(display, client->window, NoEventMask);
XReparentWindow(display, client->window, screen->getRootWindow(),
XReparentWindow(display, client->window, screen.getRootWindow(),
client->x, client->y);
XChangeSaveSet(display, client->window, SetModeDelete);
XSelectInput(display, frame.window, SubstructureRedirectMask |
@ -191,7 +188,7 @@ void Slit::removeClient(SlitClient *client, Bool remap) {
void Slit::removeClient(Window w, Bool remap) {
openbox->grab();
openbox.grab();
Bool reconf = False;
@ -207,7 +204,7 @@ void Slit::removeClient(Window w, Bool remap) {
if (reconf) reconfigure();
openbox->ungrab();
openbox.ungrab();
}
@ -217,10 +214,10 @@ void Slit::reconfigure(void) {
LinkedListIterator<SlitClient> it(clientList);
SlitClient *client;
switch (screen->getSlitDirection()) {
switch (screen.getSlitDirection()) {
case Vertical:
for (client = it.current(); client; it++, client = it.current()) {
frame.height += client->height + screen->getBevelWidth();
frame.height += client->height + screen.getBevelWidth();
if (frame.width < client->width)
frame.width = client->width;
@ -229,18 +226,18 @@ void Slit::reconfigure(void) {
if (frame.width < 1)
frame.width = 1;
else
frame.width += (screen->getBevelWidth() * 2);
frame.width += (screen.getBevelWidth() * 2);
if (frame.height < 1)
frame.height = 1;
else
frame.height += screen->getBevelWidth();
frame.height += screen.getBevelWidth();
break;
case Horizontal:
for (client = it.current(); client; it++, client = it.current()) {
frame.width += client->width + screen->getBevelWidth();
frame.width += client->width + screen.getBevelWidth();
if (frame.height < client->height)
frame.height = client->height;
@ -249,21 +246,21 @@ void Slit::reconfigure(void) {
if (frame.width < 1)
frame.width = 1;
else
frame.width += screen->getBevelWidth();
frame.width += screen.getBevelWidth();
if (frame.height < 1)
frame.height = 1;
else
frame.height += (screen->getBevelWidth() * 2);
frame.height += (screen.getBevelWidth() * 2);
break;
}
reposition();
XSetWindowBorderWidth(display ,frame.window, screen->getBorderWidth());
XSetWindowBorderWidth(display ,frame.window, screen.getBorderWidth());
XSetWindowBorder(display, frame.window,
screen->getBorderColor()->getPixel());
screen.getBorderColor()->getPixel());
if (! clientList->count())
XUnmapWindow(display, frame.window);
@ -271,8 +268,8 @@ void Slit::reconfigure(void) {
XMapWindow(display, frame.window);
Pixmap tmp = frame.pixmap;
BImageControl *image_ctrl = screen->getImageControl();
BTexture *texture = &(screen->getToolbarStyle()->toolbar);
BImageControl *image_ctrl = screen.getImageControl();
BTexture *texture = &(screen.getToolbarStyle()->toolbar);
if (texture->getTexture() == (BImage_Flat | BImage_Solid)) {
frame.pixmap = None;
XSetWindowBackground(display, frame.window,
@ -288,10 +285,10 @@ void Slit::reconfigure(void) {
int x, y;
it.reset();
switch (screen->getSlitDirection()) {
switch (screen.getSlitDirection()) {
case Vertical:
x = 0;
y = screen->getBevelWidth();
y = screen.getBevelWidth();
for (client = it.current(); client; it++, client = it.current()) {
x = (frame.width - client->width) / 2;
@ -320,13 +317,13 @@ void Slit::reconfigure(void) {
XSendEvent(display, client->window, False, StructureNotifyMask, &event);
y += client->height + screen->getBevelWidth();
y += client->height + screen.getBevelWidth();
}
break;
case Horizontal:
x = screen->getBevelWidth();
x = screen.getBevelWidth();
y = 0;
for (client = it.current(); client; it++, client = it.current()) {
@ -356,7 +353,7 @@ void Slit::reconfigure(void) {
XSendEvent(display, client->window, False, StructureNotifyMask, &event);
x += client->width + screen->getBevelWidth();
x += client->width + screen.getBevelWidth();
}
break;
@ -368,120 +365,120 @@ void Slit::reconfigure(void) {
void Slit::reposition(void) {
// place the slit in the appropriate place
switch (screen->getSlitPlacement()) {
switch (screen.getSlitPlacement()) {
case TopLeft:
frame.x = 0;
frame.y = 0;
if (screen->getSlitDirection() == Vertical) {
frame.x_hidden = screen->getBevelWidth() - screen->getBorderWidth()
if (screen.getSlitDirection() == Vertical) {
frame.x_hidden = screen.getBevelWidth() - screen.getBorderWidth()
- frame.width;
frame.y_hidden = 0;
} else {
frame.x_hidden = 0;
frame.y_hidden = screen->getBevelWidth() - screen->getBorderWidth()
frame.y_hidden = screen.getBevelWidth() - screen.getBorderWidth()
- frame.height;
}
break;
case CenterLeft:
frame.x = 0;
frame.y = (screen->getHeight() - frame.height) / 2;
frame.x_hidden = screen->getBevelWidth() - screen->getBorderWidth()
frame.y = (screen.getHeight() - frame.height) / 2;
frame.x_hidden = screen.getBevelWidth() - screen.getBorderWidth()
- frame.width;
frame.y_hidden = frame.y;
break;
case BottomLeft:
frame.x = 0;
frame.y = screen->getHeight() - frame.height
- (screen->getBorderWidth() * 2);
if (screen->getSlitDirection() == Vertical) {
frame.x_hidden = screen->getBevelWidth() - screen->getBorderWidth()
frame.y = screen.getHeight() - frame.height
- (screen.getBorderWidth() * 2);
if (screen.getSlitDirection() == Vertical) {
frame.x_hidden = screen.getBevelWidth() - screen.getBorderWidth()
- frame.width;
frame.y_hidden = frame.y;
} else {
frame.x_hidden = 0;
frame.y_hidden = screen->getHeight() - screen->getBevelWidth()
- screen->getBorderWidth();
frame.y_hidden = screen.getHeight() - screen.getBevelWidth()
- screen.getBorderWidth();
}
break;
case TopCenter:
frame.x = (screen->getWidth() - frame.width) / 2;
frame.x = (screen.getWidth() - frame.width) / 2;
frame.y = 0;
frame.x_hidden = frame.x;
frame.y_hidden = screen->getBevelWidth() - screen->getBorderWidth()
frame.y_hidden = screen.getBevelWidth() - screen.getBorderWidth()
- frame.height;
break;
case BottomCenter:
frame.x = (screen->getWidth() - frame.width) / 2;
frame.y = screen->getHeight() - frame.height
- (screen->getBorderWidth() * 2);
frame.x = (screen.getWidth() - frame.width) / 2;
frame.y = screen.getHeight() - frame.height
- (screen.getBorderWidth() * 2);
frame.x_hidden = frame.x;
frame.y_hidden = screen->getHeight() - screen->getBevelWidth()
- screen->getBorderWidth();
frame.y_hidden = screen.getHeight() - screen.getBevelWidth()
- screen.getBorderWidth();
break;
case TopRight:
frame.x = screen->getWidth() - frame.width
- (screen->getBorderWidth() * 2);
frame.x = screen.getWidth() - frame.width
- (screen.getBorderWidth() * 2);
frame.y = 0;
if (screen->getSlitDirection() == Vertical) {
frame.x_hidden = screen->getWidth() - screen->getBevelWidth()
- screen->getBorderWidth();
if (screen.getSlitDirection() == Vertical) {
frame.x_hidden = screen.getWidth() - screen.getBevelWidth()
- screen.getBorderWidth();
frame.y_hidden = 0;
} else {
frame.x_hidden = frame.x;
frame.y_hidden = screen->getBevelWidth() - screen->getBorderWidth()
frame.y_hidden = screen.getBevelWidth() - screen.getBorderWidth()
- frame.height;
}
break;
case CenterRight:
default:
frame.x = screen->getWidth() - frame.width
- (screen->getBorderWidth() * 2);
frame.y = (screen->getHeight() - frame.height) / 2;
frame.x_hidden = screen->getWidth() - screen->getBevelWidth()
- screen->getBorderWidth();
frame.x = screen.getWidth() - frame.width
- (screen.getBorderWidth() * 2);
frame.y = (screen.getHeight() - frame.height) / 2;
frame.x_hidden = screen.getWidth() - screen.getBevelWidth()
- screen.getBorderWidth();
frame.y_hidden = frame.y;
break;
case BottomRight:
frame.x = screen->getWidth() - frame.width
- (screen->getBorderWidth() * 2);
frame.y = screen->getHeight() - frame.height
- (screen->getBorderWidth() * 2);
if (screen->getSlitDirection() == Vertical) {
frame.x_hidden = screen->getWidth() - screen->getBevelWidth()
- screen->getBorderWidth();
frame.x = screen.getWidth() - frame.width
- (screen.getBorderWidth() * 2);
frame.y = screen.getHeight() - frame.height
- (screen.getBorderWidth() * 2);
if (screen.getSlitDirection() == Vertical) {
frame.x_hidden = screen.getWidth() - screen.getBevelWidth()
- screen.getBorderWidth();
frame.y_hidden = frame.y;
} else {
frame.x_hidden = frame.x;
frame.y_hidden = screen->getHeight() - screen->getBevelWidth()
- screen->getBorderWidth();
frame.y_hidden = screen.getHeight() - screen.getBevelWidth()
- screen.getBorderWidth();
}
break;
}
Toolbar *tbar = screen->getToolbar();
int sw = frame.width + (screen->getBorderWidth() * 2),
sh = frame.height + (screen->getBorderWidth() * 2),
tw = tbar->getWidth() + screen->getBorderWidth(),
th = tbar->getHeight() + screen->getBorderWidth();
Toolbar *tbar = screen.getToolbar();
int sw = frame.width + (screen.getBorderWidth() * 2),
sh = frame.height + (screen.getBorderWidth() * 2),
tw = tbar->getWidth() + screen.getBorderWidth(),
th = tbar->getHeight() + screen.getBorderWidth();
if (tbar->getX() < frame.x + sw && tbar->getX() + tw > frame.x &&
tbar->getY() < frame.y + sh && tbar->getY() + th > frame.y) {
if (frame.y < th) {
frame.y += tbar->getExposedHeight();
if (screen->getSlitDirection() == Vertical)
if (screen.getSlitDirection() == Vertical)
frame.y_hidden += tbar->getExposedHeight();
else
frame.y_hidden = frame.y;
} else {
frame.y -= tbar->getExposedHeight();
if (screen->getSlitDirection() == Vertical)
if (screen.getSlitDirection() == Vertical)
frame.y_hidden -= tbar->getExposedHeight();
else
frame.y_hidden = frame.y;
@ -508,7 +505,7 @@ void Slit::buttonPressEvent(XButtonEvent *e) {
if (e->button == Button1 && (! on_top)) {
Window w[1] = { frame.window };
screen->raiseWindows(w, 1);
screen.raiseWindows(w, 1);
} else if (e->button == Button2 && (! on_top)) {
XLowerWindow(display, frame.window);
} else if (e->button == Button3) {
@ -520,13 +517,13 @@ void Slit::buttonPressEvent(XButtonEvent *e) {
if (x < 0)
x = 0;
else if (x + slitmenu->getWidth() > screen->getWidth())
x = screen->getWidth() - slitmenu->getWidth();
else if (x + slitmenu->getWidth() > screen.getWidth())
x = screen.getWidth() - slitmenu->getWidth();
if (y < 0)
y = 0;
else if (y + slitmenu->getHeight() > screen->getHeight())
y = screen->getHeight() - slitmenu->getHeight();
else if (y + slitmenu->getHeight() > screen.getHeight())
y = screen.getHeight() - slitmenu->getHeight();
slitmenu->move(x, y);
slitmenu->show();
@ -562,9 +559,9 @@ void Slit::leaveNotifyEvent(XCrossingEvent *) {
void Slit::configureRequestEvent(XConfigureRequestEvent *e) {
openbox->grab();
openbox.grab();
if (openbox->validateWindow(e->window)) {
if (openbox.validateWindow(e->window)) {
Bool reconf = False;
XWindowChanges xwc;
@ -596,7 +593,7 @@ void Slit::configureRequestEvent(XConfigureRequestEvent *e) {
}
openbox->ungrab();
openbox.ungrab();
}
@ -609,7 +606,7 @@ void Slit::timeout(void) {
}
Slitmenu::Slitmenu(Slit &sl) : Basemenu(*sl.screen), slit(sl) {
Slitmenu::Slitmenu(Slit &sl) : Basemenu(sl.screen), slit(sl) {
setLabel(i18n->getMessage(SlitSet, SlitSlitTitle, "Slit"));
setInternalMenu();
@ -649,7 +646,7 @@ void Slitmenu::itemSelected(int button, int index) {
slit.on_top = change;
setItemSelected(2, change);
if (slit.isOnTop()) slit.screen->raiseWindows((Window *) 0, 0);
if (slit.isOnTop()) slit.screen.raiseWindows((Window *) 0, 0);
break;
}
@ -680,7 +677,7 @@ void Slitmenu::reconfigure(void) {
Slitmenu::Directionmenu::Directionmenu(Slitmenu &sm)
: Basemenu(*sm.slit.screen), slitmenu(sm) {
: Basemenu(sm.slit.screen), slitmenu(sm) {
setLabel(i18n->getMessage(SlitSet, SlitSlitDirection, "Slit Direction"));
setInternalMenu();
@ -691,7 +688,7 @@ Slitmenu::Directionmenu::Directionmenu(Slitmenu &sm)
update();
if (sm.slit.screen->getSlitDirection() == Slit::Horizontal)
if (sm.slit.screen.getSlitDirection() == Slit::Horizontal)
setItemSelected(0, True);
else
setItemSelected(1, True);
@ -705,7 +702,7 @@ void Slitmenu::Directionmenu::itemSelected(int button, int index) {
BasemenuItem *item = find(index);
if (! item) return;
slitmenu.slit.screen->saveSlitDirection(item->function());
slitmenu.slit.screen.saveSlitDirection(item->function());
if (item->function() == Slit::Horizontal) {
setItemSelected(0, True);
@ -721,7 +718,7 @@ void Slitmenu::Directionmenu::itemSelected(int button, int index) {
Slitmenu::Placementmenu::Placementmenu(Slitmenu &sm)
: Basemenu(*sm.slit.screen), slitmenu(sm) {
: Basemenu(sm.slit.screen), slitmenu(sm) {
setLabel(i18n->getMessage(SlitSet, SlitSlitPlacement, "Slit Placement"));
setMinimumSublevels(3);
@ -759,7 +756,7 @@ void Slitmenu::Placementmenu::itemSelected(int button, int index) {
BasemenuItem *item = find(index);
if (! (item && item->function())) return;
slitmenu.slit.screen->saveSlitPlacement(item->function());
slitmenu.slit.screen.saveSlitPlacement(item->function());
hide();
slitmenu.slit.reconfigure();
}

View file

@ -96,8 +96,8 @@ private:
Bool on_top, hidden, do_auto_hide;
Display *display;
Openbox *openbox;
BScreen *screen;
Openbox &openbox;
BScreen &screen;
BTimer *timer;
LinkedList<SlitClient> *clientList;
@ -117,7 +117,7 @@ private:
public:
Slit(BScreen *);
Slit(BScreen &);
virtual ~Slit();
inline const Bool &isOnTop(void) const { return on_top; }

View file

@ -64,26 +64,23 @@
#endif // TIME_WITH_SYS_TIME
Toolbar::Toolbar(BScreen *scrn) {
screen = scrn;
openbox = screen->getOpenbox();
Toolbar::Toolbar(BScreen &scrn) : screen(scrn), openbox(scrn.getOpenbox()) {
// get the clock updating every minute
clock_timer = new BTimer(*openbox, *this);
clock_timer = new BTimer(openbox, *this);
timeval now;
gettimeofday(&now, 0);
clock_timer->setTimeout((60 - (now.tv_sec % 60)) * 1000);
clock_timer->start();
hide_handler.toolbar = this;
hide_timer = new BTimer(*openbox, hide_handler);
hide_timer->setTimeout(openbox->getAutoRaiseDelay());
hide_timer = new BTimer(openbox, hide_handler);
hide_timer->setTimeout(openbox.getAutoRaiseDelay());
hide_timer->fireOnce(True);
image_ctrl = screen->getImageControl();
image_ctrl = screen.getImageControl();
on_top = screen->isToolbarOnTop();
hidden = do_auto_hide = screen->doToolbarAutoHide();
on_top = screen.isToolbarOnTop();
hidden = do_auto_hide = screen.doToolbarAutoHide();
editing = False;
new_workspace_name = (char *) 0;
@ -92,61 +89,61 @@ Toolbar::Toolbar(BScreen *scrn) {
toolbarmenu = new Toolbarmenu(*this);
display = openbox->getXDisplay();
display = openbox.getXDisplay();
XSetWindowAttributes attrib;
unsigned long create_mask = CWBackPixmap | CWBackPixel | CWBorderPixel |
CWColormap | CWOverrideRedirect | CWEventMask;
attrib.background_pixmap = None;
attrib.background_pixel = attrib.border_pixel =
screen->getBorderColor()->getPixel();
attrib.colormap = screen->getColormap();
screen.getBorderColor()->getPixel();
attrib.colormap = screen.getColormap();
attrib.override_redirect = True;
attrib.event_mask = ButtonPressMask | ButtonReleaseMask |
EnterWindowMask | LeaveWindowMask;
frame.window =
XCreateWindow(display, screen->getRootWindow(), 0, 0, 1, 1, 0,
screen->getDepth(), InputOutput, screen->getVisual(),
XCreateWindow(display, screen.getRootWindow(), 0, 0, 1, 1, 0,
screen.getDepth(), InputOutput, screen.getVisual(),
create_mask, &attrib);
openbox->saveToolbarSearch(frame.window, this);
openbox.saveToolbarSearch(frame.window, this);
attrib.event_mask = ButtonPressMask | ButtonReleaseMask | ExposureMask |
KeyPressMask | EnterWindowMask;
frame.workspace_label =
XCreateWindow(display, frame.window, 0, 0, 1, 1, 0, screen->getDepth(),
InputOutput, screen->getVisual(), create_mask, &attrib);
openbox->saveToolbarSearch(frame.workspace_label, this);
XCreateWindow(display, frame.window, 0, 0, 1, 1, 0, screen.getDepth(),
InputOutput, screen.getVisual(), create_mask, &attrib);
openbox.saveToolbarSearch(frame.workspace_label, this);
frame.window_label =
XCreateWindow(display, frame.window, 0, 0, 1, 1, 0, screen->getDepth(),
InputOutput, screen->getVisual(), create_mask, &attrib);
openbox->saveToolbarSearch(frame.window_label, this);
XCreateWindow(display, frame.window, 0, 0, 1, 1, 0, screen.getDepth(),
InputOutput, screen.getVisual(), create_mask, &attrib);
openbox.saveToolbarSearch(frame.window_label, this);
frame.clock =
XCreateWindow(display, frame.window, 0, 0, 1, 1, 0, screen->getDepth(),
InputOutput, screen->getVisual(), create_mask, &attrib);
openbox->saveToolbarSearch(frame.clock, this);
XCreateWindow(display, frame.window, 0, 0, 1, 1, 0, screen.getDepth(),
InputOutput, screen.getVisual(), create_mask, &attrib);
openbox.saveToolbarSearch(frame.clock, this);
frame.psbutton =
XCreateWindow(display ,frame.window, 0, 0, 1, 1, 0, screen->getDepth(),
InputOutput, screen->getVisual(), create_mask, &attrib);
openbox->saveToolbarSearch(frame.psbutton, this);
XCreateWindow(display ,frame.window, 0, 0, 1, 1, 0, screen.getDepth(),
InputOutput, screen.getVisual(), create_mask, &attrib);
openbox.saveToolbarSearch(frame.psbutton, this);
frame.nsbutton =
XCreateWindow(display ,frame.window, 0, 0, 1, 1, 0, screen->getDepth(),
InputOutput, screen->getVisual(), create_mask, &attrib);
openbox->saveToolbarSearch(frame.nsbutton, this);
XCreateWindow(display ,frame.window, 0, 0, 1, 1, 0, screen.getDepth(),
InputOutput, screen.getVisual(), create_mask, &attrib);
openbox.saveToolbarSearch(frame.nsbutton, this);
frame.pwbutton =
XCreateWindow(display ,frame.window, 0, 0, 1, 1, 0, screen->getDepth(),
InputOutput, screen->getVisual(), create_mask, &attrib);
openbox->saveToolbarSearch(frame.pwbutton, this);
XCreateWindow(display ,frame.window, 0, 0, 1, 1, 0, screen.getDepth(),
InputOutput, screen.getVisual(), create_mask, &attrib);
openbox.saveToolbarSearch(frame.pwbutton, this);
frame.nwbutton =
XCreateWindow(display ,frame.window, 0, 0, 1, 1, 0, screen->getDepth(),
InputOutput, screen->getVisual(), create_mask, &attrib);
openbox->saveToolbarSearch(frame.nwbutton, this);
XCreateWindow(display ,frame.window, 0, 0, 1, 1, 0, screen.getDepth(),
InputOutput, screen.getVisual(), create_mask, &attrib);
openbox.saveToolbarSearch(frame.nwbutton, this);
frame.base = frame.label = frame.wlabel = frame.clk = frame.button =
frame.pbutton = None;
@ -168,14 +165,14 @@ Toolbar::~Toolbar(void) {
if (frame.button) image_ctrl->removeImage(frame.button);
if (frame.pbutton) image_ctrl->removeImage(frame.pbutton);
openbox->removeToolbarSearch(frame.window);
openbox->removeToolbarSearch(frame.workspace_label);
openbox->removeToolbarSearch(frame.window_label);
openbox->removeToolbarSearch(frame.clock);
openbox->removeToolbarSearch(frame.psbutton);
openbox->removeToolbarSearch(frame.nsbutton);
openbox->removeToolbarSearch(frame.pwbutton);
openbox->removeToolbarSearch(frame.nwbutton);
openbox.removeToolbarSearch(frame.window);
openbox.removeToolbarSearch(frame.workspace_label);
openbox.removeToolbarSearch(frame.window_label);
openbox.removeToolbarSearch(frame.clock);
openbox.removeToolbarSearch(frame.psbutton);
openbox.removeToolbarSearch(frame.nsbutton);
openbox.removeToolbarSearch(frame.pwbutton);
openbox.removeToolbarSearch(frame.nwbutton);
XDestroyWindow(display, frame.workspace_label);
XDestroyWindow(display, frame.window_label);
@ -190,73 +187,73 @@ Toolbar::~Toolbar(void) {
void Toolbar::reconfigure(void) {
frame.bevel_w = screen->getBevelWidth();
frame.width = screen->getWidth() * screen->getToolbarWidthPercent() / 100;
frame.bevel_w = screen.getBevelWidth();
frame.width = screen.getWidth() * screen.getToolbarWidthPercent() / 100;
if (i18n->multibyte())
frame.height =
screen->getToolbarStyle()->fontset_extents->max_ink_extent.height;
screen.getToolbarStyle()->fontset_extents->max_ink_extent.height;
else
frame.height = screen->getToolbarStyle()->font->ascent +
screen->getToolbarStyle()->font->descent;
frame.height = screen.getToolbarStyle()->font->ascent +
screen.getToolbarStyle()->font->descent;
frame.button_w = frame.height;
frame.height += 2;
frame.label_h = frame.height;
frame.height += (frame.bevel_w * 2);
switch (screen->getToolbarPlacement()) {
switch (screen.getToolbarPlacement()) {
case TopLeft:
frame.x = 0;
frame.y = 0;
frame.x_hidden = 0;
frame.y_hidden = screen->getBevelWidth() - screen->getBorderWidth()
frame.y_hidden = screen.getBevelWidth() - screen.getBorderWidth()
- frame.height;
break;
case BottomLeft:
frame.x = 0;
frame.y = screen->getHeight() - frame.height
- (screen->getBorderWidth() * 2);
frame.y = screen.getHeight() - frame.height
- (screen.getBorderWidth() * 2);
frame.x_hidden = 0;
frame.y_hidden = screen->getHeight() - screen->getBevelWidth()
- screen->getBorderWidth();
frame.y_hidden = screen.getHeight() - screen.getBevelWidth()
- screen.getBorderWidth();
break;
case TopCenter:
frame.x = (screen->getWidth() - frame.width) / 2;
frame.x = (screen.getWidth() - frame.width) / 2;
frame.y = 0;
frame.x_hidden = frame.x;
frame.y_hidden = screen->getBevelWidth() - screen->getBorderWidth()
frame.y_hidden = screen.getBevelWidth() - screen.getBorderWidth()
- frame.height;
break;
case BottomCenter:
default:
frame.x = (screen->getWidth() - frame.width) / 2;
frame.y = screen->getHeight() - frame.height
- (screen->getBorderWidth() * 2);
frame.x = (screen.getWidth() - frame.width) / 2;
frame.y = screen.getHeight() - frame.height
- (screen.getBorderWidth() * 2);
frame.x_hidden = frame.x;
frame.y_hidden = screen->getHeight() - screen->getBevelWidth()
- screen->getBorderWidth();
frame.y_hidden = screen.getHeight() - screen.getBevelWidth()
- screen.getBorderWidth();
break;
case TopRight:
frame.x = screen->getWidth() - frame.width
- (screen->getBorderWidth() * 2);
frame.x = screen.getWidth() - frame.width
- (screen.getBorderWidth() * 2);
frame.y = 0;
frame.x_hidden = frame.x;
frame.y_hidden = screen->getBevelWidth() - screen->getBorderWidth()
frame.y_hidden = screen.getBevelWidth() - screen.getBorderWidth()
- frame.height;
break;
case BottomRight:
frame.x = screen->getWidth() - frame.width
- (screen->getBorderWidth() * 2);
frame.y = screen->getHeight() - frame.height
- (screen->getBorderWidth() * 2);
frame.x = screen.getWidth() - frame.width
- (screen.getBorderWidth() * 2);
frame.y = screen.getHeight() - frame.height
- (screen.getBorderWidth() * 2);
frame.x_hidden = frame.x;
frame.y_hidden = screen->getHeight() - screen->getBevelWidth()
- screen->getBorderWidth();
frame.y_hidden = screen.getHeight() - screen.getBevelWidth()
- screen.getBorderWidth();
break;
}
@ -268,31 +265,31 @@ void Toolbar::reconfigure(void) {
tt = localtime(&ttmp);
if (tt) {
char t[1025], *time_string = (char *) 0;
int len = strftime(t, 1024, screen->getStrftimeFormat(), tt);
int len = strftime(t, 1024, screen.getStrftimeFormat(), tt);
t[len++-1] = ' '; // add a space to the string for padding
t[len] = '\0';
if (i18n->multibyte()) {
XRectangle ink, logical;
XmbTextExtents(screen->getToolbarStyle()->fontset, t, len, &ink,
XmbTextExtents(screen.getToolbarStyle()->fontset, t, len, &ink,
&logical);
frame.clock_w = logical.width;
// ben's additional solution to pad some space beside the numbers
//frame.clock_w +=
// screen->getToolbarStyle()->fontset_extents->max_logical_extent.width *
// screen.getToolbarStyle()->fontset_extents->max_logical_extent.width *
// 4;
// brad's solution, which is currently buggy, too big
//frame.clock_w =
// screen->getToolbarStyle()->fontset_extents->max_logical_extent.width
// screen.getToolbarStyle()->fontset_extents->max_logical_extent.width
// * len;
} else {
frame.clock_w = XTextWidth(screen->getToolbarStyle()->font, t, len);
frame.clock_w = XTextWidth(screen.getToolbarStyle()->font, t, len);
// ben's additional solution to pad some space beside the numbers
//frame.clock_w += screen->getToolbarStyle()->font->max_bounds.width * 4;
//frame.clock_w += screen.getToolbarStyle()->font->max_bounds.width * 4;
// brad's solution again, too big
//frame.clock_w = screen->getToolbarStyle()->font->max_bounds.width * len;
//frame.clock_w = screen.getToolbarStyle()->font->max_bounds.width * len;
}
frame.clock_w += (frame.bevel_w * 4);
@ -305,7 +302,7 @@ void Toolbar::reconfigure(void) {
}
#else // !HAVE_STRFTIME
frame.clock_w =
XTextWidth(screen->getToolbarStyle()->font,
XTextWidth(screen.getToolbarStyle()->font,
i18n->getMessage(ToolbarSet, ToolbarNoStrftimeLength,
"00:00000"),
strlen(i18n->getMessage(ToolbarSet, ToolbarNoStrftimeLength,
@ -316,18 +313,18 @@ void Toolbar::reconfigure(void) {
unsigned int w = 0;
frame.workspace_label_w = 0;
for (i = 0; i < screen->getWorkspaceCount(); i++) {
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()),
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 = XTextWidth(screen.getToolbarStyle()->font,
screen.getWorkspace(i)->getName(),
strlen(screen.getWorkspace(i)->getName()));
}
w += (frame.bevel_w * 4);
@ -376,7 +373,7 @@ void Toolbar::reconfigure(void) {
frame.label_h);
Pixmap tmp = frame.base;
BTexture *texture = &(screen->getToolbarStyle()->toolbar);
BTexture *texture = &(screen.getToolbarStyle()->toolbar);
if (texture->getTexture() == (BImage_Flat | BImage_Solid)) {
frame.base = None;
XSetWindowBackground(display, frame.window,
@ -389,7 +386,7 @@ void Toolbar::reconfigure(void) {
if (tmp) image_ctrl->removeImage(tmp);
tmp = frame.label;
texture = &(screen->getToolbarStyle()->window);
texture = &(screen.getToolbarStyle()->window);
if (texture->getTexture() == (BImage_Flat | BImage_Solid)) {
frame.label = None;
XSetWindowBackground(display, frame.window_label,
@ -402,7 +399,7 @@ void Toolbar::reconfigure(void) {
if (tmp) image_ctrl->removeImage(tmp);
tmp = frame.wlabel;
texture = &(screen->getToolbarStyle()->label);
texture = &(screen.getToolbarStyle()->label);
if (texture->getTexture() == (BImage_Flat | BImage_Solid)) {
frame.wlabel = None;
XSetWindowBackground(display, frame.workspace_label,
@ -415,7 +412,7 @@ void Toolbar::reconfigure(void) {
if (tmp) image_ctrl->removeImage(tmp);
tmp = frame.clk;
texture = &(screen->getToolbarStyle()->clock);
texture = &(screen.getToolbarStyle()->clock);
if (texture->getTexture() == (BImage_Flat | BImage_Solid)) {
frame.clk = None;
XSetWindowBackground(display, frame.clock,
@ -428,7 +425,7 @@ void Toolbar::reconfigure(void) {
if (tmp) image_ctrl->removeImage(tmp);
tmp = frame.button;
texture = &(screen->getToolbarStyle()->button);
texture = &(screen.getToolbarStyle()->button);
if (texture->getTexture() == (BImage_Flat | BImage_Solid)) {
frame.button = None;
@ -449,7 +446,7 @@ void Toolbar::reconfigure(void) {
if (tmp) image_ctrl->removeImage(tmp);
tmp = frame.pbutton;
texture = &(screen->getToolbarStyle()->pressed);
texture = &(screen.getToolbarStyle()->pressed);
if (texture->getTexture() == (BImage_Flat | BImage_Solid)) {
frame.pbutton = None;
frame.pbutton_pixel = texture->getColor()->getPixel();
@ -460,8 +457,8 @@ void Toolbar::reconfigure(void) {
if (tmp) image_ctrl->removeImage(tmp);
XSetWindowBorder(display, frame.window,
screen->getBorderColor()->getPixel());
XSetWindowBorderWidth(display, frame.window, screen->getBorderWidth());
screen.getBorderColor()->getPixel());
XSetWindowBorderWidth(display, frame.window, screen.getBorderWidth());
XClearWindow(display, frame.window);
XClearWindow(display, frame.workspace_label);
@ -505,13 +502,13 @@ void Toolbar::checkClock(Bool redraw, Bool date) {
if (redraw) {
#ifdef HAVE_STRFTIME
char t[1024];
if (! strftime(t, 1024, screen->getStrftimeFormat(), tt))
if (! strftime(t, 1024, screen.getStrftimeFormat(), tt))
return;
#else // !HAVE_STRFTIME
char t[9];
if (date) {
// format the date... with special consideration for y2k ;)
if (screen->getDateFormat() == Openbox::B_EuropeanDate)
if (screen.getDateFormat() == Openbox::B_EuropeanDate)
sprintf(t, 18n->getMessage(ToolbarSet, ToolbarNoStrftimeDateFormatEu,
"%02d.%02d.%02d"),
tt->tm_mday, tt->tm_mon + 1,
@ -522,7 +519,7 @@ void Toolbar::checkClock(Bool redraw, Bool date) {
tt->tm_mon + 1, tt->tm_mday,
(tt->tm_year >= 100) ? tt->tm_year - 100 : tt->tm_year);
} else {
if (screen->isClock24Hour())
if (screen.isClock24Hour())
sprintf(t, i18n->getMessage(ToolbarSet, ToolbarNoStrftimeTimeFormat24,
" %02d:%02d "),
frame.hour, frame.minute);
@ -544,11 +541,11 @@ void Toolbar::checkClock(Bool redraw, Bool date) {
if (i18n->multibyte()) {
XRectangle ink, logical;
XmbTextExtents(screen->getToolbarStyle()->fontset,
XmbTextExtents(screen.getToolbarStyle()->fontset,
t, dlen, &ink, &logical);
l = logical.width;
} else {
l = XTextWidth(screen->getToolbarStyle()->font, t, dlen);
l = XTextWidth(screen.getToolbarStyle()->font, t, dlen);
}
l += (frame.bevel_w * 4);
@ -557,11 +554,11 @@ void Toolbar::checkClock(Bool redraw, Bool date) {
for (; dlen >= 0; dlen--) {
if (i18n->multibyte()) {
XRectangle ink, logical;
XmbTextExtents(screen->getToolbarStyle()->fontset,
XmbTextExtents(screen.getToolbarStyle()->fontset,
t, dlen, &ink, &logical);
l = logical.width;
} else {
l = XTextWidth(screen->getToolbarStyle()->font, t, dlen);
l = XTextWidth(screen.getToolbarStyle()->font, t, dlen);
}
l+= (frame.bevel_w * 4);
@ -569,7 +566,7 @@ void Toolbar::checkClock(Bool redraw, Bool date) {
break;
}
}
switch (screen->getToolbarStyle()->justify) {
switch (screen.getToolbarStyle()->justify) {
case BScreen::RightJustify:
dx += frame.clock_w - l;
break;
@ -579,7 +576,7 @@ void Toolbar::checkClock(Bool redraw, Bool date) {
break;
}
ToolbarStyle *style = screen->getToolbarStyle();
ToolbarStyle *style = screen.getToolbarStyle();
if (i18n->multibyte())
XmbDrawString(display, frame.clock, style->fontset, style->c_text_gc,
dx, (1 - style->fontset_extents->max_ink_extent.y),
@ -592,23 +589,23 @@ void Toolbar::checkClock(Bool redraw, Bool date) {
void Toolbar::redrawWindowLabel(Bool redraw) {
if (screen->getOpenbox()->getFocusedWindow()) {
if (screen.getOpenbox().getFocusedWindow()) {
if (redraw)
XClearWindow(display, frame.window_label);
OpenboxWindow *foc = screen->getOpenbox()->getFocusedWindow();
if (foc->getScreen() != screen) return;
OpenboxWindow *foc = screen.getOpenbox().getFocusedWindow();
if (foc->getScreen() != &screen) return;
int dx = (frame.bevel_w * 2), dlen = strlen(*foc->getTitle());
unsigned int l;
if (i18n->multibyte()) {
XRectangle ink, logical;
XmbTextExtents(screen->getToolbarStyle()->fontset, *foc->getTitle(),
XmbTextExtents(screen.getToolbarStyle()->fontset, *foc->getTitle(),
dlen, &ink, &logical);
l = logical.width;
} else {
l = XTextWidth(screen->getToolbarStyle()->font, *foc->getTitle(), dlen);
l = XTextWidth(screen.getToolbarStyle()->font, *foc->getTitle(), dlen);
}
l += (frame.bevel_w * 4);
@ -616,11 +613,11 @@ void Toolbar::redrawWindowLabel(Bool redraw) {
for (; dlen >= 0; dlen--) {
if (i18n->multibyte()) {
XRectangle ink, logical;
XmbTextExtents(screen->getToolbarStyle()->fontset,
XmbTextExtents(screen.getToolbarStyle()->fontset,
*foc->getTitle(), dlen, &ink, &logical);
l = logical.width;
} else {
l = XTextWidth(screen->getToolbarStyle()->font,
l = XTextWidth(screen.getToolbarStyle()->font,
*foc->getTitle(), dlen);
}
l += (frame.bevel_w * 4);
@ -629,7 +626,7 @@ void Toolbar::redrawWindowLabel(Bool redraw) {
break;
}
}
switch (screen->getToolbarStyle()->justify) {
switch (screen.getToolbarStyle()->justify) {
case BScreen::RightJustify:
dx += frame.window_label_w - l;
break;
@ -639,7 +636,7 @@ void Toolbar::redrawWindowLabel(Bool redraw) {
break;
}
ToolbarStyle *style = screen->getToolbarStyle();
ToolbarStyle *style = screen.getToolbarStyle();
if (i18n->multibyte())
XmbDrawString(display, frame.window_label, style->fontset,
style->w_text_gc, dx,
@ -655,23 +652,23 @@ void Toolbar::redrawWindowLabel(Bool redraw) {
void Toolbar::redrawWorkspaceLabel(Bool redraw) {
if (screen->getCurrentWorkspace()->getName()) {
if (screen.getCurrentWorkspace()->getName()) {
if (redraw)
XClearWindow(display, frame.workspace_label);
int dx = (frame.bevel_w * 2), dlen =
strlen(screen->getCurrentWorkspace()->getName());
strlen(screen.getCurrentWorkspace()->getName());
unsigned int l;
if (i18n->multibyte()) {
XRectangle ink, logical;
XmbTextExtents(screen->getToolbarStyle()->fontset,
screen->getCurrentWorkspace()->getName(), dlen,
XmbTextExtents(screen.getToolbarStyle()->fontset,
screen.getCurrentWorkspace()->getName(), dlen,
&ink, &logical);
l = logical.width;
} else {
l = XTextWidth(screen->getToolbarStyle()->font,
screen->getCurrentWorkspace()->getName(), dlen);
l = XTextWidth(screen.getToolbarStyle()->font,
screen.getCurrentWorkspace()->getName(), dlen);
}
l += (frame.bevel_w * 4);
@ -679,13 +676,13 @@ void Toolbar::redrawWorkspaceLabel(Bool redraw) {
for (; dlen >= 0; dlen--) {
if (i18n->multibyte()) {
XRectangle ink, logical;
XmbTextExtents(screen->getToolbarStyle()->fontset,
screen->getCurrentWorkspace()->getName(), dlen,
XmbTextExtents(screen.getToolbarStyle()->fontset,
screen.getCurrentWorkspace()->getName(), dlen,
&ink, &logical);
l = logical.width;
} else {
l = XTextWidth(screen->getWindowStyle()->font,
screen->getCurrentWorkspace()->getName(), dlen);
l = XTextWidth(screen.getWindowStyle()->font,
screen.getCurrentWorkspace()->getName(), dlen);
}
l += (frame.bevel_w * 4);
@ -693,7 +690,7 @@ void Toolbar::redrawWorkspaceLabel(Bool redraw) {
break;
}
}
switch (screen->getToolbarStyle()->justify) {
switch (screen.getToolbarStyle()->justify) {
case BScreen::RightJustify:
dx += frame.workspace_label_w - l;
break;
@ -703,16 +700,16 @@ void Toolbar::redrawWorkspaceLabel(Bool redraw) {
break;
}
ToolbarStyle *style = screen->getToolbarStyle();
ToolbarStyle *style = screen.getToolbarStyle();
if (i18n->multibyte())
XmbDrawString(display, frame.workspace_label, style->fontset,
style->l_text_gc, dx,
(1 - style->fontset_extents->max_ink_extent.y),
(char *) screen->getCurrentWorkspace()->getName(), dlen);
(char *) screen.getCurrentWorkspace()->getName(), dlen);
else
XDrawString(display, frame.workspace_label, style->l_text_gc, dx,
(style->font->ascent + 1),
(char *) screen->getCurrentWorkspace()->getName(), dlen);
(char *) screen.getCurrentWorkspace()->getName(), dlen);
}
}
@ -740,7 +737,7 @@ void Toolbar::redrawPrevWorkspaceButton(Bool pressed, Bool redraw) {
pts[1].x = 4; pts[1].y = 2;
pts[2].x = 0; pts[2].y = -4;
XFillPolygon(display, frame.psbutton, screen->getToolbarStyle()->b_pic_gc,
XFillPolygon(display, frame.psbutton, screen.getToolbarStyle()->b_pic_gc,
pts, 3, Convex, CoordModePrevious);
}
@ -768,7 +765,7 @@ void Toolbar::redrawNextWorkspaceButton(Bool pressed, Bool redraw) {
pts[1].x = 4; pts[1].y = 2;
pts[2].x = -4; pts[2].y = 2;
XFillPolygon(display, frame.nsbutton, screen->getToolbarStyle()->b_pic_gc,
XFillPolygon(display, frame.nsbutton, screen.getToolbarStyle()->b_pic_gc,
pts, 3, Convex, CoordModePrevious);
}
@ -796,7 +793,7 @@ void Toolbar::redrawPrevWindowButton(Bool pressed, Bool redraw) {
pts[1].x = 4; pts[1].y = 2;
pts[2].x = 0; pts[2].y = -4;
XFillPolygon(display, frame.pwbutton, screen->getToolbarStyle()->b_pic_gc,
XFillPolygon(display, frame.pwbutton, screen.getToolbarStyle()->b_pic_gc,
pts, 3, Convex, CoordModePrevious);
}
@ -824,7 +821,7 @@ void Toolbar::redrawNextWindowButton(Bool pressed, Bool redraw) {
pts[1].x = 4; pts[1].y = 2;
pts[2].x = -4; pts[2].y = 2;
XFillPolygon(display, frame.nwbutton, screen->getToolbarStyle()->b_pic_gc,
XFillPolygon(display, frame.nwbutton, screen.getToolbarStyle()->b_pic_gc,
pts, 3, Convex, CoordModePrevious);
}
@ -839,23 +836,23 @@ void Toolbar::edit(void) {
return;
XSetInputFocus(display, frame.workspace_label,
((screen->isSloppyFocus()) ? RevertToPointerRoot :
((screen.isSloppyFocus()) ? RevertToPointerRoot :
RevertToParent),
CurrentTime);
XClearWindow(display, frame.workspace_label);
openbox->setNoFocus(True);
if (openbox->getFocusedWindow())
openbox->getFocusedWindow()->setFocusFlag(False);
openbox.setNoFocus(True);
if (openbox.getFocusedWindow())
openbox.getFocusedWindow()->setFocusFlag(False);
XDrawRectangle(display, frame.workspace_label,
screen->getWindowStyle()->l_text_focus_gc,
screen.getWindowStyle()->l_text_focus_gc,
frame.workspace_label_w / 2, 0, 1,
frame.label_h - 1);
// change the background of the window to that of an active window label
Pixmap tmp = frame.wlabel;
BTexture *texture = &(screen->getWindowStyle()->l_focus);
BTexture *texture = &(screen.getWindowStyle()->l_focus);
if (texture->getTexture() == (BImage_Flat | BImage_Solid)) {
frame.wlabel = None;
XSetWindowBackground(display, frame.workspace_label,
@ -887,7 +884,7 @@ void Toolbar::buttonPressEvent(XButtonEvent *be) {
#endif // HAVE_STRFTIME
else if (! on_top) {
Window w[1] = { frame.window };
screen->raiseWindows(w, 1);
screen.raiseWindows(w, 1);
}
} else if (be->button == 2 && (! on_top)) {
XLowerWindow(display, frame.window);
@ -900,13 +897,13 @@ void Toolbar::buttonPressEvent(XButtonEvent *be) {
if (x < 0)
x = 0;
else if (x + toolbarmenu->getWidth() > screen->getWidth())
x = screen->getWidth() - toolbarmenu->getWidth();
else if (x + toolbarmenu->getWidth() > screen.getWidth())
x = screen.getWidth() - toolbarmenu->getWidth();
if (y < 0)
y = 0;
else if (y + toolbarmenu->getHeight() > screen->getHeight())
y = screen->getHeight() - toolbarmenu->getHeight();
else if (y + toolbarmenu->getHeight() > screen.getHeight())
y = screen.getHeight() - toolbarmenu->getHeight();
toolbarmenu->move(x, y);
toolbarmenu->show();
@ -924,36 +921,36 @@ void Toolbar::buttonReleaseEvent(XButtonEvent *re) {
if (re->x >= 0 && re->x < (signed) frame.button_w &&
re->y >= 0 && re->y < (signed) frame.button_w)
if (screen->getCurrentWorkspace()->getWorkspaceID() > 0)
screen->changeWorkspaceID(screen->getCurrentWorkspace()->
if (screen.getCurrentWorkspace()->getWorkspaceID() > 0)
screen.changeWorkspaceID(screen.getCurrentWorkspace()->
getWorkspaceID() - 1);
else
screen->changeWorkspaceID(screen->getWorkspaceCount() - 1);
screen.changeWorkspaceID(screen.getWorkspaceCount() - 1);
} else if (re->window == frame.nsbutton) {
redrawNextWorkspaceButton(False, True);
if (re->x >= 0 && re->x < (signed) frame.button_w &&
re->y >= 0 && re->y < (signed) frame.button_w)
if (screen->getCurrentWorkspace()->getWorkspaceID() <
screen->getWorkspaceCount() - 1)
screen->changeWorkspaceID(screen->getCurrentWorkspace()->
if (screen.getCurrentWorkspace()->getWorkspaceID() <
screen.getWorkspaceCount() - 1)
screen.changeWorkspaceID(screen.getCurrentWorkspace()->
getWorkspaceID() + 1);
else
screen->changeWorkspaceID(0);
screen.changeWorkspaceID(0);
} else if (re->window == frame.pwbutton) {
redrawPrevWindowButton(False, True);
if (re->x >= 0 && re->x < (signed) frame.button_w &&
re->y >= 0 && re->y < (signed) frame.button_w)
screen->prevFocus();
screen.prevFocus();
} else if (re->window == frame.nwbutton) {
redrawNextWindowButton(False, True);
if (re->x >= 0 && re->x < (signed) frame.button_w &&
re->y >= 0 && re->y < (signed) frame.button_w)
screen->nextFocus();
screen.nextFocus();
} else if (re->window == frame.window_label)
screen->raiseFocus();
screen.raiseFocus();
#ifndef HAVE_STRFTIME
else if (re->window == frame.clock) {
XClearWindow(display, frame.clock);
@ -1001,7 +998,7 @@ void Toolbar::exposeEvent(XExposeEvent *ee) {
void Toolbar::keyPressEvent(XKeyEvent *ke) {
if (ke->window == frame.workspace_label && editing) {
openbox->grab();
openbox.grab();
if (! new_workspace_name) {
new_workspace_name = new char[128];
@ -1020,10 +1017,10 @@ void Toolbar::keyPressEvent(XKeyEvent *ke) {
editing = False;
openbox->setNoFocus(False);
if (openbox->getFocusedWindow()) {
openbox->getFocusedWindow()->setInputFocus();
openbox->getFocusedWindow()->setFocusFlag(True);
openbox.setNoFocus(False);
if (openbox.getFocusedWindow()) {
openbox.getFocusedWindow()->setInputFocus();
openbox.getFocusedWindow()->setFocusFlag(True);
} else {
XSetInputFocus(display, PointerRoot, None, CurrentTime);
}
@ -1031,15 +1028,15 @@ void Toolbar::keyPressEvent(XKeyEvent *ke) {
// workspace name which causes serious problems, especially for the
// Openbox::LoadRC() method.
if (*new_workspace_name) {
screen->getCurrentWorkspace()->setName(new_workspace_name);
screen->getCurrentWorkspace()->getMenu()->hide();
screen->getWorkspacemenu()->
remove(screen->getCurrentWorkspace()->getWorkspaceID() + 2);
screen->getWorkspacemenu()->
insert(screen->getCurrentWorkspace()->getName(),
screen->getCurrentWorkspace()->getMenu(),
screen->getCurrentWorkspace()->getWorkspaceID() + 2);
screen->getWorkspacemenu()->update();
screen.getCurrentWorkspace()->setName(new_workspace_name);
screen.getCurrentWorkspace()->getMenu()->hide();
screen.getWorkspacemenu()->
remove(screen.getCurrentWorkspace()->getWorkspaceID() + 2);
screen.getWorkspacemenu()->
insert(screen.getCurrentWorkspace()->getName(),
screen.getCurrentWorkspace()->getMenu(),
screen.getCurrentWorkspace()->getWorkspaceID() + 2);
screen.getWorkspacemenu()->update();
}
delete [] new_workspace_name;
@ -1049,7 +1046,7 @@ void Toolbar::keyPressEvent(XKeyEvent *ke) {
// reset the background to that of the workspace label (its normal
// setting)
Pixmap tmp = frame.wlabel;
BTexture *texture = &(screen->getToolbarStyle()->label);
BTexture *texture = &(screen.getToolbarStyle()->label);
if (texture->getTexture() == (BImage_Flat | BImage_Solid)) {
frame.wlabel = None;
XSetWindowBackground(display, frame.workspace_label,
@ -1087,18 +1084,18 @@ void Toolbar::keyPressEvent(XKeyEvent *ke) {
if (i18n->multibyte()) {
XRectangle ink, logical;
XmbTextExtents(screen->getToolbarStyle()->fontset,
XmbTextExtents(screen.getToolbarStyle()->fontset,
new_workspace_name, l, &ink, &logical);
tw = logical.width;
} else {
tw = XTextWidth(screen->getToolbarStyle()->font,
tw = XTextWidth(screen.getToolbarStyle()->font,
new_workspace_name, l);
}
x = (frame.workspace_label_w - tw) / 2;
if (x < (signed) frame.bevel_w) x = frame.bevel_w;
WindowStyle *style = screen->getWindowStyle();
WindowStyle *style = screen.getWindowStyle();
if (i18n->multibyte())
XmbDrawString(display, frame.workspace_label, style->fontset,
style->l_text_focus_gc, x,
@ -1110,11 +1107,11 @@ void Toolbar::keyPressEvent(XKeyEvent *ke) {
new_workspace_name, l);
XDrawRectangle(display, frame.workspace_label,
screen->getWindowStyle()->l_text_focus_gc, x + tw, 0, 1,
screen.getWindowStyle()->l_text_focus_gc, x + tw, 0, 1,
frame.label_h - 1);
}
openbox->ungrab();
openbox.ungrab();
}
}
@ -1139,7 +1136,7 @@ void Toolbar::HideHandler::timeout(void) {
}
Toolbarmenu::Toolbarmenu(Toolbar &tb) : Basemenu(*tb.screen), toolbar(tb) {
Toolbarmenu::Toolbarmenu(Toolbar &tb) : Basemenu(tb.screen), toolbar(tb) {
setLabel(i18n->getMessage(ToolbarSet, ToolbarToolbarTitle, "Toolbar"));
setInternalMenu();
@ -1177,7 +1174,7 @@ void Toolbarmenu::itemSelected(int button, int index) {
toolbar.on_top = change;
setItemSelected(1, change);
if (toolbar.isOnTop()) toolbar.screen->raiseWindows((Window *) 0, 0);
if (toolbar.isOnTop()) toolbar.screen.raiseWindows((Window *) 0, 0);
break;
}
@ -1187,7 +1184,7 @@ void Toolbarmenu::itemSelected(int button, int index) {
setItemSelected(2, change);
#ifdef SLIT
toolbar.screen->getSlit()->reposition();
toolbar.screen.getSlit()->reposition();
#endif // SLIT
break;
}
@ -1217,7 +1214,7 @@ void Toolbarmenu::reconfigure(void) {
Toolbarmenu::Placementmenu::Placementmenu(Toolbarmenu &tm)
: Basemenu(*tm.toolbar.screen), toolbarmenu(tm) {
: Basemenu(tm.toolbar.screen), toolbarmenu(tm) {
setLabel(i18n->getMessage(ToolbarSet, ToolbarToolbarPlacement,
"Toolbar Placement"));
setInternalMenu();
@ -1246,13 +1243,13 @@ void Toolbarmenu::Placementmenu::itemSelected(int button, int index) {
BasemenuItem *item = find(index);
if (! item) return;
toolbarmenu.toolbar.screen->saveToolbarPlacement(item->function());
toolbarmenu.toolbar.screen.saveToolbarPlacement(item->function());
hide();
toolbarmenu.toolbar.reconfigure();
#ifdef SLIT
// reposition the slit as well to make sure it doesn't intersect the
// toolbar
toolbarmenu.toolbar.screen->getSlit()->reposition();
toolbarmenu.toolbar.screen.getSlit()->reposition();
#endif // SLIT
}

View file

@ -88,9 +88,9 @@ private:
virtual void timeout(void);
} hide_handler;
Openbox *openbox;
Openbox &openbox;
BImageControl *image_ctrl;
BScreen *screen;
BScreen &screen;
BTimer *clock_timer, *hide_timer;
Toolbarmenu *toolbarmenu;
@ -103,7 +103,7 @@ private:
public:
Toolbar(BScreen *);
Toolbar(BScreen &);
virtual ~Toolbar(void);
inline Toolbarmenu *getMenu(void) { return toolbarmenu; }

View file

@ -1005,7 +1005,7 @@ void OpenboxWindow::getWMProtocols(void) {
else if (proto[i] == openbox->getWMTakeFocusAtom())
flags.send_focus_message = True;
else if (proto[i] == openbox->getOpenboxStructureMessagesAtom())
screen->addNetizen(new Netizen(screen, client.window));
screen->addNetizen(new Netizen(*screen, client.window));
}
XFree(proto);

View file

@ -134,7 +134,7 @@ void Windowmenu::itemSelected(int button, int index) {
break;
case BScreen::WindowKill:
XKillClient(screen.getBaseDisplay()->getXDisplay(),
XKillClient(screen.getBaseDisplay().getXDisplay(),
window.getClientWindow());
break;
}

View file

@ -120,12 +120,12 @@ const int Workspace::removeWindow(OpenboxWindow *w) {
w->getTransientFor()->isVisible()) {
w->getTransientFor()->setInputFocus();
} else if (screen->isSloppyFocus()) {
screen->getOpenbox()->setFocusedWindow((OpenboxWindow *) 0);
screen->getOpenbox().setFocusedWindow((OpenboxWindow *) 0);
} else {
OpenboxWindow *top = stackingList->first();
if (! top || ! top->setInputFocus()) {
screen->getOpenbox()->setFocusedWindow((OpenboxWindow *) 0);
XSetInputFocus(screen->getOpenbox()->getXDisplay(),
screen->getOpenbox().setFocusedWindow((OpenboxWindow *) 0);
XSetInputFocus(screen->getOpenbox().getXDisplay(),
screen->getToolbar()->getWindowID(),
RevertToParent, CurrentTime);
}
@ -251,12 +251,12 @@ void Workspace::lowerWindow(OpenboxWindow *w) {
win = win->getTransientFor();
}
screen->getOpenbox()->grab();
screen->getOpenbox().grab();
XLowerWindow(screen->getBaseDisplay()->getXDisplay(), *nstack);
XRestackWindows(screen->getBaseDisplay()->getXDisplay(), nstack, i);
XLowerWindow(screen->getBaseDisplay().getXDisplay(), *nstack);
XRestackWindows(screen->getBaseDisplay().getXDisplay(), nstack, i);
screen->getOpenbox()->ungrab();
screen->getOpenbox().ungrab();
delete [] nstack;
}

View file

@ -206,7 +206,7 @@ Openbox::Openbox(int m_argc, char **m_argv, char *dpy_name, char *rc)
screenList = new LinkedList<BScreen>;
for (int i = 0; i < getNumberOfScreens(); i++) {
BScreen *screen = new BScreen(this, i);
BScreen *screen = new BScreen(*this, i);
if (! screen->isScreenManaged()) {
delete screen;