X-Git-Url: https://git.brokenzipper.com/gitweb?a=blobdiff_plain;f=src%2FScreen.cc;h=beb64d7174e2f558ab926ecda2ec924a6ac89d16;hb=8e34bfcfcbd7bfc9913f40a23016f30c63803611;hp=3a94a4a57cac901d1f9d75af6bede61c4891a236;hpb=1da5287620ed531e1f4a531bcc777a6392572c87;p=chaz%2Fopenbox diff --git a/src/Screen.cc b/src/Screen.cc index 3a94a4a5..beb64d71 100644 --- a/src/Screen.cc +++ b/src/Screen.cc @@ -240,7 +240,7 @@ BScreen::BScreen(Blackbox *bb, unsigned int scrn) : ScreenInfo(bb, scrn) { raiseWindows(0, 0); // this also initializes the empty stacking list rootmenu->update(); - updateClientList(); // initialize the client list, which will be empty + updateClientList(); // initialize the client lists, which will be empty updateAvailableArea(); changeWorkspaceID(0); @@ -388,6 +388,13 @@ void BScreen::saveFocusLast(bool f) { } +void BScreen::saveAAFonts(bool f) { + resource.aa_fonts = f; + reconfigure(); + config->setValue(screenstr + "antialiasFonts", resource.aa_fonts); +} + + void BScreen::saveHideToolbar(bool h) { resource.hide_toolbar = h; if (resource.hide_toolbar) @@ -497,6 +504,7 @@ void BScreen::save_rc(void) { saveSloppyFocus(resource.sloppy_focus); saveAutoRaise(resource.auto_raise); saveImageDither(doImageDither()); + saveAAFonts(resource.aa_fonts); saveOpaqueMove(resource.opaque_move); saveFullMax(resource.full_max); saveFocusNew(resource.focus_new); @@ -540,6 +548,9 @@ void BScreen::load_rc(void) { if (! config->getValue(screenstr + "opaqueMove", resource.opaque_move)) resource.opaque_move = false; + if (! config->getValue(screenstr + "antialiasFonts", resource.aa_fonts)) + resource.aa_fonts = true; + if (! config->getValue(screenstr + "hideToolbar", resource.hide_toolbar)) resource.hide_toolbar = false; @@ -739,24 +750,10 @@ void BScreen::LoadStyle(void) { } } - string s; - - if (config->getValue("rootCommand", s)) - printf("config.rootCommand: %s\n", s.c_str()); - - if (style.getValue("rootCommand", s)) - printf("style.rootCommand: %s\n", s.c_str()); - // merge in the rc file - style.merge(config, True); - - printf("merged databases\n"); - - if (style.getValue("rootCommand", s)) - printf("style.rootCommand: %s\n", s.c_str()); + style.merge(config->file(), True); - if (style.getValue("session.cacheMax", s)) - printf("session.cacheMax: %s\n", s.c_str()); + string s; // load fonts/fontsets if (resource.wstyle.font) @@ -770,10 +767,10 @@ void BScreen::LoadStyle(void) { resource.wstyle.font = resource.tstyle.font = resource.mstyle.f_font = resource.mstyle.t_font = (BFont *) 0; - resource.wstyle.font = readDatabaseFont("window.font", style); - resource.tstyle.font = readDatabaseFont("toolbar.font", style); - resource.mstyle.t_font = readDatabaseFont("menu.title.font", style); - resource.mstyle.f_font = readDatabaseFont("menu.frame.font", style); + resource.wstyle.font = readDatabaseFont("window.", style); + resource.tstyle.font = readDatabaseFont("toolbar.", style); + resource.mstyle.t_font = readDatabaseFont("menu.title.", style); + resource.mstyle.f_font = readDatabaseFont("menu.frame.", style); // load window config resource.wstyle.t_focus = @@ -1064,6 +1061,8 @@ void BScreen::updateClientList(void) { } else xatom->setValue(getRootWindow(), XAtom::net_client_list, XAtom::window, 0, 0); + + updateStackingList(); } @@ -1075,7 +1074,7 @@ void BScreen::updateStackingList(void) { BlackboxWindowList stack_order; /* - * Get the atacking order from all of the workspaces. + * Get the stacking order from all of the workspaces. * We start with the current workspace so that the sticky windows will be * in the right order on the current workspace. * XXX: Do we need to have sticky windows in the list once for each workspace? @@ -1084,13 +1083,13 @@ void BScreen::updateStackingList(void) { for (unsigned int i = 0; i < getWorkspaceCount(); ++i) if (i != getCurrentWorkspaceID()) getWorkspace(i)->appendStackOrder(stack_order); - + if (stack_order.size() > 0) { // set the client list atoms Window *windows = new Window[stack_order.size()]; Window *win_it = windows; - BlackboxWindowList::iterator it = stack_order.begin(); - const BlackboxWindowList::iterator end = stack_order.end(); + BlackboxWindowList::iterator it = stack_order.begin(), + end = stack_order.end(); for (; it != end; ++it, ++win_it) *win_it = (*it)->getClientWindow(); xatom->setValue(getRootWindow(), XAtom::net_client_list_stacking, @@ -1393,6 +1392,7 @@ void BScreen::reassociateWindow(BlackboxWindow *w, unsigned int wkspc_id, getWorkspace(w->getWorkspaceNumber())->removeWindow(w); getWorkspace(wkspc_id)->addWindow(w); } + updateStackingList(); } @@ -2151,13 +2151,38 @@ BColor BScreen::readDatabaseColor(const string &rname, } -BFont *BScreen::readDatabaseFont(const string &rname, +BFont *BScreen::readDatabaseFont(const string &rbasename, const Configuration &style) { string fontname; string s; - style.getValue(rname, s); // if this fails, a blank string will be used, - // which will cause the fallback font to load. + +#ifdef XFT + int i; + if (style.getValue(rbasename + "xft.font", s) && + style.getValue(rbasename + "xft.size", i)) { + string family = s; + bool bold = False; + bool italic = False; + if (style.getValue(rbasename + "xft.flags", s)) { + if (s.find("bold") != string::npos) + bold = True; + if (s.find("italic") != string::npos) + italic = True; + } + + BFont *b = new BFont(blackbox->getXDisplay(), this, family, i, bold, + italic, resource.aa_fonts); + if (b->valid()) + return b; + else + delete b; // fall back to the normal X font stuff + } +#endif // XFT + + style.getValue(rbasename + "font", s); + // if this fails, a blank string will be used, which will cause the fallback + // font to load. BFont *b = new BFont(blackbox->getXDisplay(), this, s); if (! b->valid())