X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=src%2FScreen.cc;h=b294dbf583b4df1843551939bbe76e0ce759a97a;hb=1618ecc845e9191a383ea9ffd1e6ab7e31caec15;hp=c82ab07c6224c660fcc4a87ce37f8c8094ecc03a;hpb=ed3e597500ce29be5bd53671f9c92ed15e55f4ac;p=chaz%2Fopenbox diff --git a/src/Screen.cc b/src/Screen.cc index c82ab07c..b294dbf5 100644 --- a/src/Screen.cc +++ b/src/Screen.cc @@ -727,7 +727,7 @@ void BScreen::rereadMenu(void) { void BScreen::LoadStyle(void) { - Configuration style; + Configuration style(False); const char *sfile = blackbox->getStyleFilename(); if (sfile != NULL) { @@ -739,6 +739,9 @@ void BScreen::LoadStyle(void) { } } + // merge in the rc file + style.merge(config->file(), True); + string s; // load fonts/fontsets @@ -753,10 +756,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 = @@ -2134,13 +2137,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); + 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())