]> git.tdb.fi Git - libs/gltk.git/commitdiff
Update text information when widget style changes
authorMikko Rasa <tdb@tdb.fi>
Mon, 12 Apr 2010 20:49:41 +0000 (20:49 +0000)
committerMikko Rasa <tdb@tdb.fi>
Mon, 12 Apr 2010 20:49:41 +0000 (20:49 +0000)
source/button.cpp
source/button.h
source/entry.cpp
source/entry.h
source/label.cpp
source/label.h
source/text.cpp
source/text.h
source/toggle.cpp
source/toggle.h

index 91cc88c403365bfabde2a9f943627bd0814c0325..292625de9f9e4bba00e6598f1ff1eed0d645c207 100644 (file)
@@ -92,6 +92,11 @@ void Button::render_special(const Part &part) const
        }
 }
 
+void Button::on_style_change()
+{
+       text.update_style();
+}
+
 
 Button::Loader::Loader(Button &btn):
        Widget::Loader(btn)
index 31d87e1f0ba806f5dfc100c1c6bde41b20cb3a6c..687f5dd74e3cee22bd2310b0a02dc718feeda0b5 100644 (file)
@@ -48,6 +48,8 @@ public:
 private:
        virtual const char *get_class() const { return "button"; }
        virtual void render_special(const Part &) const;
+
+       virtual void on_style_change();
 };
 
 } // namespace GLtk
index f5037215592e1a45143ab8b305cf563007c7dbe0..496a79d0da017421361126742ec9ad76ad6fcae9 100644 (file)
@@ -84,6 +84,11 @@ void Entry::render_special(const Part &part) const
        }
 }
 
+void Entry::on_style_change()
+{
+       text.update_style();
+}
+
 
 Entry::Loader::Loader(Entry &ent):
        Widget::Loader(ent)
index b8bae562c7fd2b53b7322cc6c09f6baaa3b2f3d9..7355067d2db2f634d3db1cd5fd9eb8c8e6e1dc1a 100644 (file)
@@ -47,6 +47,8 @@ public:
 private:
        virtual const char *get_class() const { return "entry"; }
        virtual void render_special(const Part &) const;
+
+       virtual void on_style_change();
 };
 
 } // namespace GLtk
index 2353385c1174c44f78b129a45b3c550eec79206b..18bef1a066bb529274644a78cddfd92ec64a1c10 100644 (file)
@@ -52,6 +52,11 @@ void Label::render_special(const Part &part) const
                text.render(part, geom);
 }
 
+void Label::on_style_change()
+{
+       text.update_style();
+}
+
 
 Label::Loader::Loader(Label &l):
        Widget::Loader(l)
index f492006037939cae1631c9fec21798421a750555..f157616f5f54b23daaed6fee10cbfbc4fc5394a3 100644 (file)
@@ -40,6 +40,8 @@ public:
 private:
        virtual const char *get_class() const { return "label"; }
        virtual void render_special(const Part &) const;
+
+       virtual void on_style_change();
 };
 
 } // namespace GLtk
index e33eb80714fb572185c6a31c9127501fc1621bb7..d48c33f0a3ba1f7ca8350ff2a908c3d76204082c 100644 (file)
@@ -77,6 +77,13 @@ void Text::insert(unsigned pos, const string &s)
        }
 }
 
+void Text::update_style()
+{
+       float font_size=style->get_font()->get_default_size();
+       for(vector<Line>::iterator i=lines.begin(); i!=lines.end(); ++i)
+               i->width=static_cast<unsigned>(style->get_font()->get_string_width(text.substr(i->start, i->length))*font_size);
+}
+
 void Text::render(const Part &part, const Geometry &geom) const
 {
        if(lines.empty())
index 5daeb9bae70db324014f330ee04b5edf76adba34..7be119216aae4086210e8cfec8133be9b65a2c8d 100644 (file)
@@ -41,6 +41,8 @@ public:
        const std::string &get() const { return text; }
        unsigned size() const { return text.size(); }
 
+       void update_style();
+
        void render(const Part &, const Geometry &) const;
 
        Text &operator=(const std::string &);
index 550d97a27584fbcba9a1e6699d4e4a23d2fffb6f..62f46eb52ac94b0ac212535c720a82937c45b13c 100644 (file)
@@ -85,6 +85,11 @@ void Toggle::exclude_siblings()
                                tgl->set_value(false);
 }
 
+void Toggle::on_style_change()
+{
+       text.update_style();
+}
+
 
 Toggle::Loader::Loader(Toggle &t):
        Widget::Loader(t)
index f9a32fe192971c50fae7590f16e1186b6ebbad74..da129be2fa188f8af1ff24f7b6fa5bbd78e842b7 100644 (file)
@@ -55,6 +55,8 @@ private:
        virtual void render_special(const Part &) const;
 
        void exclude_siblings();
+
+       virtual void on_style_change();
 };
 
 } // namespace GLtk