X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=otk%2Fstyle.cc;h=fe34bbf41ec1c5e92f931e6470e2b5ac63f761ab;hb=a2de94e91e1c0e7775c97745ae11d14e5c5f5659;hp=277924d6d9b4e63d90f94c3af57b67d95efde838;hpb=6b977b2ded0b8807dd05bb7ee0c318612600027d;p=chaz%2Fopenbox diff --git a/otk/style.cc b/otk/style.cc index 277924d6..fe34bbf4 100644 --- a/otk/style.cc +++ b/otk/style.cc @@ -1,6 +1,8 @@ -#ifdef HAVE_CONFIG_H -#include "../config.h" -#endif // HAVE_CONFIG_H +// -*- mode: C++; indent-tabs-mode: nil; c-basic-offset: 2; -*- + +#ifdef HAVE_CONFIG_H +# include "../config.h" +#endif #include #include @@ -17,7 +19,7 @@ Style::Style() : font(NULL) Style::Style(BImageControl *ctrl) : image_control(ctrl), font(0), - screen_number(ctrl->getScreenInfo()->getScreenNumber()) + screen_number(ctrl->getScreenInfo()->screen()) { } @@ -64,13 +66,21 @@ void Style::load(const Configuration &style) { b_focus = readDatabaseTexture("window.button.focus", "white", style); b_unfocus = readDatabaseTexture("window.button.unfocus", "black", style); - b_pressed = readDatabaseTexture("window.button.pressed", "black", style); //if neither of these can be found, we will use the previous resource b_pressed_focus = readDatabaseTexture("window.button.pressed.focus", "black", style, true); + if (b_pressed_focus.texture() == BTexture::NoTexture) { + b_pressed_focus = readDatabaseTexture("window.button.pressed", "black", + style); + } + b_pressed_unfocus = readDatabaseTexture("window.button.pressed.unfocus", "black", style, true); + if (b_pressed_unfocus.texture() == BTexture::NoTexture) { + b_pressed_unfocus = readDatabaseTexture("window.button.pressed", "black", + style); + } if (close_button.mask != None) XFreePixmap(OBDisplay::display, close_button.mask); @@ -134,7 +144,7 @@ void Style::load(const Configuration &style) { // load bevel, border and handle widths const ScreenInfo *s_info = OBDisplay::screenInfo(screen_number); - unsigned int width = s_info->getRect().width(); + unsigned int width = s_info->rect().width(); if (! style.getValue("handleWidth", handle_width) || handle_width > width/2 || handle_width == 0) @@ -158,15 +168,13 @@ void Style::load(const Configuration &style) { void Style::readDatabaseMask(const std::string &rname, PixmapMask &pixmapMask, const Configuration &style) { - Window root_window = OBDisplay::screenInfo(screen_number)->getRootWindow(); + Window root_window = OBDisplay::screenInfo(screen_number)->rootWindow(); std::string s; int hx, hy; //ignored int ret = BitmapOpenFailed; //default to failure. - if (style.getValue(rname, s)) - { - if (s[0] != '/' && s[0] != '~') - { + if (style.getValue(rname, s)) { + if (s[0] != '/' && s[0] != '~') { std::string xbmFile = std::string("~/.openbox/buttons/") + s; ret = XReadBitmapFile(OBDisplay::display, root_window, expandTilde(xbmFile).c_str(), &pixmapMask.w, @@ -232,53 +240,28 @@ BColor Style::readDatabaseColor(const std::string &rname, BFont *Style::readDatabaseFont(const std::string &rbasename, const Configuration &style) { - std::string fontname; + std::string fontstring, s; - std::string s; + // XXX: load all this font stuff from the style... - int i; - if (style.getValue(rbasename + "xft.font", s) && - style.getValue(rbasename + "xft.size", i)) { - std::string family = s; - bool bold = False; - bool italic = False; - bool dropShadow = False; - - if (style.getValue(rbasename + "xft.flags", s)) { - if (s.find("bold") != std::string::npos) - bold = True; - if (s.find("italic") != std::string::npos) - italic = True; - if (s.find("shadow") != std::string::npos) - dropShadow = True; - } + bool dropShadow = True; - unsigned char offset = 1; - if (style.getValue(rbasename + "xft.shadow.offset", s)) { - offset = atoi(s.c_str()); //doesn't detect errors - if (offset > CHAR_MAX) - offset = 1; - } - - unsigned char tint = 0x40; - if (style.getValue(rbasename + "xft.shadow.tint", s)) { - tint = atoi(s.c_str()); - } + unsigned char offset = 1; + if (style.getValue(rbasename + "xft.shadow.offset", s)) { + offset = atoi(s.c_str()); //doesn't detect errors + if (offset > CHAR_MAX) + offset = 1; + } - - BFont *b = new BFont(screen_number, family, i, bold, italic, - dropShadow && shadow_fonts, - offset, tint, aa_fonts); - if (b->valid()) - return b; - delete b; + unsigned char tint = 0x40; + if (style.getValue(rbasename + "xft.shadow.tint", s)) { + tint = atoi(s.c_str()); } - if (style.getValue(rbasename + "xft.font", s)) - printf("Unable to load font \"%s\". Exiting\n", s.c_str()); - else - printf("Font not defined by style. Exiting\n"); - exit(2); // can't continue without a font + fontstring = "Arial,Sans-9:bold"; + + // if this fails, it ::exit()'s + return new BFont(screen_number, fontstring, dropShadow, offset, tint); } }