]> Dogcows Code - chaz/openbox/blobdiff - otk/label.cc
kill a comment
[chaz/openbox] / otk / label.cc
index 751fff3421197c55954ef41404f8b1dc611e8ac1..8ec03dd9b805b361408d57d306c1983e3864fd99 100644 (file)
 
 namespace otk {
 
+Label::Label(int screen, EventDispatcher *ed, int bevel)
+  : Widget(screen, ed, Widget::Horizontal, bevel, true),
+    _text(""),
+    _font(0),
+    _justify_horz(RenderStyle::LeftTopJustify),
+    _justify_vert(RenderStyle::LeftTopJustify),
+    _highlight(false)
+{
+  styleChanged(*RenderStyle::style(screen));
+}
+
 Label::Label(Widget *parent)
   : Widget(parent),
     _text(""),
+    _font(0),
     _justify_horz(RenderStyle::LeftTopJustify),
     _justify_vert(RenderStyle::LeftTopJustify),
     _highlight(false)
@@ -49,12 +61,20 @@ void Label::setText(const ustring &text)
   std::string s = text.c_str(); // use a normal string, for its functionality
 
   _parsedtext.clear();
+  _text = text;
   
   // parse it into multiple lines
   std::string::size_type p = 0;
   while (p != std::string::npos) {
     std::string::size_type p2 = s.find('\n', p);
-    _parsedtext.push_back(s.substr(p, (p2==std::string::npos?p2:p2-p)));
+    std::string s(s.substr(p, (p2==std::string::npos?p2:p2-p)));
+
+    // turn tabs into spaces (multiples of 8)
+    std::string::size_type t;
+    while ((t = s.find('\t')) != std::string::npos)
+      s.replace(t, 1, std::string(8 - t % 8, ' '));
+
+    _parsedtext.push_back(s);
     _parsedtext.back().setUtf8(utf);
     p = (p2==std::string::npos?p2:p2+1);
   }
This page took 0.0212 seconds and 4 git commands to generate.