85 lines
1.5 KiB
C++
85 lines
1.5 KiB
C++
|
#include <gtkmm.h>
|
||
|
#include <iostream>
|
||
|
|
||
|
void on_destroyed_ComboBoxderived(GtkWidget*, gpointer)
|
||
|
{
|
||
|
std::cout << "on_destroyed_ComboBoxderived" << std::endl;
|
||
|
}
|
||
|
|
||
|
void on_destroyed_menuderived(GtkWidget*, gpointer)
|
||
|
{
|
||
|
std::cout << "on_destroyed_menuderived" << std::endl;
|
||
|
}
|
||
|
|
||
|
//Previously, this derived from a Gtk::ComboBox,
|
||
|
//and that might have been necessary to trigger the bug at the time,
|
||
|
//but ComboBox is now deprecated.
|
||
|
class ComboBoxTextDerived : public Gtk::ComboBoxText
|
||
|
{
|
||
|
public:
|
||
|
ComboBoxTextDerived()
|
||
|
{
|
||
|
g_signal_connect (gobj(), "destroy",
|
||
|
G_CALLBACK (on_destroyed_ComboBoxderived), NULL);
|
||
|
}
|
||
|
|
||
|
~ComboBoxTextDerived()
|
||
|
{
|
||
|
//remove_menu();
|
||
|
std::cout << "~ComboBoxTextDerived()" << std::endl;
|
||
|
}
|
||
|
};
|
||
|
|
||
|
class MenuDerived : public Gtk::Menu
|
||
|
{
|
||
|
public:
|
||
|
MenuDerived()
|
||
|
{
|
||
|
g_signal_connect (gobj(), "destroy",
|
||
|
G_CALLBACK (on_destroyed_menuderived), NULL);
|
||
|
}
|
||
|
|
||
|
~MenuDerived()
|
||
|
{
|
||
|
std::cout << "~MenuDerived() 1" << std::endl;
|
||
|
|
||
|
std::cout << "~MenuDerived() 2" << std::endl;
|
||
|
|
||
|
}
|
||
|
};
|
||
|
|
||
|
class test_window : public Gtk::Window
|
||
|
{
|
||
|
public:
|
||
|
test_window();
|
||
|
~test_window()
|
||
|
{
|
||
|
std::cout << "~test_window()1" << std::endl;
|
||
|
|
||
|
}
|
||
|
|
||
|
protected:
|
||
|
|
||
|
//Gtk::MenuItem m_MenuItem;
|
||
|
MenuDerived m_Menu;
|
||
|
ComboBoxTextDerived m_ComboBox;
|
||
|
};
|
||
|
|
||
|
test_window::test_window()
|
||
|
//: m_MenuItem("One")
|
||
|
{
|
||
|
// m_Menu.append(m_MenuItem);
|
||
|
//m_ComboBox.set_menu(m_Menu);
|
||
|
add(m_ComboBox);
|
||
|
//show_all();
|
||
|
}
|
||
|
|
||
|
int main(int argc, char *argv[])
|
||
|
{
|
||
|
Gtk::Main main_runner(argc, argv);
|
||
|
test_window foo;
|
||
|
Gtk::Main::run(foo);
|
||
|
|
||
|
return(0);
|
||
|
}
|