X-Git-Url: https://git.brokenzipper.com/gitweb?a=blobdiff_plain;f=src%2FToolbar.cc;h=fd2191445da5f34b08fa59107f91f6394f301eb8;hb=ebdf25bf6710c9cf585489302dcd8ca23b9b226a;hp=d0753aab9bfc7575d4e0bf7e27af90641a6609d8;hpb=307da13fff916694f870ecb77aaf3ce0cf51d09e;p=chaz%2Fopenbox diff --git a/src/Toolbar.cc b/src/Toolbar.cc index d0753aab..fd219144 100644 --- a/src/Toolbar.cc +++ b/src/Toolbar.cc @@ -64,15 +64,11 @@ #include #include +using std::ends; Toolbar::Toolbar(BScreen &scrn, Resource &conf) : screen(scrn), openbox(scrn.getOpenbox()), 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 @@ -159,14 +155,13 @@ Toolbar::Toolbar(BScreen &scrn, Resource &conf) : screen(scrn), 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 { @@ -220,32 +215,35 @@ Toolbar::~Toolbar() { 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); + s.rdbuf()->freeze(0); } 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; @@ -256,6 +254,7 @@ void Toolbar::setPlacement(int p) { case BottomCenter: default: placement = "BottomCenter"; break; } config.setValue(s.str(), placement); + s.rdbuf()->freeze(0); } void Toolbar::save() { @@ -276,8 +275,11 @@ void Toolbar::load() { 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)) { @@ -293,19 +295,29 @@ void Toolbar::load() { 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); } void Toolbar::reconfigure() { @@ -388,7 +400,8 @@ 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()) { @@ -711,11 +724,11 @@ void Toolbar::checkClock(Bool redraw, Bool date) { void Toolbar::redrawWindowLabel(Bool redraw) { - if (screen.getOpenbox().getFocusedWindow()) { + OpenboxWindow *foc = screen.getOpenbox().focusedWindow(); + if (foc != (OpenboxWindow *) 0) { 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()); @@ -958,14 +971,12 @@ void Toolbar::edit() { 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, @@ -1140,9 +1151,9 @@ void Toolbar::keyPressEvent(XKeyEvent *ke) { m_editing = False; openbox.setNoFocus(False); - if (openbox.getFocusedWindow()) { - openbox.getFocusedWindow()->setInputFocus(); - openbox.getFocusedWindow()->setFocusFlag(True); + if (openbox.focusedWindow()) { + openbox.focusedWindow()->setInputFocus(); + openbox.focusedWindow()->setFocusFlag(True); } else { XSetInputFocus(display, PointerRoot, None, CurrentTime); }