I seem to be having some issues getting the configure-event handler to
fire.  If I connect a regular GTK+ signal handler, it works fine, and
if I derive from the Window class and implement the virtual
on_configure_event() function, it also works fine.  But it doesn't
work if I use the normal connect() method.  Interestingly, it works if
I use connect_notify(), however.    Can anybody explain this?  Is it a
bug?  user error?  or is this expected behavior?

example follows:
---------------------------
#include <iostream>
#include <gtkmm.h>

bool
on_c_configure(GdkEventConfigure* event, void* data)
{
    std::cout << "GTK+ handler -- this works" << std::endl;
    return true;
}

bool
on_configure(GdkEventConfigure* event)
{
    std::cout << "gtkmm handler connect() -- ***this doesnt work***"
<< std::endl;
    return true;
}

void
on_configure_notify(GdkEventConfigure* event)
{
    std::cout << "gtkmm handler connect_notify() -- this works" << std::endl;
}

class ConfigureWindow : public Gtk::Window
{
    public:
        ConfigureWindow() : Gtk::Window() {}
        virtual bool on_configure_event(GdkEventConfigure* event)
        {
            std::cout << "virtual gtkmm handler -- this works" << std::endl;
            return true;
        }
};

int
main(int argc, char** argv)
{
    Gtk::Main app(argc, argv);
    Gtk::Window win;
    win.signal_configure_event().connect(sigc::ptr_fun(&on_configure));
    
win.signal_configure_event().connect_notify(sigc::ptr_fun(&on_configure_notify));
    g_signal_connect(win.gobj(), "configure-event",
G_CALLBACK(on_c_configure), NULL);
    app.run(win);
    /* or:
    ConfigureWindow win2;
    app.run(win2);
    */
    return 0;
}



-- 
jonner
_______________________________________________
gtkmm-list mailing list
gtkmm-list@gnome.org
http://mail.gnome.org/mailman/listinfo/gtkmm-list

Reply via email to