X-Git-Url: https://git.brokenzipper.com/gitweb?a=blobdiff_plain;ds=sidebyside;f=src%2FScreen.cc;h=72e601e841615ecd3a2b9d36dddbd6dba22ead50;hb=02c028d8ae0a80206eeb97c662cd3ceebf900977;hp=6d95edbda59a874c5fa68f2e228bc169acca35e1;hpb=b1da899b3264b93a40aa638bc5fb65831bdcc464;p=chaz%2Fopenbox diff --git a/src/Screen.cc b/src/Screen.cc index 6d95edbd..72e601e8 100644 --- a/src/Screen.cc +++ b/src/Screen.cc @@ -407,6 +407,13 @@ void BScreen::saveAAFonts(bool f) { } +void BScreen::saveShadowFonts(bool f) { + resource.shadow_fonts = f; + reconfigure(); + config->setValue(screenstr + "dropShadowFonts", resource.shadow_fonts); +} + + void BScreen::saveHideToolbar(bool h) { resource.hide_toolbar = h; if (resource.hide_toolbar) @@ -593,6 +600,7 @@ void BScreen::save_rc(void) { saveSloppyFocus(resource.sloppy_focus); saveAutoRaise(resource.auto_raise); saveImageDither(doImageDither()); + saveShadowFonts(resource.shadow_fonts); saveAAFonts(resource.aa_fonts); saveResizeZones(resource.resize_zones); saveOpaqueMove(resource.opaque_move); @@ -646,6 +654,9 @@ void BScreen::load_rc(void) { if (! config->getValue(screenstr + "opaqueMove", resource.opaque_move)) resource.opaque_move = false; + if (! config->getValue(screenstr + "dropShadowFonts", resource.shadow_fonts)) + resource.shadow_fonts = true; + if (! config->getValue(screenstr + "antialiasFonts", resource.aa_fonts)) resource.aa_fonts = true; @@ -1268,12 +1279,24 @@ void BScreen::changeWorkspaceID(unsigned int id) { f = win->setInputFocus(); } - // If that fails, and we're doing focus_last, try to focus the last window. - if (! f && resource.focus_last && current_workspace->getLastFocusedWindow()) - f = current_workspace->getLastFocusedWindow()->setInputFocus(); + // If that fails, and we're doing focus_last, try to focus the last window. + if (! f && resource.focus_last && + (win = current_workspace->getLastFocusedWindow())) + f = win->setInputFocus(); + + /* + if we found a focus target, then we set the focused window explicitly + because it is possible to switch off this workspace before the x server + generates the FocusIn event for the window. if that happens, openbox would + lose track of what window was the 'LastFocused' window on the workspace. - // If that fails, then set focus to nothing. - if (! f) blackbox->setFocusedWindow((BlackboxWindow *) 0); + if we did not find a focus target, then set the current focused window to + nothing. + */ + if (f) + blackbox->setFocusedWindow(win); + else + blackbox->setFocusedWindow((BlackboxWindow *) 0); updateNetizenCurrentWorkspace(); } @@ -1339,7 +1362,7 @@ void BScreen::updateStackingList(void) { void BScreen::addSystrayWindow(Window window) { XGrabServer(blackbox->getXDisplay()); - XSelectInput(blackbox->getXDisplay(), window, SubstructureRedirectMask); + XSelectInput(blackbox->getXDisplay(), window, StructureNotifyMask); systrayWindowList.push_back(window); xatom->setValue(getRootWindow(), XAtom::kde_net_system_tray_windows, XAtom::window, @@ -1397,7 +1420,7 @@ void BScreen::manageWindow(Window w) { if (win->isDesktop()) { desktopWindowList.push_back(win->getFrameWindow()); - } else if (win->isNormal()) { + } else { // if (win->isNormal()) { // don't list desktop windows as managed windows windowList.push_back(win); updateClientList(); @@ -1448,7 +1471,7 @@ void BScreen::unmanageWindow(BlackboxWindow *w, bool remap) { break; } assert(it != end); // the window wasnt a desktop window? - } else if (w->isNormal()) { + } else { // if (w->isNormal()) { // we don't list desktop windows as managed windows windowList.remove(w); updateClientList(); @@ -2209,6 +2232,12 @@ void BScreen::shutdown(void) { while(! windowList.empty()) unmanageWindow(windowList.front(), True); + while(! desktopWindowList.empty()) { + BlackboxWindow *win = blackbox->searchWindow(desktopWindowList.front()); + assert(win); + unmanageWindow(win, True); + } + slit->shutdown(); } @@ -2502,6 +2531,8 @@ BTexture BScreen::readDatabaseTexture(const string &rname, texture.setColor(readDatabaseColor(rname + ".color", default_color, style)); texture.setColorTo(readDatabaseColor(rname + ".colorTo", default_color, style)); + texture.setBorderColor(readDatabaseColor(rname + ".borderColor", + default_color, style)); return texture; } @@ -2541,7 +2572,7 @@ BFont *BScreen::readDatabaseFont(const string &rbasename, } BFont *b = new BFont(blackbox->getXDisplay(), this, family, i, bold, - italic, resource.aa_fonts); + italic, resource.shadow_fonts, resource.aa_fonts); if (b->valid()) return b; else