/*
 * This Program is demonstrating a problem when redrawing widgets
 * that were packed into TextView.
 *
 */

#include <gtkmm.h>
#include <iostream>

using namespace std;


class ExampleWindow: public Gtk::Window
{
    public:
	ExampleWindow ();

    private:
        void on_button_clicked ();


	Gtk::TextView m_text;
        Gtk::Button m_button;
};

ExampleWindow::ExampleWindow ()
: m_button("Click me: old text")
    {
	add (m_text);

	m_button.signal_clicked ().connect
	    (SigC::slot (*this, &ExampleWindow::on_button_clicked));

        //Add the button inside the TextView:
	Glib::RefPtr < Gtk::TextBuffer > refBuffer = m_text.get_buffer ( );

	Gtk::TextIter iter = refBuffer->end ();
	Glib::RefPtr < Gtk::TextChildAnchor > refAnchor =
	    refBuffer->create_child_anchor ( iter );

	m_text.add_child_at_anchor ( m_button, refAnchor );
	m_button.show ();

       show_all_children ();
    }

void ExampleWindow::on_button_clicked ()
    {
        m_button.set_label("Click me: new text");
    }


int main (int argc, char *argv[])
{
    Gtk::Main kit (&argc, &argv);
    ExampleWindow app;
    kit.run (app);
    return 0;
}

