]> git.tdb.fi Git - libs/gltk.git/commitdiff
Add a signal to notify when the automatic size of a widget changes
authorMikko Rasa <tdb@tdb.fi>
Mon, 28 Feb 2011 15:18:18 +0000 (15:18 +0000)
committerMikko Rasa <tdb@tdb.fi>
Mon, 28 Feb 2011 15:18:18 +0000 (15:18 +0000)
source/button.cpp
source/dropdown.cpp
source/dropdown.h
source/image.cpp
source/label.cpp
source/list.cpp
source/toggle.cpp
source/widget.cpp
source/widget.h

index 5095379364b5c7a883d1d4fe615ec4d90655444a..da2c433b9d24cfc2fb3110c2e567ec6950262470 100644 (file)
@@ -51,6 +51,7 @@ void Button::autosize()
 void Button::set_text(const std::string &t)
 {
        text = t;
+       signal_autosize_changed.emit();
 }
 
 void Button::set_icon(const GL::Texture2D *i)
index 801c8a6428cfe81de6b1d82ac5f86154f4d1e3d0..cff5387408a2b7551d308f014fcf91f7e1f674c5 100644 (file)
@@ -24,6 +24,7 @@ Dropdown::Dropdown():
 {
        add(list);
        list.signal_item_selected.connect(sigc::mem_fun(this, &Dropdown::list_item_selected));
+       list.signal_autosize_changed.connect(sigc::mem_fun(this, &Dropdown::list_autosize_changed));
 }
 
 void Dropdown::autosize()
@@ -47,25 +48,21 @@ void Dropdown::autosize()
 void Dropdown::append(const string &item)
 {
        list.append(item);
-       resize_list();
 }
 
 void Dropdown::insert(unsigned i, const string &v)
 {
        list.insert(i, v);
-       resize_list();
 }
 
 void Dropdown::remove(unsigned i)
 {
        list.remove(i);
-       resize_list();
 }
 
 void Dropdown::clear()
 {
        list.clear();
-       resize_list();
 }
 
 unsigned Dropdown::get_n_items() const
@@ -129,6 +126,12 @@ void Dropdown::on_style_change()
        resize_list();
 }
 
+void Dropdown::list_autosize_changed()
+{
+       resize_list();
+       signal_autosize_changed.emit();
+}
+
 void Dropdown::resize_list()
 {
        list.autosize_all();
index 598ad8035bf35459471487b557e693b6261e39a2..7cacf2205a496f389a4b7c869505b484eab90e7b 100644 (file)
@@ -60,6 +60,7 @@ private:
        virtual void on_geometry_change();
        virtual void on_style_change();
 
+       void list_autosize_changed();
        void resize_list();
        void list_item_selected(unsigned, const std::string &);
 };
index eb3bd6ef4da556337e712c14b81fa4fa656b6559..3c0cfa53465a6f1befc6044c07a98652ed8a15bf 100644 (file)
@@ -50,6 +50,7 @@ void Image::autosize()
 void Image::set_image(const GL::Texture2D *i)
 {
        image = i;
+       signal_autosize_changed.emit();
 }
 
 void Image::set_keep_aspect(bool ka)
index 30ccd62d16859a6555e95eb2bd7d3180e58c0fc5..e1015e8dc1f10fdb075d5295e783ccf8bfd19d69 100644 (file)
@@ -38,6 +38,7 @@ void Label::autosize()
 void Label::set_text(const string &t)
 {
        text = t;
+       signal_autosize_changed.emit();
 }
 
 void Label::render_special(const Part &part) const
index ea3969ce16dbb466591a642bdcff01c1e1150ed5..f7cc4d73a2e94f6d503aab13cad5447b39838b1e 100644 (file)
@@ -91,6 +91,7 @@ void List::append(const string &v)
 {
        items.push_back(v);
        check_view_range();
+       signal_autosize_changed.emit();
 }
 
 void List::insert(unsigned i, const string &v)
@@ -100,6 +101,7 @@ void List::insert(unsigned i, const string &v)
 
        items.insert(items.begin()+i, v);
        check_view_range();
+       signal_autosize_changed.emit();
 }
 
 void List::remove(unsigned i)
@@ -114,6 +116,7 @@ void List::remove(unsigned i)
                sel_index = -1;
 
        check_view_range();
+       signal_autosize_changed.emit();
 }
 
 void List::clear()
@@ -122,6 +125,7 @@ void List::clear()
        sel_index = -1;
 
        check_view_range();
+       signal_autosize_changed.emit();
 }
 
 void List::set_selected_index(int i)
index 753257c775ce86fc81bd973898672e4783f86196..41e38cba93d393b8af4d650997ae9c8987b2b483 100644 (file)
@@ -42,6 +42,7 @@ void Toggle::autosize()
 void Toggle::set_text(const string &t)
 {
        text = t;
+       signal_autosize_changed.emit();
 }
 
 void Toggle::set_exclusive(bool e)
index 4e0c4890aa55eaeebe78a9fd0cc393acd6c05723..17bc4e3c95c96a6aed1f3e5eb14129b6951fdd72 100644 (file)
@@ -102,6 +102,7 @@ void Widget::update_style()
        }
 
        on_style_change();
+       signal_autosize_changed.emit();
 }
 
 void Widget::set_tooltip(const string &t)
index 5522ba340e60a580e21497feeba50daee03cd632..3653970a2f470e4a03ad6ff66af225802eafeb93 100644 (file)
@@ -41,6 +41,7 @@ public:
        };
 
        sigc::signal<void, bool> signal_visibility_changed;
+       sigc::signal<void> signal_autosize_changed;
        sigc::signal<void> signal_request_focus;
        sigc::signal<void> signal_grab_pointer;
        sigc::signal<void> signal_ungrab_pointer;