#include <strstream>
#include <string>
+using std::ends;
-Toolbar::Toolbar(BScreen &scrn, Resource &conf) : screen(scrn),
- openbox(scrn.getOpenbox()), config(conf)
+Toolbar::Toolbar(BScreen &scrn, Resource &conf) : openbox(scrn.getOpenbox()),
+ screen(scrn), config(conf)
{
- // default values
- m_width_percent =66;
- m_placement = BottomCenter;
- m_ontop = false;
- m_hidden = m_autohide = false;
load();
// get the clock updating every minute
mapToolbar();
}
-int Toolbar::getX() const {
- return ((m_hidden) ? frame.x_hidden : frame.x);
-}
-
-int Toolbar::getY() const {
- if (screen.hideToolbar()) return screen.size().h();
- else if (m_hidden) return frame.y_hidden;
- else return frame.y;
+Rect Toolbar::area() const {
+ int x = ((m_hidden) ? frame.x_hidden : frame.x);
+ int y;
+ if (screen.hideToolbar()) y = screen.size().h();
+ else if (m_hidden) y = frame.y_hidden;
+ else y = frame.y;
+ return Rect(x, y, frame.width, frame.height);
}
unsigned int Toolbar::getExposedHeight() const {
void Toolbar::setOnTop(bool b) {
m_ontop = b;
- ostrstream s;
+ std::ostrstream s;
s << "session.screen" << screen.getScreenNumber() << ".toolbar.onTop" << ends;
config.setValue(s.str(), m_ontop ? "True" : "False");
s.rdbuf()->freeze(0);
void Toolbar::setAutoHide(bool b) {
m_autohide = b;
- ostrstream s;
- s << "session.screen" << screen.getScreenNumber() << ".toolbar.autoHide" <<
- ends;
+ std::ostrstream s;
+ s << "session.screen" << screen.getScreenNumber() << ".toolbar.autoHide"
+ << ends;
config.setValue(s.str(), m_autohide ? "True" : "False");
s.rdbuf()->freeze(0);
}
void Toolbar::setWidthPercent(int w) {
m_width_percent = w;
- ostrstream s;
+ std::ostrstream s;
s << "session.screen" << screen.getScreenNumber() << ".toolbar.widthPercent"
<< ends;
config.setValue(s.str(), m_width_percent);
void Toolbar::setPlacement(int p) {
m_placement = p;
- ostrstream s;
- s << "session.screen" << screen.getScreenNumber() << ".toolbar.placement" <<
- ends;
+ std::ostrstream s;
+ s << "session.screen" << screen.getScreenNumber() << ".toolbar.placement"
+ << ends;
const char *placement;
switch (m_placement) {
case TopLeft: placement = "TopLeft"; break;
rclass << rscreen.str() << "Toolbar.WidthPercent" << ends;
if (config.getValue(rname.str(), rclass.str(), l) && (l > 0 && l <= 100))
m_width_percent = l;
+ else
+ m_width_percent =66;
rname.seekp(0); rclass.seekp(0);
+ rname.rdbuf()->freeze(0); rclass.rdbuf()->freeze(0);
rname << rscreen.str() << "toolbar.placement" << ends;
rclass << rscreen.str() << "Toolbar.Placement" << ends;
if (config.getValue(rname.str(), rclass.str(), s)) {
m_placement = BottomRight;
else if ( 0 == strncasecmp(s.c_str(), "BottomCenter", s.length()))
m_placement = BottomCenter;
- }
+ } else
+ m_placement = BottomCenter;
rname.seekp(0); rclass.seekp(0);
+ rname.rdbuf()->freeze(0); rclass.rdbuf()->freeze(0);
rname << rscreen.str() << "toolbar.onTop" << ends;
rclass << rscreen.str() << "Toolbar.OnTop" << ends;
if (config.getValue(rname.str(), rclass.str(), b))
m_ontop = b;
+ else
+ m_ontop = false;
rname.seekp(0); rclass.seekp(0);
+ rname.rdbuf()->freeze(0); rclass.rdbuf()->freeze(0);
rname << rscreen.str() << "toolbar.autoHide" << ends;
rclass << rscreen.str() << "Toolbar.AutoHide" << ends;
if (config.getValue(rname.str(), rclass.str(), b))
m_hidden = m_autohide = b;
+ else
+ m_hidden = m_autohide = false;
+
rscreen.rdbuf()->freeze(0);
- rname.rdbuf()->freeze(0);
- rclass.rdbuf()->freeze(0);
+ rname.rdbuf()->freeze(0); rclass.rdbuf()->freeze(0);
}
void Toolbar::reconfigure() {
if (tt) {
char t[1025], *time_string = (char *) 0;
int len = strftime(t, 1024, screen.strftimeFormat(), tt);
- t[len++-1] = ' '; // add a space to the string for padding
+ t[len++] = 'A'; // add size to the string for padding
+ t[len++] = 'A'; // add size to the string for padding
t[len] = '\0';
if (i18n->multibyte()) {
void Toolbar::redrawWindowLabel(Bool redraw) {
- if (screen.getOpenbox().getFocusedWindow()) {
+ OpenboxWindow *foc = screen.getOpenbox().focusedWindow();
+ if (foc == (OpenboxWindow *) 0) {
+ XClearWindow(display, frame.window_label);
+ } else {
if (redraw)
XClearWindow(display, frame.window_label);
- OpenboxWindow *foc = screen.getOpenbox().getFocusedWindow();
if (foc->getScreen() != &screen) return;
int dx = (frame.bevel_w * 2), dlen = strlen(*foc->getTitle());
else
XDrawString(display, frame.window_label, style->w_text_gc, dx,
(style->font->ascent + 1), *foc->getTitle(), dlen);
- } else {
- XClearWindow(display, frame.window_label);
}
}
return;
XSetInputFocus(display, frame.workspace_label,
- ((screen.sloppyFocus()) ? RevertToPointerRoot :
- RevertToParent),
- CurrentTime);
+ RevertToPointerRoot, CurrentTime);
XClearWindow(display, frame.workspace_label);
openbox.setNoFocus(True);
- if (openbox.getFocusedWindow())
- openbox.getFocusedWindow()->setFocusFlag(False);
+ if (openbox.focusedWindow())
+ openbox.focusedWindow()->setFocusFlag(False);
XDrawRectangle(display, frame.workspace_label,
screen.getWindowStyle()->l_text_focus_gc,
m_editing = False;
openbox.setNoFocus(False);
- if (openbox.getFocusedWindow()) {
- openbox.getFocusedWindow()->setInputFocus();
- openbox.getFocusedWindow()->setFocusFlag(True);
- } else {
- XSetInputFocus(display, PointerRoot, None, CurrentTime);
- }
+ if (openbox.focusedWindow()) {
+ openbox.focusedWindow()->setInputFocus();
+ openbox.focusedWindow()->setFocusFlag(True);
+ } else
+ openbox.focusWindow((OpenboxWindow *) 0);
+
// check to make sure that new_name[0] != 0... otherwise we have a null
// workspace name which causes serious problems, especially for the
// Openbox::LoadRC() method.