]> Dogcows Code - chaz/openbox/blobdiff - otk/style.cc
support the button pressed resources better
[chaz/openbox] / otk / style.cc
index 277924d6d9b4e63d90f94c3af57b67d95efde838..fcc0ff2e8b6ac326f3d5092a5d2c069726e50c19 100644 (file)
@@ -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 <assert.h>
 #include <iostream>
@@ -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,7 +168,7 @@ 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.
@@ -232,53 +242,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);
 }
 
 }
This page took 0.026372 seconds and 4 git commands to generate.